o
    8e!                     @  s  d dl mZ d dlZd dlZd dlZddlmZmZmZm	Z	 ddl
mZ ejdOd
dZdPddZdQddZdQddZdQddZdRddZdRddZdQddZeddeddSd d!ZdQd"d#ZG d$d% d%ZdQd&d'Zed(d)ddd*dSd+d,ZdQd-d.ZdTd0d1Zed2ed3dd4ZdQd5d6ZG d7d8 d8ZdQd9d:Zed;dd<ddRd=d>Z ed;dd<ddRd?d@Z!ed;ddddRdAdBZ"ed;ddddRdCdDZ#dRdEdFZ$dQdGdHZ%dRdIdJZ&dRdKdLZ'dRdMdNZ(dS )U    )annotationsN   )TrioDeprecationWarning
deprecateddeprecated_aliaswarn_deprecated   )module_with_deprecationsrecwarnpytest.WarningsRecorderreturnc                 C  s   t d t dt | S )Nalwaysignore)warningssimplefilterResourceWarning)r
    r   >usr/lib/python3.10/site-packages/trio/_tests/test_deprecate.pyrecwarn_always   s   
r   tuple[str, int]c                  C  s:   t  } | d us
J | jd usJ t | j}|j|jfS N)inspectcurrentframef_backgetframeinfofilenamelineno)frameinfor   r   r   _here   s
   r   Nonec                 C  s   ddd}|  t  \}}t| dksJ | t}t|jts"J d|jjd v s,J d|jjd v s6J d	|jjd v s@J d
|jjd v sJJ |j|ksQJ |j	|d ksZJ d S )Nr   r    c                   S  s   t ddddd d S )NZice1.2r   waterissueinsteadr   r   r   r   r   deprecated_thing#   s   z.test_warn_deprecated.<locals>.deprecated_thingr   zice is deprecatedr   zTrio 1.2zwater instead	/issues/1r   r    )
r   lenpopr   
isinstancemessageWarningargsr   r   )r   r'   r   r   gotr   r   r   test_warn_deprecated"   s   


r1   c                 C  sz   t ddd d d t| dksJ | t}t|jtsJ d|jjd v s'J d|jjd v s1J d|jjd v s;J d S )	Nr"   1.3r#   r   zwater is deprecatedr   zno replacementzTrio 1.3)r   r*   r+   r   r,   r-   r.   r/   r   r0   r   r   r   (test_warn_deprecated_no_instead_or_issue3   s   
r4   c                   sV   d fdd}ddd t  \}}|  | t}|j|ks J |j|d ks)J d S )	Nr   r    c                     s
      d S r   r   r   nested2r   r   nested1A   s   
z0test_warn_deprecated_stacklevel.<locals>.nested1c                   S  s   t dddddd d S )Nxr2      y   )r$   r%   
stacklevelr&   r   r   r   r   r6   D   s   z0test_warn_deprecated_stacklevel.<locals>.nested2r   r)   )r   r+   r   r   r   )r   r7   r   r   r0   r   r5   r   test_warn_deprecated_stacklevel@   s   


r=   c                   C     d S r   r   r   r   r   r   oldN      r?   c                   C  r>   r   r   r   r   r   r   newR   r@   rA   c                 C  sV   t tddtd | t}t|jtsJ d|jjd v sJ d|jjd v s)J d S )N1.0r   r#   z test_deprecate.old is deprecatedr   ztest_deprecate.new instead)	r   r?   rA   r+   r   r,   r-   r.   r/   r3   r   r   r   test_warn_deprecated_formattingV   s
   
rC   1.5{   r#   intc                   C     dS )Nr;   r   r   r   r   r   deprecated_old^      rH   c                 C  s|   t  dksJ | t}t|jtsJ d|jjd v sJ d|jjd v s(J d|jjd v s2J d|jjd v s<J d S )Nr;   z+test_deprecate.deprecated_old is deprecatedr   rD   ztest_deprecate.newz
issues/123)rH   r+   r   r,   r-   r.   r/   r3   r   r   r   test_deprecated_decoratorc   s   
rJ   c                   @  s$   e Zd Zeddddd
ddZd	S )FoorB   rE   Zcryingr#   r   rF   c                 C  rG   )Nr9   r   selfr   r   r   methodn   rI   z
Foo.methodNr   rF   )__name__
__module____qualname__r   rN   r   r   r   r   rK   m   s    rK   c                 C  sH   t  }| dksJ | t}t|jtsJ d|jjd v s"J d S )Nr9   z'test_deprecate.Foo.method is deprecatedr   )rK   rN   r+   r   r,   r-   r.   r/   )r   fr0   r   r   r    test_deprecated_decorator_methods   s
   
rT   r!   z	the thing)thingr$   r%   c                   C  rG   )NH   r   r   r   r   r   deprecated_with_thing{   rI   rW   c                 C  s@   t  dksJ | t}t|jtsJ d|jjd v sJ d S )NrV   zthe thing is deprecatedr   )rW   r+   r   r,   r-   r.   r/   r3   r   r   r   -test_deprecated_decorator_with_explicit_thing   s   
rX   strc                   C  rG   )Nnew hotnessr   r   r   r   r   new_hotness   r@   r[   old_hotness1.23r$   c                 C  s   t  dksJ | t}t|jtsJ d|jjd v sJ d|jjd v s(J d|jjd v s2J d|jjd v s<J tt jtsDJ dt jv sKJ dt jv sRJ dt jv sYJ d S )	NrZ   z(test_deprecate.old_hotness is deprecatedr   r]   z"test_deprecate.new_hotness insteadzissues/1z.. deprecated:: 1.23zissues/1>`__)	r\   r+   r   r,   r-   r.   r/   __doc__rY   r3   r   r   r   test_deprecated_alias   s   
r`   c                   @  s&   e Zd Zd
ddZededddZd	S )Aliasr   rY   c                 C  rG   )Nnew hotness methodr   rL   r   r   r   new_hotness_method   r@   zAlias.new_hotness_methodzAlias.old_hotness_methodz3.21r   r^   Nr   rY   )rP   rQ   rR   rc   r   old_hotness_methodr   r   r   r   ra      s
    

ra   c                 C  sX   t  }| dksJ | t}t|jtsJ |jjd }d|v s$J d|v s*J d S )Nrb   r   z5test_deprecate.Alias.old_hotness_method is deprecatedz/test_deprecate.Alias.new_hotness_method instead)ra   re   r+   r   r,   r-   r.   r/   )r   objr0   msgr   r   r   test_deprecated_alias_method   s   
rh   z2.1hic                   C  rG   zHello!Nr   r   r   r   r   docstring_test1       rk   c                   C  rG   rj   r   r   r   r   r   docstring_test2   rl   rm   c                   C  rG   rj   r   r   r   r   r   docstring_test3   rl   rn   c                   C  rG   rj   r   r   r   r   r   docstring_test4   rl   ro   c                   C  s<   t jdksJ tjdksJ tjdksJ tjdksJ d S )NzHello!

.. deprecated:: 2.1
   Use hi instead.
   For details, see `issue #1 <https://github.com/python-trio/trio/issues/1>`__.

z0Hello!

.. deprecated:: 2.1
   Use hi instead.

znHello!

.. deprecated:: 2.1
   For details, see `issue #1 <https://github.com/python-trio/trio/issues/1>`__.

zHello!

.. deprecated:: 2.1

)rk   r_   rm   rn   ro   r   r   r   r   !test_deprecated_docstring_munging   s   

rp   c                 C  s2  t jdksJ t| dksJ t \}}t jdksJ | t}t|jt	s(J |j
|ks/J |j|d ks8J d|jjd v sBJ d|jjd v sLJ d|jjd v sVJ d|jjd v s`J t jd	ksgJ | t}t|jt	stJ d
|jjd v s~J tt t j W d    d S 1 sw   Y  d S )Nri   r   Zvalue1r   zmodule_with_deprecations.dep1zTrio 1.1r(   zvalue1 insteadZvalue2zinstead-string instead)r	   Zregularr*   r   Zdep1r+   r   r,   r-   r.   r   r   r/   Zdep2pytestraisesAttributeErrorZasdf)r   r   r   r0   r   r   r   test_module_with_deprecations   s&   


"rt   c                  C  sp   t t ddlm}  W d    n1 sw   Y  t t | js&J W d    d S 1 s1w   Y  d S )Nr   tests)rq   warnsr   triorv   test_abcru   r   r   r   test_tests_is_deprecated1	  s   "rz   c                  C  sn   t t dd l} W d    n1 sw   Y  t t | jjs%J W d    d S 1 s0w   Y  d S Nr   )rq   rw   r   Z
trio.testsrv   Ztest_deprecaterx   r   r   r   test_tests_is_deprecated2  s   
"r}   c                  C  sN   dd l } | js	J tt | jjsJ W d    d S 1 s w   Y  d S r{   )rx   rv   rq   rw   r   ry   r|   r   r   r   test_tests_is_deprecated3  s
   
"r~   )r
   r   r   r   )r   r   )r   r   r   r    r)   rO   rd   ))
__future__r   r   r   rq   Z
_deprecater   r   r   r    r	   Zfixturer   r   r1   r4   r=   r?   rA   rC   rH   rJ   rK   rT   rW   rX   r[   r\   r`   ra   rh   rk   rm   rn   ro   rp   rt   rz   r}   r~   r   r   r   r   <module>   sR    











	

	


*

		