
    g                       d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlZe	rd dlmZ d dlmZ  ed      Z ed	      Z G d
 de      ZddZddZddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddd	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZ ej4                  d       G d d             Z G d de      Zd dZy)!    )annotationsN)wraps)
ModuleType)TYPE_CHECKINGClassVarTypeVar)Callable)	ParamSpecArgsTRetTc                      e Zd ZdZy)TrioDeprecationWarninga  Warning emitted if you use deprecated Trio functionality.

    As a young project, Trio is currently quite aggressive about deprecating
    and/or removing functionality that we realize was a bad idea. If you use
    Trio, you should subscribe to `issue #1
    <https://github.com/python-trio/trio/issues/1>`__ to get information about
    upcoming deprecations and other backwards compatibility breaking changes.

    Despite the name, this class currently inherits from
    :class:`FutureWarning`, not :class:`DeprecationWarning`, because while
    we're in young-and-aggressive mode we want these warnings to be visible by
    default. You can hide them by installing a filter or with the ``-W``
    switch: see the :mod:`warnings` documentation for details.

    N)__name__
__module____qualname____doc__     B/var/www/html/venv/lib/python3.12/site-packages/trio/_deprecate.pyr   r      s    r   r   c                    d|  S )Nz+https://github.com/python-trio/trio/issues/r   )issues    r   _url_for_issuer   ,   s    8@@r   c                ~    t        | d      r't        | d      r| j                   d| j                   S t        |       S )Nr   r   .)hasattrr   r   str)things    r   
_stringifyr   0   s>    ul#~(F""#1U%7%7$899u:r      F)
stackleveluse_triodeprecationwarningc                   |dz  }t        |        d| }||dz  }n|dt        |       dz  }||dt        |       dz  }|rt        }nt        }t	        j
                   ||      |       y )	N   z is deprecated since Trio z with no replacementz; use z insteadz ())r    )r   r   r   DeprecationWarningwarningswarn)r   versionr   insteadr    r!   msgwarning_classs           r   warn_deprecatedr,   6   s     !OJ9'
CC%%
7+,H55N5)*!,,!'=*MM-$<r   )r   r!   c               $     d fd}|S )Nc                    t               d
 fd       }||j                  a|j                  }|j                         }|dz  }|d dz  }|dt               dz  }|d dt	               d	z  }|dz  }||_        |S )Nc                 4    t                | i |S )N)r)   r   r!   )r,   )argskwargsfnr)   r   r   r!   r(   s     r   wrapperz,deprecated.<locals>.do_wrap.<locals>.wrapper[   s,    +E t&v&&r   z

z.. deprecated:: 
z   Use z
 instead.
z   For details, see `issue #z <z>`__.
r0   z
ArgsT.argsr1   zArgsT.kwargsreturnr   )r   r   rstripr   r   )r2   r3   docr)   r   r   r!   r(   s   `  r   do_wrapzdeprecated.<locals>.do_wrapX   s     
r	' 	' 
	' =E??&//C**,C6MC%gYb11C"G!4 5[AA 5eWB~e?T>UU\]]4KC!GOr   )r2   Callable[ArgsT, RetT]r6   r:   r   )r(   r   r   r)   r!   r9   s   ````` r   
deprecatedr;   P   s       D Nr   c                   t        ||      t        d      dfd              }| |_        | j                  d      d   |_        |S )Nr   r)   )r   __annotations__)assignedc                      | i |S )zDeprecated alias.r   )r0   r1   new_fns     r   r3   z!deprecated_alias.<locals>.wrapper   s     t&v&&r   r   r5   )r;   r   r   
rpartitionr   )old_qualnamerA   r(   r   r3   s    `   r   deprecated_aliasrE   }   sW     uf5
6=>' ? 6' (G#..s3B7GNr   )slotsc                  R    e Zd ZU  e       Zded<   ded<   ded<   ded<   eZded	<   y
)DeprecatedAttributezClassVar[object]_not_setobjectvaluer   r(   
int | Noner   r)   N)r   r   r   rJ   rI   r>   r)   r   r   r   rH   rH      s)    !'H)MLGVr   rH   c                       e Zd ZU ded<   ddZy)_ModuleWithDeprecationszdict[str, DeprecatedAttribute]__deprecated_attributes__c                ^   || j                   v ry| j                   |   }|j                  }|t        j                  u r|j                  }| j
                   d| }t        ||j                  |j                  |       |j                  S d}t        |j                  | j
                  |            )Nr   r=   z!module '{}' has no attribute '{}')rO   r)   rH   rI   rK   r   r,   r(   r   AttributeErrorformat)selfnameinfor)   r   r*   s         r   __getattr__z#_ModuleWithDeprecations.__getattr__   s    411111$7DllG-666**}}oQtf-EE4<<tzz7S::1SZZt<==r   N)rT   r   r6   rJ   )r   r   r   r>   rV   r   r   r   rN   rN      s    ==>r   rN   c                r    t         j                  |    }t        |_        t	        |t              sJ i |_        y )N)sysmodulesrN   	__class__
isinstancerO   )module_namemodules     r   enable_attribute_deprecationsr^      s3    [[%F.Ff5666 (*F$r   )r   intr6   r   )r   rJ   r6   r   )r   rJ   r(   r   r   rL   r)   rJ   r    r_   r!   boolr6   None)r(   r   r   rJ   r   rL   r)   rJ   r!   r`   r6   z8Callable[[Callable[ArgsT, RetT]], Callable[ArgsT, RetT]])
rD   r   rA   r:   r(   r   r   rL   r6   r:   )r\   r   r6   ra   )
__future__r   rX   r&   	functoolsr   typesr   typingr   r   r   attrscollections.abcr	   typing_extensionsr
   r   r   FutureWarningr   r   r   r,   r;   rE   frozenrH   rN   r^   r   r   r   <module>rk      sQ   " 
    3 3 (+gEv] $A ',=== 	=
 = = !%= 
=:  (-** * 	*
 * !%* >*Z! 
  $ E  >j >"*r   