ó
    Ö›‘h­o  ã                  óð  • S r SSKJr  / SQrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJrJrJr  SS	KJqJr  SS
KJrJr  SSKJr  \" S5      r\" S5      rSrS rS\l        S\l         S\l!        S r"S+S jr#S,S jr$S,S jr%S r& S+     S-S jjr' S+     S-S jjr(S r)S r* " S S5      r+ " S S5      r, " S S 5      r-S! r.S" r/S# r0S$ r1S% r2S& r3\" S'\S(\4   S)9r4 S+       S.S* jjr5g)/aÄ  
Deprecation framework for Twisted.

To mark a method, function, or class as being deprecated do this::

    from incremental import Version
    from twisted.python.deprecate import deprecated

    @deprecated(Version("Twisted", 22, 10, 0))
    def badAPI(self, first, second):
        '''
        Docstring for badAPI.
        '''
        ...

    @deprecated(Version("Twisted", 22, 10, 0))
    class BadClass:
        '''
        Docstring for BadClass.
        '''

The newly-decorated badAPI will issue a warning when called, and BadClass will
issue a warning when instantiated. Both will also have  a deprecation notice
appended to their docstring.

To deprecate properties you can use::

    from incremental import Version
    from twisted.python.deprecate import deprecatedProperty

    class OtherwiseUndeprecatedClass:

        @deprecatedProperty(Version("Twisted", 22, 10, 0))
        def badProperty(self):
            '''
            Docstring for badProperty.
            '''

        @badProperty.setter
        def badProperty(self, value):
            '''
            Setter sill also raise the deprecation warning.
            '''


While it's best to avoid this as it adds performance overhead to *any* usage of
the module, to mark module-level attributes as being deprecated you can use::

    badAttribute = "someValue"

    ...

    deprecatedModuleAttribute(
        Version("Twisted", 22, 10, 0),
        "Use goodAttribute instead.",
        "your.full.module.name",
        "badAttribute")

The deprecated attributes will issue a warning whenever they are accessed. If
the attributes being deprecated are in the same module as the
L{deprecatedModuleAttribute} call is being made from, the C{__name__} global
can be used as the C{moduleName} parameter.


To mark an optional, keyword parameter of a function or method as deprecated
without deprecating the function itself, you can use::

    @deprecatedKeywordParameter(Version("Twisted", 22, 10, 0), "baz")
    def someFunction(foo, bar=0, baz=None):
        ...

See also L{incremental.Version}.

@type DEPRECATION_WARNING_FORMAT: C{str}
@var DEPRECATION_WARNING_FORMAT: The default deprecation warning string format
    to use when one is not provided by the user.
é    )Úannotations)Ú
deprecatedÚdeprecatedPropertyÚgetDeprecationWarningStringÚgetWarningMethodÚsetWarningMethodÚdeprecatedModuleAttributeÚdeprecatedKeywordParameterN)Úfindlinestarts©Úwraps)Ú
ModuleType)ÚAnyÚCallableÚDictÚOptionalÚTypeVarÚcast)ÚwarnÚwarn_explicit)ÚVersionÚgetVersionString)Ú	ParamSpecÚ_PÚ_Rz&%(fqpn)s was deprecated in %(version)sc                óV  •  U R                   n[        R                  " U 5      (       d  [        R
                  " U 5      (       a  U R                  nU SU 3$ [        R                  " U 5      (       a  U R                   SU R                    3$ U$ ! [         a    U R                  n N™f = f)z¨
Return the fully qualified name of a module, class, method or function.
Classes and functions need to be module level ones to be correctly
qualified.

@rtype: C{str}.
Ú.)Ú__qualname__ÚAttributeErrorÚ__name__ÚinspectÚisclassÚ
isfunctionÚ
__module__Úismethod)ÚobjÚnameÚ
moduleNames      Ú\C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/python/deprecate.pyÚ_fullyQualifiedNamer*   t   sš   € ðØ×Ñˆô ‡‚�s×Ñœw×1Ò1°#×6Ñ6Ø—^‘^ˆ
Ø�˜Q˜t˜fÐ%Ð%Ü	×	Ò	˜#×	Ñ	Ø—.‘.Ð!  3×#3Ñ#3Ð"4Ð5Ð5Ø€Køô ó Ø�|‰|Šðús   ‚B ÂB(Â'B(ztwisted.python.reflectÚfullyQualifiedNamec                óD   • [        U 5      (       a  [        U 5      n SU  S3$ )zò
Surround a replacement for a deprecated API with some polite text exhorting
the user to consider it as an alternative.

@type replacement: C{str} or callable

@return: a string like "please use twisted.python.modules.getModule
    instead".
zplease use z instead)Úcallabler*   ©Úreplacements    r)   Ú_getReplacementStringr0   �   s(   € ô �×ÑÜ)¨+Ó6ˆØ˜˜ XÐ.Ð.ó    c                óV   • S[        U 5       3nU(       a  U S[        U5       3nUS-   $ )ax  
Generate an addition to a deprecated object's docstring that explains its
deprecation.

@param version: the version it was deprecated.
@type version: L{incremental.Version}

@param replacement: The replacement, if specified.
@type replacement: C{str} or callable

@return: a string like "Deprecated in Twisted 27.2.0; please use
    twisted.timestream.tachyon.flux instead."
zDeprecated in ú; r   )r   r0   )Úversionr/   Údocs      r)   Ú_getDeprecationDocstringr6   ž   s;   € ð Ô+¨GÓ4Ð5Ð
6€CÞØ��RÔ-¨kÓ:Ð;Ð<ˆØ�‰9Ðr1   c                ó|   • Uc  [         nX [        U5      S.-  nU(       a  SR                  U[        U5      5      nU$ )a  
Return a string indicating that the Python name was deprecated in the given
version.

@param fqpn: Fully qualified Python name of the thing being deprecated
@type fqpn: C{str}

@param version: Version that C{fqpn} was deprecated in.
@type version: L{incremental.Version}

@param format: A user-provided format to interpolate warning values into, or
    L{DEPRECATION_WARNING_FORMAT
    <twisted.python.deprecate.DEPRECATION_WARNING_FORMAT>} if L{None} is
    given.
@type format: C{str}

@param replacement: what should be used in place of C{fqpn}. Either pass in
    a string, which will be inserted into the warning message, or a
    callable, which will be expanded to its full import path.
@type replacement: C{str} or callable

@return: A textual description of the deprecation
@rtype: C{str}
)Úfqpnr4   z{}; {})ÚDEPRECATION_WARNING_FORMATr   Úformatr0   )r8   r4   r:   r/   ÚwarningStrings        r)   Ú_getDeprecationWarningStringr<   ²   sE   € ð2 �~Ü+ˆØÔ7GÈÓ7PÑQÑQ€MÞØ Ÿ™ØÔ0°Ó=ó
ˆð Ðr1   c                ó.   • [        [        U 5      XU5      $ )a#  
Return a string indicating that the callable was deprecated in the given
version.

@type callableThing: C{callable}
@param callableThing: Callable object to be deprecated

@type version: L{incremental.Version}
@param version: Version that C{callableThing} was deprecated in.

@type format: C{str}
@param format: A user-provided format to interpolate warning values into,
    or L{DEPRECATION_WARNING_FORMAT
    <twisted.python.deprecate.DEPRECATION_WARNING_FORMAT>} if L{None} is
    given

@param replacement: what should be used in place of the callable. Either
    pass in a string, which will be inserted into the warning message,
    or a callable, which will be expanded to its full import path.
@type replacement: C{str} or callable

@return: A string describing the deprecation.
@rtype: C{str}
)r<   r*   )ÚcallableThingr4   r:   r/   s       r)   r   r   Õ   s   € ô2 (Ü˜MÓ*¨G¸[óð r1   c                óä  • U R                   (       a  U R                   R                  5       nO/ n[        U5      S:X  a  UR                  U5        O†[        U5      S:X  a  UR	                  SUS/5        ObUS   nSnUR                  5       (       d  UR                  5       nUR	                  SXA-   U/5        U Vs/ s H  oUR                  S5      PM     nnSR                  U5      U l         gs  snf )a^  
Append the given text to the docstring of C{thingWithDoc}.

If C{thingWithDoc} has no docstring, then the text just replaces the
docstring. If it has a single-line docstring then it appends a blank line
and the message text. If it has a multi-line docstring, then in appends a
blank line a the message text, and also does the indentation correctly.
r   é   Ú éÿÿÿÿÚ Ú
N)	Ú__doc__Ú
splitlinesÚlenÚappendÚextendÚstripÚpopÚlstripÚjoin)ÚthingWithDocÚtextToAppendÚdocstringLinesÚtrailerÚspacesÚls         r)   Ú_appendToDocstringrT   ó   sÔ   € ð ××Ø%×-Ñ-×8Ñ8Ó:‰àˆä
ˆ>Ó˜aÓØ×Ñ˜lÕ+Ü	ˆ^Ó	 Ó	!Ø×Ñ˜r <°Ð4Õ5à  Ñ$ˆØˆØ�}‰}�‰à#×'Ñ'Ó)ˆFØ×Ñ˜r 6Ñ#8¸&ÐAÔBÙ1?Ó@²¨AŸ(™( 3ž-±ˆÐ@ØŸ9™9 ^Ó4€LÕùò As   Â:C-c                ó   ^ ^• SUU 4S jjnU$ )ag  
Return a decorator that marks callables as deprecated. To deprecate a
property, see L{deprecatedProperty}.

@type version: L{incremental.Version}
@param version: The version in which the callable will be marked as
    having been deprecated.  The decorated function will be annotated
    with this version, having it set as its C{deprecatedVersion}
    attribute.

@param replacement: what should be used in place of the callable. Either
    pass in a string, which will be inserted into the warning message,
    or a callable, which will be expanded to its full import path.
@type replacement: C{str} or callable
c                ó�   >^ ^• [        T TST5      m[        T 5      SU U4S jj5       n[        U[        TT5      5        TUl        U$ )z1
Decorator that marks C{function} as deprecated.
Nc                 ó2   >• [        T[        SS9  T" U 0 UD6$ ©Né   ©Ú
stacklevel©r   ÚDeprecationWarning©ÚargsÚkwargsÚfunctionr;   s     €€r)   ÚdeprecatedFunctionÚDdeprecated.<locals>.deprecationDecorator.<locals>.deprecatedFunction+  ó    ø€ ä�Ô 2¸qÒAÙ˜TÐ, VÑ,Ð,r1   )r_   z_P.argsr`   z	_P.kwargsÚreturnr   )r   r   rT   r6   ÚdeprecatedVersion)ra   rb   r;   r/   r4   s   ` @€€r)   ÚdeprecationDecoratorÚ(deprecated.<locals>.deprecationDecorator#  sX   ú€ ô 4Ø�g˜t [ó
ˆô 
ˆx‹÷	-ó 
ð	-ô 	ØÔ 8¸À+Ó Nô	
ð 07ÐÔ,Ø!Ð!r1   )ra   úCallable[_P, _R]re   ri   © )r4   r/   rg   s   `` r)   r   r     s   ù€ ÷&"ð "ð&  Ðr1   c                ó:   ^ ^^•  " S S[         5      mUUU 4S jnU$ )aÕ  
Return a decorator that marks a property as deprecated. To deprecate a
regular callable or class, see L{deprecated}.

@type version: L{incremental.Version}
@param version: The version in which the callable will be marked as
    having been deprecated.  The decorated function will be annotated
    with this version, having it set as its C{deprecatedVersion}
    attribute.

@param replacement: what should be used in place of the callable.
    Either pass in a string, which will be inserted into the warning
    message, or a callable, which will be expanded to its full import
    path.
@type replacement: C{str} or callable

@return: A new property with deprecated setter and getter.
@rtype: C{property}

@since: 16.1.0
c                  ó$   • \ rS rSrSrS rS rSrg)Ú/deprecatedProperty.<locals>._DeprecatedPropertyiR  zA
Extension of the build-in property to allow deprecated setters.
c                ó4   ^ ^• [        T5      UU 4S j5       nU$ )Nc                 óF   >• [        TR                  [        SS9  T" U 0 UD6$ rX   )r   r;   r]   )r_   r`   ra   Úselfs     €€r)   rb   Ú^deprecatedProperty.<locals>._DeprecatedProperty._deprecatedWrapper.<locals>.deprecatedFunctionX  s,   ø€ äØ×&Ñ&Ü&Ø òñ
   Ð0¨Ñ0Ð0r1   r   )rp   ra   rb   s   `` r)   Ú_deprecatedWrapperÚBdeprecatedProperty.<locals>._DeprecatedProperty._deprecatedWrapperW  s!   ù€ Ü�8‹_õ1ó ð1ð &Ð%r1   c                óJ   • [         R                  X R                  U5      5      $ ©N)ÚpropertyÚsetterrr   )rp   ra   s     r)   rw   Ú6deprecatedProperty.<locals>._DeprecatedProperty.setterc  s   € Ü—?‘? 4×)@Ñ)@ÀÓ)JÓKÐKr1   rj   N)r    r$   r   Ú__firstlineno__rE   rr   rw   Ú__static_attributes__rj   r1   r)   Ú_DeprecatedPropertyrm   R  s   † ñ	ò
	&õ	Lr1   r{   c                óª   >^ ^• [        T TS T5      m[        T 5      U U4S j5       n[        U[        TT5      5        TUl        T" U5      nTUl        U$ )Nc                 ó2   >• [        T[        SS9  T" U 0 UD6$ rX   r\   r^   s     €€r)   rb   ÚLdeprecatedProperty.<locals>.deprecationDecorator.<locals>.deprecatedFunctionk  rd   r1   )r   r   rT   r6   rf   r;   )ra   rb   Úresultr;   r{   r/   r4   s   `  @€€€r)   rg   Ú0deprecatedProperty.<locals>.deprecationDecoratorf  sh   ú€ Ü3Ø�g˜t [ó
ˆô 
ˆx‹õ	-ó 
ð	-ô 	ØÔ 8¸À+Ó Nô	
ð 07ÐÔ,á$Ð%7Ó8ˆØ,ˆÔØˆr1   )rv   )r4   r/   rg   r{   s   `` @r)   r   r   9  s   ú€ ô2Lœhô L÷(ð&  Ðr1   c                 ó   • [         $ )zJ
Return the warning method currently used to record deprecation warnings.
©r   rj   r1   r)   r   r   |  s	   € ô €Kr1   c                ó   • U q g)z˜
Set the warning method to use to record deprecation warnings.

The callable should take message, category and stacklevel. The return
value is ignored.
Nr‚   )Ú	newMethods    r)   r   r   ƒ  s	   € ð �Dr1   c                  ó*   • \ rS rSrSrS rS rS rSrg)Ú_InternalStateiŽ  zÞ
An L{_InternalState} is a helper object for a L{_ModuleProxy}, so that it
can easily access its own attributes, bypassing its logic for delegating to
another object that it's proxying for.

@ivar proxy: a L{_ModuleProxy}
c                ó2   • [         R                  U SU5        g ©NÚproxy)ÚobjectÚ__setattr__)rp   r‰   s     r)   Ú__init__Ú_InternalState.__init__—  s   € Ü×Ñ˜4 ¨%Õ0r1   c                óV   • [         R                  [         R                  U S5      U5      $ rˆ   )rŠ   Ú__getattribute__)rp   r'   s     r)   r�   Ú_InternalState.__getattribute__š  s"   € Ü×&Ñ&¤v×'>Ñ'>¸tÀWÓ'MÈtÓTÐTr1   c                óV   • [         R                  [         R                  U S5      X5      $ rˆ   )rŠ   r‹   r�   )rp   r'   Úvalues      r)   r‹   Ú_InternalState.__setattr__�  s"   € Ü×!Ñ!¤&×"9Ñ"9¸$ÀÓ"HÈ$ÓVÐVr1   rj   N)	r    r$   r   ry   rE   rŒ   r�   r‹   rz   rj   r1   r)   r†   r†   Ž  s   † ñò1òUõWr1   r†   c                  ó4   • \ rS rSrSrS rS	S jrS rS rSr	g)
Ú_ModuleProxyi¡  aX  
Python module wrapper to hook module-level attribute access.

Access to deprecated attributes first checks
L{_ModuleProxy._deprecatedAttributes}, if the attribute does not appear
there then access falls through to L{_ModuleProxy._module}, the wrapped
module object.

@ivar _module: Module on which to hook attribute access.
@type _module: C{module}

@ivar _deprecatedAttributes: Mapping of attribute names to objects that
    retrieve the module attribute's original value.
@type _deprecatedAttributes: C{dict} mapping C{str} to
    L{_DeprecatedAttribute}

@ivar _lastWasPath: Heuristic guess as to whether warnings about this
    package should be ignored for the next call.  If the last attribute
    access of this module was a C{getattr} of C{__path__}, we will assume
    that it was the import system doing it and we won't emit a warning for
    the next access, even if it is to a deprecated attribute.  The CPython
    import system always tries to access C{__path__}, then the attribute
    itself, then the attribute itself again, in both successful and failed
    cases.
@type _lastWasPath: C{bool}
c                óB   • [        U 5      nXl        0 Ul        SUl        g )NF)r†   Ú_moduleÚ_deprecatedAttributesÚ_lastWasPath)rp   ÚmoduleÚstates      r)   rŒ   Ú_ModuleProxy.__init__½  s!   € Ü˜tÓ$ˆØŒØ&(ˆÔ#Ø"ˆÕr1   c                óf   • [        U 5      nS[        U 5      R                   SUR                  < S3$ )zi
Get a string containing the type of the module proxy and a
representation of the wrapped module object.
Ú<z module=Ú>)r†   Útyper    r—   )rp   r›   s     r)   Ú__repr__Ú_ModuleProxy.__repr__Ã  s3   € ô
 ˜tÓ$ˆØ”4˜“:×&Ñ&Ð' x°·±Ñ/@ÀÐBÐBr1   c                óT   • [        U 5      nSUl        [        UR                  X5        g)z0
Set an attribute on the wrapped module object.
FN)r†   r™   Úsetattrr—   )rp   r'   r’   r›   s       r)   r‹   Ú_ModuleProxy.__setattr__Ë  s$   € ô ˜tÓ$ˆØ"ˆÔÜ�—‘˜tÕ+r1   c                óú   • [        U 5      nUR                  (       a  SnOUR                  R                  U5      nUb  UR                  5       nO[	        UR
                  U5      nUS:X  a	  SUl        U$ SUl        U$ )a  
Get an attribute from the module object, possibly emitting a warning.

If the specified name has been deprecated, then a warning is issued.
(Unless certain obscure conditions are met; see
L{_ModuleProxy._lastWasPath} for more information about what might quash
such a warning.)
NÚ__path__TF)r†   r™   r˜   ÚgetÚgetattrr—   )rp   r'   r›   ÚdeprecatedAttributer’   s        r)   r�   Ú_ModuleProxy.__getattribute__Ó  s‚   € ô ˜tÓ$ˆØ××Ø"&Ñà"'×"=Ñ"=×"AÑ"AÀ$Ó"GÐàÑ*ð (×+Ñ+Ó-‰Eô ˜EŸM™M¨4Ó0ˆEØ�:ÓØ!%ˆEÔð ˆð "'ˆEÔØˆr1   rj   N)re   Ústr)
r    r$   r   ry   rE   rŒ   r¡   r‹   r�   rz   rj   r1   r)   r•   r•   ¡  s   † ñò6#ôCò,õr1   r•   c                  ó$   • \ rS rSrSrS rS rSrg)Ú_DeprecatedAttributeiñ  a  
Wrapper for deprecated attributes.

This is intended to be used by L{_ModuleProxy}. Calling
L{_DeprecatedAttribute.get} will issue a warning and retrieve the
underlying attribute's value.

@type module: C{module}
@ivar module: The original module instance containing this attribute

@type fqpn: C{str}
@ivar fqpn: Fully qualified Python name for the deprecated attribute

@type version: L{incremental.Version}
@ivar version: Version that the attribute was deprecated in

@type message: C{str}
@ivar message: Deprecation message
c                ób   • Xl         X l        UR                  S-   U-   U l        X0l        X@l        g)z'
Initialise a deprecated name wrapper.
r   N)rš   r    r8   r4   Úmessage)rp   rš   r'   r4   r°   s        r)   rŒ   Ú_DeprecatedAttribute.__init__  s-   € ð ŒØŒØ—O‘O cÑ)¨DÑ0ˆŒ	ØŒØ�r1   c                óÎ   • [        U R                  U R                  5      n[        U R                  U R
                  [        S-   U R                  -   5      n[        U[        SS9  U$ )zE
Get the underlying attribute value and issue a deprecation warning.
z: é   rZ   )
r©   rš   r    r<   r8   r4   r9   r°   r   r]   )rp   r   r°   s      r)   r¨   Ú_DeprecatedAttribute.get  sT   € ô ˜Ÿ™ d§m¡mÓ4ˆÜ.Ø�I‰I�t—|‘|Ô%?À$Ñ%FÈÏÉÑ%Uó
ˆô 	ˆWÔ(°QÒ7Øˆr1   )r    r8   r°   rš   r4   N)r    r$   r   ry   rE   rŒ   r¨   rz   rj   r1   r)   r®   r®   ñ  s   † ñò(õr1   r®   c                ó|   • [         R                  U S5      n[        XAX#5      n[         R                  U S5      nXVU'   g)al  
Mark a module-level attribute as being deprecated.

@type proxy: L{_ModuleProxy}
@param proxy: The module proxy instance proxying the deprecated attributes

@type name: C{str}
@param name: Attribute name

@type version: L{incremental.Version}
@param version: Version that the attribute was deprecated in

@type message: C{str}
@param message: Deprecation message
r—   r˜   N)rŠ   r�   r®   )r‰   r'   r4   r°   r—   Úattrr˜   s          r)   Ú_deprecateAttributer·      s@   € ô  ×%Ñ% e¨YÓ7€GÜ ¨wÓ@€Dô #×3Ñ3°EÐ;RÓSÐØ"&˜$Òr1   c                óÄ   • [         R                  U   n[        U[        5      (       d,  [	        [
        [        U5      5      nU[         R                  U'   [        XCX5        g)a  
Declare a module-level attribute as being deprecated.

@type version: L{incremental.Version}
@param version: Version that the attribute was deprecated in

@type message: C{str}
@param message: Deprecation message

@type moduleName: C{str}
@param moduleName: Fully-qualified Python name of the module containing
    the deprecated attribute; if called from the same module as the
    attributes are being deprecated in, using the C{__name__} global can
    be helpful

@type name: C{str}
@param name: Attribute name to deprecate
N)ÚsysÚmodulesÚ
isinstancer•   r   r   r·   )r4   r°   r(   r'   rš   s        r)   r	   r	   8  sH   € ô& �[‰[˜Ñ$€FÜ�fœl×+Ñ+Ü”j¤,¨vÓ"6Ó7ˆØ"(Œ�‰�JÑä˜ gÕ7r1   c                ó  • [         R                  U R                     n[        U[        [
        R                  " U5      [        S [        U R                  5       5       5      UR                  U R                  R                  S0 5      SS9  g)a»  
Issue a warning string, identifying C{offender} as the responsible code.

This function is used to deprecate some behavior of a function.  It differs
from L{warnings.warn} in that it is not limited to deprecating the behavior
of a function currently on the call stack.

@param offender: The function that is being deprecated.

@param warningString: The string that should be emitted by this warning.
@type warningString: C{str}

@since: 11.0
c              3  ó4   #   • U  H  u  pUc  M
  Uv •  M     g 7fru   rj   )Ú.0Ú_Ú
lineNumbers      r)   Ú	<genexpr>Ú$warnAboutFunction.<locals>.<genexpr>l  s   é € ð 
â!B‘�Ø÷ ‰JÚ!Bùs   ‚	�	Ú__warningregistry__N)ÚcategoryÚfilenameÚlinenorš   ÚregistryÚmodule_globals)r¹   rº   r$   r   r]   r!   Ú
getabsfileÚmaxr   Ú__code__r    Ú__globals__Ú
setdefault)Úoffenderr;   ÚoffenderModules      r)   ÚwarnAboutFunctionrÐ   S  sy   € ô( —[‘[ ×!4Ñ!4Ñ5€NÜØÜ#Ü×#Ò# NÓ3Üñ 
ä!/°×0AÑ0AÔ!Bó
ó 
ð
 ×&Ñ&Ø×%Ñ%×0Ñ0Ð1FÈÓKØór1   c                ó  • 0 n[        U R                  5      [        U5      -
  nU R                  b  0 =oSU R                  '   US:  a<  U R                  c  [	        S5      eU[        U R                  5      S X0R                  '   [        U R                  U5       H	  u  pgXsU'   M     UR                  5        HG  u  pgX`R                  ;   a  Xc;   a  [	        S5      eXsU'   M*  U R                  b  UWU'   M>  [	        S5      e   U$ )ax  
Take an I{inspect.ArgSpec}, a tuple of positional arguments, and a dict of
keyword arguments, and return a mapping of arguments that were actually
passed to their passed values.

@param argspec: The argument specification for the function to inspect.
@type argspec: I{inspect.ArgSpec}

@param positional: The positional arguments that were passed.
@type positional: L{tuple}

@param keyword: The keyword arguments that were passed.
@type keyword: L{dict}

@return: A dictionary mapping argument names (those declared in C{argspec})
    to values that were passed explicitly by the user.
@rtype: L{dict} mapping L{str} to L{object}
Nr   úToo many arguments.úAlready passed.úno such param)rG   r_   ÚkeywordsÚvarargsÚ	TypeErrorÚzipÚitems)ÚargspecÚ
positionalÚkeywordr   Úunpassedr`   r'   r’   s           r)   Ú_passedArgSpecrÞ   w  sò   € ð& !#€FÜ�7—<‘<Ó ¤3 z£?Ñ2€HØ×ÑÑ#Ø,.Ð.ˆ˜×(Ñ(Ñ)Ø�!ƒ|Ø�?‰?Ñ"ÜÐ1Ó2Ð2à&0´°W·\±\Ó1BÐ1DÐ&EˆF—?‘?Ñ#Ü˜7Ÿ<™<¨Ö4‰ˆØˆt‹ñ 5à—}‘}–‰ˆØ—<‘<ÓØ‹~ÜÐ 1Ó2Ð2Ø �4‹LØ×ÑÑ)Ø ˆF�4‹Lä˜OÓ,Ð,ñ 'ð €Mr1   c                ó"  • 0 nSnSn[        U R                  R                  5       5       GHh  u  nu  pxUR                  [        R
                  R                  :X  a  XS X7'   [        X7   5      S-   nMI  UR                  [        R
                  R                  :X  a  0 =oCU'   My  UR                  [        R
                  R                  [        R
                  R                  4;   a  U[        U5      :  a  X   X7'   US-  nM×  MÙ  UR                  [        R
                  R                  :X  aO  Xr;  aG  UR                  [        R
                  R                  :X  a  [        SU 35      eUR                  X7'   GMM  GMP  [        SU SUR                   35      e   [        U5      U:”  a  [        S5      eUR                  5        HJ  u  pyXpR                  R                  5       ;   a  Xs;   a  [        S5      eX“U'   M8  Ub  X”U'   MA  [        S	5      e   U$ )
at  
Take an L{inspect.Signature}, a tuple of positional arguments, and a dict of
keyword arguments, and return a mapping of arguments that were actually
passed to their passed values.

@param signature: The signature of the function to inspect.
@type signature: L{inspect.Signature}

@param positional: The positional arguments that were passed.
@type positional: L{tuple}

@param keyword: The keyword arguments that were passed.
@type keyword: L{dict}

@return: A dictionary mapping argument names (those declared in
    C{signature}) to values that were passed explicitly by the user.
@rtype: L{dict} mapping L{str} to L{object}
Nr   r@   zmissing keyword arg Ú'z' parameter is invalid kind: rÒ   rÓ   rÔ   )Ú	enumerateÚ
parametersrÙ   Úkindr!   Ú	ParameterÚVAR_POSITIONALrG   ÚVAR_KEYWORDÚPOSITIONAL_OR_KEYWORDÚPOSITIONAL_ONLYÚKEYWORD_ONLYÚdefaultÚemptyr×   Úkeys)
Ú	signaturerÛ   rÜ   r   r`   ÚnumPositionalÚnr'   Úparamr’   s
             r)   Ú_passedSignaturerñ   ¡  sØ  € ð& €FØ€FØ€MÜ% i×&:Ñ&:×&@Ñ&@Ó&B×CÑˆ‰=ˆDØ�:‰:œ×*Ñ*×9Ñ9Ó9à% b˜>ˆF‰LÜ ¡Ó-°Ñ1ŠMØ�Z‰Zœ7×,Ñ,×8Ñ8Ó8à$&Ð&ˆF˜D“\Ø�Z‰ZÜ×Ñ×3Ñ3Ü×Ñ×-Ñ-ð
ó 
ð ”3�z“?Ó"Ø)™}�‘Ø Ñ"’ñ #ð �Z‰Zœ7×,Ñ,×9Ñ9Ó9ØÓ"Ø—=‘=¤G×$5Ñ$5×$;Ñ$;Ó;Ü#Ð&:¸4¸&Ð$AÓBÐBà#(§=¡=�F”Lò	 #ô ˜a ˜vÐ%BÀ5Ç:Á:À,ÐOÓPÐPñ- Dô0 ˆ:ƒ˜Ó&ÜÐ-Ó.Ð.Ø—}‘}–‰ˆØ×'Ñ'×,Ñ,Ó.Ó.Ø‹~ÜÐ 1Ó2Ð2Ø �4‹LØÑØ �4‹Lä˜OÓ,Ð,ñ 'ð €Mr1   c                ó   ^ • U 4S jnU$ )ak  
Decorator which causes its decoratee to raise a L{TypeError} if two of the
given arguments are passed at the same time.

@param argumentPairs: pairs of argument identifiers, each pair indicating
    an argument that may not be passed in conjunction with another.
@type argumentPairs: sequence of 2-sequences of L{str}

@return: A decorator, used like so::

        @_mutuallyExclusiveArguments([["tweedledum", "tweedledee"]])
        def function(tweedledum=1, tweedledee=2):
            "Don't pass tweedledum and tweedledee at the same time."

@rtype: 1-argument callable taking a callable and returning a callable.
c                ót   >^ ^^• [         R                  " T 5      m[        m[        T 5      UUUU 4S j5       nU$ )Nc                 ó–   >• T" TX5      nT H2  u  p4X2;   d  M  XB;   d  M  [        SU< SU< S[        T5      < S35      e   T" U 0 UD6$ )NúThe z and z arguments to z are mutually exclusive.)r×   r*   )	r_   r`   Ú	argumentsÚthisÚthatÚ_passedÚargumentPairsÚspecÚwrappees	        €€€€r)   ÚwrappedÚ=_mutuallyExclusiveArguments.<locals>.wrapper.<locals>.wrappedó  sX   ø€ á  dÓ3ˆIÛ+‘
�ØÕ$¨Õ):Ý#ã£Ô':¸7Ö'CðEóð ñ ,ñ ˜DÐ+ FÑ+Ð+r1   )r!   rí   rñ   r   )rü   rý   rù   rû   rú   s   ` @@€r)   ÚwrapperÚ,_mutuallyExclusiveArguments.<locals>.wrapperï  s5   û€ Ü× Ò  Ó)ˆÜ"ˆä	ˆw‹÷	,ó 
ð	,ð ˆr1   rj   )rú   rÿ   s   ` r)   Ú_mutuallyExclusiveArgumentsr  Ý  s   ø€ õ$ð" €Nr1   Ú_Tc.)Úboundc                ó    ^ ^^• SUUU 4S jjnU$ )a?  
Return a decorator that marks a keyword parameter of a callable
as deprecated. A warning will be emitted if a caller supplies
a value for the parameter, whether the caller uses a keyword or
positional syntax.

@type version: L{incremental.Version}
@param version: The version in which the parameter will be marked as
    having been deprecated.

@type name: L{str}
@param name: The name of the deprecated parameter.

@type replacement: L{str}
@param replacement: Optional text indicating what should be used in
    place of the deprecated parameter.

@since: Twisted 21.2.0
c                ó  >^ ^^• [        ST< S[        T 5       3T	TS9mSR                  T[        T	5      5      nT(       a  US-   [	        T5      -   nUS-  n[
        R                  " T 5      R                  nTU;   aO  UT   R                  [
        R                  R                  :X  a$  [        U5      R                  T5      mUUUU 4S jnOUUU 4S jn[        [        [        T 5      " U5      5      n[!        XA5        U$ )	Nrõ   z parameter to r.   z'The {!r} parameter was deprecated in {}r3   r   c                 ó\   >• [        U 5      T:”  d  TU;   a  [        T[        SS9  T" U 0 UD6$ rX   )rG   r   r]   )r_   r`   r'   ÚparameterIndexr;   rü   s     €€€€r)   ÚcheckDeprecatedParameterÚMdeprecatedKeywordParameter.<locals>.wrapper.<locals>.checkDeprecatedParameter3  s2   ø€ Ü�t“9˜~Ó-°¸³Ü˜Ô(:ÀqÒIÙ Ð/¨Ñ/Ð/r1   c                 ó>   >• TU;   a  [        T[        SS9  T" U 0 UD6$ rX   r\   )r_   r`   r'   r;   rü   s     €€€r)   r  r	  :  s'   ø€ Ø˜6“>Ü˜Ô(:ÀqÒIÙ Ð/¨Ñ/Ð/r1   )r<   r*   r:   r   r0   r!   rí   râ   rã   rä   rç   ÚlistÚindexr   r  r   rT   )
rü   r5   Úparamsr  Ú	decoratedr  r;   r'   r/   r4   s
   `    @@€€€r)   rÿ   Ú+deprecatedKeywordParameter.<locals>.wrapper  sí   û€ Ü4Ø�4‘(˜.Ô)<¸WÓ)EÐ(FÐGØØ#ñ
ˆð 8×>Ñ>ØÜ˜WÓ%ó
ˆö Ø˜‘*Ô4°[ÓAÑAˆCØˆs‰
ˆä×"Ò" 7Ó+×6Ñ6ˆà�F‹NØ�t‘×!Ñ!¤W×%6Ñ%6×%LÑ%LÓLä! &›\×/Ñ/°Ó5ˆN÷0ñ 0÷0ô
 œœe GœnÐ-EÓFÓGˆ	Ü˜9Ô*ØÐr1   )rü   r  re   r  rj   )r4   r'   r/   rÿ   s   ``` r)   r
   r
     s   ú€ ÷.$ñ $ðL €Nr1   ru   )NN)r4   r   r/   z"str | Callable[..., object] | Nonere   z.Callable[[Callable[_P, _R]], Callable[_P, _R]])r4   r   r'   r¬   r/   zOptional[str]re   zCallable[[_Tc], _Tc])6rE   Ú
__future__r   Ú__all__r!   r¹   Údisr   Ú	functoolsr   Útypesr   Útypingr   r   r   r   r   r   Úwarningsr   r   Úincrementalr   r   Útyping_extensionsr   r   r   r9   r*   r$   r    r   r0   r6   r<   r   rT   r   r   r   r   r†   r•   r®   r·   r	   rÐ   rÞ   rñ   r  r  r
   rj   r1   r)   Ú<module>r     sl  ðñ
LõZ #ò€ó Û 
Ý Ý Ý ß ?× ?ß (ç 1Ý 'áˆtƒ_€ÙˆTƒ]€àEÐ òð, ":Ð Ô Ø3Ð Ô Ø#7Ð Ô  ò/ôô( ôFò<5ð< IMð& Øð& Ø#Eð& à3õ& ðT IMð@ Øð@ Ø#Eð@ à3õ@ òFò÷Wñ W÷&Mñ M÷`,ñ ,ò^'ò08ò6!òH'òT9òx#ñL ˆe˜8 C¨ HÑ-Ñ.€ð ?Cð=Øð=Øð=Ø.;ð=àö=r1   