
    #)f                    t   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Z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__     L/var/www/html/flask-app/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      
stacklevelc                   |dz  }t        |        d| }||dz  }n|dt        |       dz  }||dt        |       dz  }t        j                  t	        |      |       y )	N   z is deprecated since Trio z with no replacementz; use z insteadz ()r!   )r   r   warningswarnr   )r   versionr   insteadr"   msgs         r   warn_deprecatedr+   6   s     !OJ9'
CC%%
7+,H55N5)*!,,MM(-*Er   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                 2    t                | i |S )N)r)   r   )r+   )argskwargsfnr)   r   r   r(   s     r   wrapperz,deprecated.<locals>.do_wrap.<locals>.wrapperQ   s!    E7G5It&v&&r   z

z.. deprecated:: 
z   Use z
 instead.
z   For details, see `issue #z <z>`__.
r/   z
ArgsT.argsr0   zArgsT.kwargsreturnr   )r   r   rstripr   r   )r1   r2   docr)   r   r   r(   s   `  r   do_wrapzdeprecated.<locals>.do_wrapN   s     
r	' 	' 
	' =E??&//C**,C6MC%gYb11C"G!4 5[AA 5eWB~e?T>UU\]]4KC!GOr   )r1   Callable[ArgsT, RetT]r5   r9   r   )r(   r   r   r)   r8   s   ```` r   
deprecatedr:   K   s     8 Nr   c                   t        ||      t        d      dfd              }| |_        | j                  d      d   |_        |S )Nr   r)   )r   __annotations__)assignedc                      | i |S )zDeprecated alias.r   )r/   r0   new_fns     r   r2   z!deprecated_alias.<locals>.wrappert   s     t&v&&r   r   r4   )r:   r   r   
rpartitionr   )old_qualnamer@   r(   r   r2   s    `   r   deprecated_aliasrD   m   sW     uf5
6=>' ? 6' (G#..s3B7GNr   F)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   rI   rH   r=   r)   r   r   r   rG   rG      s)    !'H)MLGVr   rG   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 '{}')rN   r)   rG   rH   rJ   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)rS   r   r5   rI   )r   r   r   r=   rU   r   r   r   rM   rM      s    ==>r   rM   c                r    t         j                  |    }t        |_        t	        |t              sJ i |_        y )N)sysmodulesrM   	__class__
isinstancerN   )module_namemodules     r   enable_attribute_deprecationsr]      s0    [[%F.Ff566 (*F$r   )r   intr5   r   )r   rI   r5   r   )r   rI   r(   r   r   rK   r)   rI   r"   r^   r5   None)
r(   r   r   rI   r   rK   r)   rI   r5   z8Callable[[Callable[ArgsT, RetT]], Callable[ArgsT, RetT]])
rC   r   r@   r9   r(   r   r   rK   r5   r9   )r[   r   r5   r_   )
__future__r   rW   r&   	functoolsr   typesr   typingr   r   r   attrscollections.abcr	   typing_extensionsr
   r   r   FutureWarningr   r   r   r+   r:   rD   frozenrG   rM   r]   r   r   r   <module>ri      s4   " 
    3 3 (+gEv] $A FFF 	F
 F F 
F, &*"2<GM=D! 
  $ E  >j >"*r   