§
    ¼Ë”jH"  ã                   ó  — d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
mZmZ  e¦   «         Zd„ Zd„ Zd„ Zd	„ Zd
„ Z G d„ de	¦  «        Z G d„ d¦  «        Z G d„ dee¦  «        Z G d„ de
¦  «        Z G d„ dee¦  «        Zdddddœd„ZdS )a   The `with_signature` decorator: override the signature (and related
introspection attributes) of a wrapped callable without mutating the wrapped
function itself. Accepts a prototype callable, a prebuilt `inspect.Signature`,
or a factory that derives a signature from the wrapped function at decoration
time.

This replaces the need for the `adapter=` argument of `wrapt.decorator`,
which is planned for deprecation.
é    )Ú
CO_VARARGSÚCO_VARKEYWORDSÚ	ParameterÚ	Signature)Ú	signatureé   )ÚBaseObjectProxyÚBoundFunctionWrapperÚCallableObjectProxyÚFunctionWrapperc                 ó`   ‡ ‡— d‰                       d¦  «        › �Šˆ ˆfd„}t          |¦  «        S )aQ  Read-only property that memoizes its derivation in a `_self_*` slot.

    `functools.cached_property` is unusable on ObjectProxy subclasses: wrapt
    overrides `__dict__` with a property returning the wrapped object's dict,
    so cached_property's `instance.__dict__[name] = value` would mutate the
    wrapped function. Storing under a `_self_*` name routes through wrapt's
    own setattr handling and lands in the proxy's real instance dict. Using
    a `@property` (data descriptor) also ensures we win over any value
    copied into the instance dict by `FunctionWrapper.__init__`.
    Ú_self_cached_Ú_c                 óœ   •— t          | ‰t          ¦  «        }|t          u r+|                      ‰¦  «        }|                      ‰|¦  «         |S ©N)ÚgetattrÚ_MISSINGÚ_deriveÚ__self_setattr__)ÚselfÚvalueÚattrÚslots     €€ú=C:\Projects\DSCons\.venv\Lib\site-packages\wrapt/signature.pyÚgetterz_cached.<locals>.getter%   sK   ø€ Ý˜˜d¥HÑ-Ô-ˆØ•HÐÐØ—L’L Ñ&Ô&ˆEØ×!Ò! $¨Ñ.Ô.Ð.Øˆó    )ÚlstripÚproperty)r   r   r   s   ` @r   Ú_cachedr      sM   øø€ ð .˜4Ÿ;š; sÑ+Ô+Ð-Ð-€Dðð ð ð ð ð õ �FÑÔÐr   c                 ó†   — d„ | j                              ¦   «         D ¦   «         }| j        t          j        ur
| j        |d<   |S )Nc                 óN   — i | ]"}|j         t          j        u¯|j        |j         “Œ#S © )Ú
annotationr   ÚemptyÚname©Ú.0Úps     r   ú
<dictcomp>z'_derive_annotations.<locals>.<dictcomp>0   s7   € ð ð ð àØŒ<�yœÐ.Ð.ð 	
Œ�”à.Ð.Ð.r   Úreturn)Ú
parametersÚvaluesÚreturn_annotationr   r$   )ÚsigÚanns     r   Ú_derive_annotationsr0   /   sQ   € ðð à”×&Ò&Ñ(Ô(ðñ ô €Cð
 Ô¥I¤OÐ3Ð3ØÔ-ˆˆH‰Ø€Jr   c                 ój   — t          d„ | j                             ¦   «         D ¦   «         ¦  «        }|pd S )Nc              3   óˆ   K  — | ]=}|j         t          j        t          j        fv r|j        t          j        u¯4|j        V — Œ>d S r   )Úkindr   ÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDÚdefaultr$   r&   s     r   ú	<genexpr>z#_derive_defaults.<locals>.<genexpr>;   sY   è è € ð ð àØŒ6•iÔ/µÔ1PÐQÐQÐQØŒI�Yœ_Ð,Ð,ð 	
Œ	ð -Ð,Ð,Ð,ð	ð r   )Útupler+   r,   )r.   Údefaultss     r   Ú_derive_defaultsr:   :   sH   € Ýð ð à”×&Ò&Ñ(Ô(ðñ ô ñ ô €Hð Ð�tÐr   c                 óP   — d„ | j                              ¦   «         D ¦   «         }|pd S )Nc                 ót   — i | ]5}|j         t          j        u ¯|j        t          j        u¯(|j        |j        “Œ6S r"   )r3   r   ÚKEYWORD_ONLYr6   r$   r%   r&   s     r   r)   z&_derive_kwdefaults.<locals>.<dictcomp>E   sF   € ð ð ð àØŒ6•YÔ+Ð+Ð+°´	ÅÄÐ0PÐ0Pð 	
Œ�”	à0PÐ0PÐ0Pr   )r+   r,   )r.   Ú
kwdefaultss     r   Ú_derive_kwdefaultsr?   D   s;   € ðð à”×&Ò&Ñ(Ô(ðñ ô €Jð
 Ð˜Ðr   c                 óV  — g g g }}}d x}}| j                              ¦   «         D ]Á}|j        t          j        u r|                     |j        ¦  «         Œ0|j        t          j        u r|                     |j        ¦  «         Œ^|j        t          j        u r|j        }Œy|j        t          j	        u r|                     |j        ¦  «         Œ§|j        t          j
        u r|j        }ŒÂ||z   |z   }|r|                     |¦  «         |r|                     |¦  «         t          |¦  «        S r   )r+   r,   r3   r   r4   Úappendr%   r5   ÚVAR_POSITIONALr=   ÚVAR_KEYWORDr8   )r.   Úpos_onlyÚ	pos_or_kwÚkw_onlyÚvar_posÚvar_kwr(   Únamess           r   Ú_derive_varnamesrJ   M   s-  € Ø#% r¨2˜ˆi€HØÐ€GˆfØŒ^×"Ò"Ñ$Ô$ð 
ð 
ˆØŒ6•YÔ.Ð.Ð.Ø�OŠO˜AœFÑ#Ô#Ð#Ð#ØŒV•yÔ6Ð6Ð6Ø×Ò˜QœVÑ$Ô$Ð$Ð$ØŒV•yÔ/Ð/Ð/Ø”fˆGˆGØŒV•yÔ-Ð-Ð-Ø�NŠN˜1œ6Ñ"Ô"Ð"Ð"ØŒV•yÔ,Ð,Ð,Ø”VˆFøØ�yÑ  7Ñ*€EØð Ø�Š�WÑÔÐØð Ø�Š�VÑÔÐÝ�‰<Œ<Ðr   c                   ó–   ‡ — e Zd ZdZˆ fd„Zd„ Z ed¦  «        Z ed¦  «        Z ed¦  «        Z	 ed¦  «        Z
 ed¦  «        Zˆ xZS )	Ú_SignatureCodezÔCode-object proxy deriving argument-related co_* attrs from a Signature.

    Non-argument bits (co_flags for coroutine/generator, co_filename, etc.)
    fall through to the wrapped function's real __code__.
    c                 óX   •— t          ¦   «                              |¦  «         || _        d S r   ©ÚsuperÚ__init__Ú_self_signature©r   Úwrappedr   Ú	__class__s      €r   rP   z_SignatureCode.__init__j   ó)   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!Ø(ˆÔÐÐr   c                 óÂ  ‡— | j         }|dk    rJt          j        t          j        fŠt	          ˆfd„|j                             ¦   «         D ¦   «         ¦  «        S |dk    r0t	          d„ |j                             ¦   «         D ¦   «         ¦  «        S |dk    r0t	          d„ |j                             ¦   «         D ¦   «         ¦  «        S |dk    rt          |¦  «        S |dk    rrd	„ |j                             ¦   «         D ¦   «         Š| j        j	        t          t          z   z  }t          j        ‰v r
|t          z  }t          j        ‰v r
|t          z  }|S t          |¦  «        ‚)
NÚco_argcountc              3   ó*   •K  — | ]}|j         ‰v V — Œd S r   ©r3   )r'   r(   Úkindss     €r   r7   z)_SignatureCode._derive.<locals>.<genexpr>r   s)   øè è € ÐHÐH¨1�q”v �ÐHÐHÐHÐHÐHÐHr   Úco_posonlyargcountc              3   ó<   K  — | ]}|j         t          j        u V — Œd S r   )r3   r   r4   r&   s     r   r7   z)_SignatureCode._derive.<locals>.<genexpr>t   s=   è è € ð ð Ø89�”�)Ô3Ð3ðð ð ð ð ð r   Úco_kwonlyargcountc              3   ó<   K  — | ]}|j         t          j        u V — Œd S r   )r3   r   r=   r&   s     r   r7   z)_SignatureCode._derive.<locals>.<genexpr>x   s=   è è € ð ð Ø56�”�)Ô0Ð0ðð ð ð ð ð r   Úco_varnamesÚco_flagsc                 ó   — h | ]	}|j         ’Œ
S r"   rY   r&   s     r   ú	<setcomp>z)_SignatureCode._derive.<locals>.<setcomp>~   s   € Ð=Ð=Ð= �Q”VÐ=Ð=Ð=r   )rQ   r   r4   r5   Úsumr+   r,   rJ   Ú__wrapped__r`   r   r   rB   rC   ÚAttributeError)r   r   r.   ÚflagsrZ   s       @r   r   z_SignatureCode._deriven   s‹  ø€ ØÔ"ˆØ�=Ò Ð ÝÔ.µ	Ô0OÐPˆEÝÐHÐHÐHÐH°´×0EÒ0EÑ0GÔ0GÐHÑHÔHÑHÔHÐHØÐ'Ò'Ð'Ýð ð Ø=@¼^×=RÒ=RÑ=TÔ=Tðñ ô ñ ô ð ð Ð&Ò&Ð&Ýð ð Ø:=¼.×:OÒ:OÑ:QÔ:Qðñ ô ñ ô ð ð �=Ò Ð Ý# CÑ(Ô(Ð(Ø�:ÒÐØ=Ð= S¤^×%:Ò%:Ñ%<Ô%<Ð=Ñ=Ô=ˆEØÔ$Ô-µ*½~Ñ2MÐ0NÑNˆEÝÔ'¨5Ð0Ð0Ø�Ñ#�ÝÔ$¨Ð-Ð-Ø�Ñ'�ØˆLÝ˜TÑ"Ô"Ð"r   rW   r[   r]   r_   r`   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rP   r   r   rW   r[   r]   r_   r`   Ú__classcell__©rT   s   @r   rL   rL   c   s–   ø€ € € € € ðð ð)ð )ð )ð )ð )ð#ð #ð #ð2 �'˜-Ñ(Ô(€KØ ˜Ð!5Ñ6Ô6ÐØ˜Ð 3Ñ4Ô4ÐØ�'˜-Ñ(Ô(€KØˆw�zÑ"Ô"€H€H€H€H€Hr   rL   c                   ó†   — e Zd ZdZd„ Zed„ ¦   «         Z ed¦  «        Z ed¦  «        Z	 ed¦  «        Z
 ed¦  «        ZdS )	Ú_SignatureMixinzEShared Signature-derived introspection attrs for wrapper + surrogate.c                 óì   — | j         }|dk    rt          |¦  «        S |dk    rt          |¦  «        S |dk    rt          |¦  «        S |dk    rt	          | j        j        |¦  «        S t          |¦  «        ‚)NÚ__annotations__Ú__defaults__Ú__kwdefaults__Ú__code__)rQ   r0   r:   r?   rL   rd   rs   re   )r   r   r.   s      r   r   z_SignatureMixin._derive‘   s†   € ØÔ"ˆØÐ$Ò$Ð$Ý& sÑ+Ô+Ð+Ø�>Ò!Ð!Ý# CÑ(Ô(Ð(ØÐ#Ò#Ð#Ý% cÑ*Ô*Ð*Ø�:ÒÐÝ! $Ô"2Ô";¸SÑAÔAÐAÝ˜TÑ"Ô"Ð"r   c                 ó   — | j         S r   )rQ   ©r   s    r   Ú__signature__z_SignatureMixin.__signature__�   s   € àÔ#Ð#r   rp   rq   rr   rs   N)rg   rh   ri   rj   r   r   rv   r   rp   rq   rr   rs   r"   r   r   rn   rn   Ž   s~   € € € € € ØOÐOð
#ð 
#ð 
#ð ð$ð $ñ „Xð$ð �gÐ/Ñ0Ô0€OØ�7˜>Ñ*Ô*€LØ�WÐ-Ñ.Ô.€NØˆw�zÑ"Ô"€H€H€Hr   rn   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú_SignatureFunctionSurrogatea  Function surrogate exposing Signature-derived introspection attrs.

    Used as __func__ of a bound wrapper so that inspect.signature -- which
    treats the bound wrapper as a MethodType and consults __func__ -- sees
    our override and strips self/cls correctly.
    c                 óX   •— t          ¦   «                              |¦  «         || _        d S r   rN   rR   s      €r   rP   z$_SignatureFunctionSurrogate.__init__¯   rU   r   )rg   rh   ri   rj   rP   rk   rl   s   @r   rx   rx   §   sB   ø€ € € € € ðð ð)ð )ð )ð )ð )ð )ð )ð )ð )r   rx   c                   ó:   — e Zd Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú_BoundSignatureFunctionWrapperc                 óJ   — t          | j        j        | j        j        ¦  «        S r   )rx   rd   Ú__func__Ú_self_parentrQ   ru   s    r   r}   z'_BoundSignatureFunctionWrapper.__func__µ   s%   € å*ØÔÔ% tÔ'8Ô'Hñ
ô 
ð 	
r   c                 ó   — | j         j        S r   )r~   rQ   ru   s    r   rv   z,_BoundSignatureFunctionWrapper.__signature__»   s   € àÔ Ô0Ð0r   N)rg   rh   ri   r   r}   rv   r"   r   r   r{   r{   ´   sH   € € € € € Øð
ð 
ñ „Xð
ð
 ð1ð 1ñ „Xð1ð 1ð 1r   r{   c                   ó8   ‡ — e Zd ZeZˆ fd„Zed„ ¦   «         Zˆ xZS )Ú_SignatureFunctionWrapperc                 óZ   •— t          ¦   «                              ||¦  «         || _        d S r   rN   )r   rS   Úwrapperr   rT   s       €r   rP   z"_SignatureFunctionWrapper.__init__Ã   s+   ø€ Ý‰Œ×Ò˜ 'Ñ*Ô*Ð*Ø(ˆÔÐÐr   c                 ó6   — t          | j        | j        ¦  «        S r   )rx   rd   rQ   ru   s    r   r}   z"_SignatureFunctionWrapper.__func__Ç   s   € å*¨4Ô+;¸TÔ=QÑRÔRÐRr   )	rg   rh   ri   r{   Ú__bound_function_wrapper__rP   r   r}   rk   rl   s   @r   r�   r�   À   s`   ø€ € € € € Ø!?Ðð)ð )ð )ð )ð )ð ðSð Sñ „XðSð Sð Sð Sð Sr   r�   N)Ú	prototyper   Úfactoryc               óÀ   ‡‡‡— t          d„ ‰‰‰fD ¦   «         ¦  «        }|dk    rt          d¦  «        ‚|dk    rt          d¦  «        ‚ˆˆˆfd„}| €|S  || ¦  «        S )a   Override the signature of a wrapped callable.

    Exactly one of `prototype`, `signature`, or `factory` must be supplied:

    - `prototype`: a callable whose signature will be used.
    - `signature`: a prebuilt `inspect.Signature` object.
    - `factory`: a callable `factory(wrapped)` invoked at decoration time
      that returns either a `Signature` or a prototype callable.

    The resulting wrapper exposes the override via `__signature__`, and
    derives `__annotations__`, `__defaults__`, `__kwdefaults__`, and the
    argument-related attributes of `__code__` from the same source. The
    wrapped function is not mutated. Calling behaviour is unchanged.
    c              3   ó   K  — | ]}|d uV — Œ	d S r   r"   )r'   Úxs     r   r7   z!with_signature.<locals>.<genexpr>Ü   s&   è è € ÐKÐK a�A˜T�MÐKÐKÐKÐKÐKÐKr   r   zBwith_signature requires one of prototype=, signature=, or factory=r   zFwith_signature accepts only one of prototype=, signature=, or factory=c                 ó¼   •— d„ }‰�‰}nC‰�t          ‰¦  «        }n1 ‰| ¦  «        }t          |t          ¦  «        r|nt          |¦  «        }t          | ||¦  «        S )Nc                 ó   —  | |i |¤ŽS r   r"   )rS   ÚinstanceÚargsÚkwargss       r   Ú_wrapperz4with_signature.<locals>._decorator.<locals>._wrapperç   s   € Ø�7˜DÐ+ FÐ+Ð+Ð+r   )Ú_inspect_signatureÚ
isinstancer   r�   )rS   r�   ÚresolvedÚproducedr‡   r†   r   s       €€€r   Ú
_decoratorz"with_signature.<locals>._decoratoræ   s�   ø€ ð	,ð 	,ð 	,ð Ð Ø ˆHˆHØÐ"Ý)¨)Ñ4Ô4ˆHˆHà�w˜wÑ'Ô'ˆHõ ˜h­	Ñ2Ô2ð2��å'¨Ñ1Ô1ð õ )¨°(¸HÑEÔEÐEr   )rc   Ú	TypeError)rS   r†   r   r‡   Ú	specifiedr•   s    ```  r   Úwith_signaturer˜   Ì   s¯   øøø€ õ  ÐKÐK¨I°yÀ'Ð+JÐKÑKÔKÑKÔK€IØ�A‚~€~ÝØPñ
ô 
ð 	
ð �1‚}€}ÝØTñ
ô 
ð 	
ðFð Fð Fð Fð Fð Fð Fð$ €ØÐØˆ:�gÑÔÐr   r   )rj   Úinspectr   r   r   r   r   r‘   Ú	__wrapt__r	   r
   r   r   Úobjectr   r   r0   r:   r?   rJ   rL   rn   rx   r{   r�   r˜   r"   r   r   ú<module>rœ      sé  ððð ð EÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ˆ6‰8Œ8€ðð ð ð.ð ð ðð ð ðð ð ðð ð ð,(#ð (#ð (#ð (#ð (#�_ñ (#ô (#ð (#ðV#ð #ð #ð #ð #ñ #ô #ð #ð2
)ð 
)ð 
)ð 
)ð 
) /Ð3Fñ 
)ô 
)ð 
)ð	1ð 	1ð 	1ð 	1ð 	1Ð%9ñ 	1ô 	1ð 	1ð	Sð 	Sð 	Sð 	Sð 	S °ñ 	Sô 	Sð 	Sð.°ÀÈtð .ð .ð .ð .ð .ð .ð .r   