o
    "“i§2  ã                   @   sÎ  d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z
 d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dlmZ3 d dlmZ4 d dlmZ5 d dlm	Z6 d dlmZ7 d dlmZ8 d dlmZ9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z? d d
l:mZ@ d dl:mAZB g d¢ZCzd dlDmEZF W n eGyÙ   dZFY nw e jHdkræd dlImJZJ nd dlKmJZJ zd dlDmLZM W n eG�y   e jHdk�sJ ‚d dlmLZM Y nw zd dlDmNZN W n eG�y-   e jHdk�s%J ‚d dlmNZN Y nw e'hZOzd dlDm'ZP eO QeP¡ W n
 eG�yH   Y nw zd dlDm ZR eSe eRgƒZTW n eG�yf   eSe gƒZTY nw eUdƒZVde deWfdd„ZXde fd d!„ZLd"d#„ ZYd$d%„ ZZd&d'„ Zde[e\e,e<ef f fd(d)„ZAd*eUde]e< fd+d,„Z^d-eUdeWfd.d/„Z_d0e deWfd1d2„Z`d0e deWfd3d4„ZadeWfd5d6„Zbde)eU fd7d8„ZceZdeZeeZe jHdk�rÞeed9d:�Zzd d;lmfZf d0e deWfd<d=„ZgW n eG�y    deWfd>d=„ZgY nw eZeZeZe
Z	eZeZeSZheiZjdeWfd?d@„ZkdAdB„ Zle jHdCk�r:dDdE„ Zmde de)eU fdFdG„Znd dHlmoZompZp nPe jHdk�rmd dIlmqZq dJdE„ Zmde de)eU fdKdG„Zne jHdk�rdd dHlmoZompZp n&d dHlDmoZompZp nd dIlmqZq d dHlDmoZompZp dLdE„ Zmde de)eU fdMdG„Znde,e e>f fdNdO„Zrd0e deWfdPdQ„Zsd0e deWfdRdS„ZtdTdU„ Zud0e deWfdVdW„Zvd0e deWfdXdY„ZwdZd[„ Zxd0e deWfd\d]„Zyd^d_„ ZzdeWfd`da„Z{dbdc„ Z|dhddde„Z}deWfdfdg„Z~dS )ié    N)ÚCounterÚdeque)ÚMapping)ÚMutableMapping)ÚMutableSequence)Ú
MutableSet)ÚSequence)ÚSet)ÚMISSINGÚFieldÚis_dataclass)Úfields)Úpartial)Ú	signature)ÚGenericAlias)Ú	AnnotatedÚAnyÚDequeÚDictÚFinalÚ	FrozenSetÚGenericÚListÚLiteralÚNewTypeÚOptionalÚProtocolÚTupleÚUnionÚ_AnnotatedAliasÚ_GenericAliasÚ_SpecialGenericAliasÚget_argsÚ
get_originÚget_type_hints)r   )ÚNOTHINGÚ	AttributeÚFactoryÚNothingTypeÚresolve_types)Úfields_dict)ÚANIESÚExceptionGroupÚExtensionsTypedDictÚ	TypeAliasÚadapted_fieldsr*   ÚhasÚis_typeddict)Ú	TypedDict)é   é   )r,   )r1   )r3   é
   )r.   )r   )r   ÚtypÚreturnc                 C   s    t | ƒot| jv ot| jƒdkS )Né   )Úis_union_typeÚNoneTypeÚ__args__Úlen©r6   © r>   úN/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cattrs/_compat.pyÚis_optionale   s    r@   Úclsc                 C   s   t t| d| ƒƒS )z4Thin wrapper around typing(_extensions).is_typeddictÚ
__origin__)Ú_is_typeddictÚgetattr©rA   r>   r>   r?   r1   i   s   r1   c                 C   s   t | dƒp	t | dƒS )NÚ__attrs_attrs__Ú__dataclass_fields__)ÚhasattrrE   r>   r>   r?   r0   n   s   r0   c                 C   s   t | ƒp	t t| ƒƒS )zATest whether the class if a normal or generic attrs or dataclass.)r0   r#   rE   r>   r>   r?   Úhas_with_genericr   s   rI   c                 C   s$   z| j W S  ty   t| ƒ Y S w ©N)rF   ÚAttributeErrorÚdataclass_fields©Útyper>   r>   r?   r   w   s
   ÿr   c                 C   s"   t | ƒrdd„ t| ƒD ƒS t| ƒS )z1Return the fields_dict for attrs and dataclasses.c                 S   s   i | ]}|j |“qS r>   )Úname)Ú.0Úfr>   r>   r?   Ú
<dictcomp>�   s    zfields_dict.<locals>.<dictcomp>)r   rL   Úattrs_fields_dictrM   r>   r>   r?   r*   ~   s   r*   Úclc                    sp   t | ƒr!t| ƒ}tdd„ |D ƒƒrt| ƒ‰ ni ‰ ‡ fdd„|D ƒS t| ƒ}tdd„ |D ƒƒr6t| ƒ t| ƒ}|S )z€Return the attrs format of `fields()` for attrs and dataclasses.

    Resolves `attrs` stringified annotations, if present.
    c                 s   ó   � | ]	}t |jtƒV  qd S rJ   ©Ú
isinstancerN   Ústr©rP   Úar>   r>   r?   Ú	<genexpr>Œ   ó   € z!adapted_fields.<locals>.<genexpr>c                    sh   g | ]0}t |j|jtur|jn|jturt|jƒntd dd d|jdˆ  |j|j	¡|jt
|ddƒd�‘qS )NTÚkw_onlyF)rN   Úaliasr]   )r&   rO   Údefaultr
   Údefault_factoryr'   r%   ÚinitÚgetrN   rD   )rP   Úattr©Ú
type_hintsr>   r?   Ú
<listcomp>’   s(    ë
ÿ

ÿ
íÿz"adapted_fields.<locals>.<listcomp>c                 s   rU   rJ   rV   rY   r>   r>   r?   r[   «   r\   )r   rL   Úanyr$   Úattrs_fieldsr)   )rT   ÚattrsÚattribsr>   rd   r?   r/   …   s   

êr/   Úobjc                 C   s"   zt | |ƒW S  ty   Y dS w )z+A safe version of issubclass (won't raise).F)Ú
issubclassÚ	TypeError)rk   Úbasesr>   r>   r?   Úis_subclass²   s
   ÿro   rN   c                 C   s   t | dd ƒ}|tu od| jvS )NrB   .)rD   Útupler;   ©rN   Úoriginr>   r>   r?   Úis_hetero_tupleº   s   rs   c                 C   s   t | tƒo
t| ddƒS )NÚ_is_protocolF)ro   r   rD   rM   r>   r>   r?   Úis_protocol¿   s   ru   c                 C   s   | t u S rJ   )r   rM   r>   r>   r?   Úis_bare_finalÃ   s   rv   c                 C   s.   | t u rtS | jtu r| jt u r| jd S dS )z8Return the base of the Final annotation, if it is Final.r   N)r   r   Ú	__class__r    rB   r;   rM   r>   r>   r?   Úget_final_baseÇ   s
   
rx   T)Úeval_str)Ú_LiteralGenericAliasc                 C   s"   | t v pt| tttfƒo| jt v S )zIs this a literal?)ÚLITERALSrW   r    rz   r!   rB   rM   r>   r>   r?   Ú
is_literalÝ   s   
ÿür|   c                 C   s   dS )NFr>   )Ú_r>   r>   r?   r|   è   s   c                 C   s   t | dd ƒtu S )Nrw   )rD   r   rM   r>   r>   r?   Úis_annotatedö   ó   r~   c                 C   s2   | t tfv p| jtu ot| jt ƒpt| dd ƒtu S ©NrB   )r   rp   rw   r    ro   rB   rD   rM   r>   r>   r?   Úis_tupleú   ó
   ÿýr�   )r3   é   c                 C   s   ddl m} | tu pt| |ƒS ©Nr   )Ú	UnionType)Útypesr…   r   rW   ©rk   r…   r>   r>   r?   r9     s   r9   c                 C   ó   | t u s	t| t ƒr| jS d S rJ   ©r   rW   Ú__supertype__r=   r>   r>   r?   Úget_newtype_base	  ó   r‹   )ÚNotRequiredÚRequired)Ú_UnionGenericAliasc                 C   s2   ddl m} | tu pt| tƒo| jtu pt| |ƒS r„   )r†   r…   r   rW   r�   rB   r‡   r>   r>   r?   r9     s   ÿýc                 C   rˆ   rJ   r‰   r=   r>   r>   r?   r‹     rŒ   c                 C   s   | t u pt| tƒo| jt u S rJ   )r   rW   r�   rB   )rk   r>   r>   r?   r9   ,  s   ÿc                 C   s6   t | dd ƒ}|d urt | ddƒdkr| jdv r|S d S )NrŠ   Ú__qualname__Ú zNewType.<locals>.new_type)ÚtypingÚtyping_extensions)rD   Ú
__module__)r6   Ú	supertyper>   r>   r?   r‹   1  s   
c                 C   s4   t | ƒr
t| ƒd } t| ƒttfv rt| ƒd S tS )Nr   )r~   r"   r#   r�   rŽ   r%   rM   r>   r>   r?   Úget_notrequired_base<  s
   r–   c                 C   s`   t | ddƒ}| ttttttfv p/| jtu o(|t	urt
|tƒp(|t	u o(| jd du p/|tttfv S )zcA predicate function for mutable sequences.

    Matches lists, mutable sequences, and deques.
    rB   Né   .)rD   r   ÚlistÚTypingMutableSequenceÚAbcMutableSequencer   r   rw   r    rp   ro   r;   rq   r>   r>   r?   Úis_mutable_sequenceE  s   
û÷r›   c                 C   sr   t | ddƒ}t| ƒp8| tttfv p8| jtu o)|turt|tƒp)|tu o)| jd du p8|t	u p8|tu o8| jd du S )z|A predicate function for sequences.

    Matches lists, sequences, mutable sequences, deques and homogenous
    tuples.
    rB   Nr—   .)
rD   r›   ÚTypingSequencerp   r   rw   r    ro   r;   ÚAbcSequencerq   r>   r>   r?   Úis_sequenceX  s   
ûø	örž   c                 C   s2   | t tfv p| jtu ot| jt ƒpt| dd ƒt u S r€   )r   r   rw   r    ro   rB   rD   rM   r>   r>   r?   Úis_dequem  r‚   rŸ   c                 C   s:   | t ttfv p| jtu ot| jtƒpt| ddƒttt	fv S )ziA predicate function for (mutable) sets.

    Matches built-in sets and sets from the typing module.
    rB   N)
Ú	TypingSetÚTypingMutableSetÚsetrw   r    ro   rB   rD   ÚAbcMutableSetÚAbcSetrM   r>   r>   r?   Úis_mutable_setu  s   

ýúr¥   c                 C   s2   | t tfv p| jtu ot| jt ƒpt| ddƒtu S )zqA predicate function for frozensets.

    Matches built-in frozensets and frozensets from the typing module.
    rB   N)r   Ú	frozensetrw   r    ro   rB   rD   rM   r>   r>   r?   Úis_frozenset„  s
   ÿýr§   c                 C   s"   t | tƒpt| dƒ ot| dƒ S )NrB   r;   )rW   r!   rH   rM   r>   r>   r?   Úis_bare�  s   
ÿr¨   c                 C   s@   | t ttttfv p| jtu ot| jtƒptt	| d| ƒt tt
fƒS )z"A predicate function for mappings.rB   )Údictr   ÚTypingMappingÚTypingMutableMappingÚAbcMutableMappingrw   r    ro   rB   rD   Ú
AbcMappingrM   r>   r>   r?   Ú
is_mapping–  s   

ýÿúr®   c                 C   s   | t tfv pt| dd ƒt u S r€   )r   ÚTypingCounterrD   rM   r>   r>   r?   Ú
is_counter¤  s   ÿr°   c                 C   s,   t | ttfƒpt| tƒot| dƒp| jtu S )z!Whether `type` is a generic type.Ú__orig_bases__)rW   r    r   ro   r   rH   rw   r   rM   r>   r>   r?   Ú
is_genericª  s
   ÿýr²   c                 C   s8   t | ƒrt| S t|tƒrt|ƒdkr|d }| j| S )z#Replace a generic type's arguments.r—   r   )r~   r   rW   rp   r<   rB   )rN   Úargsr>   r>   r?   Ú	copy_withµ  s
   
r´   c                 C   s   t | ||dd�S )NT)Úinclude_extras)r$   )rk   ÚglobalnsÚlocalnsr>   r>   r?   Úget_full_type_hintsÀ  r   r¸   c                 C   s   t | ƒot| jƒS )zIReturn True for both specialized (A[int]) and unspecialized (A) generics.)r²   r0   rB   rM   r>   r>   r?   Úis_generic_attrsÄ  s   r¹   )NN)ÚsysÚcollectionsr   r   Úcollections.abcr   r­   r   r¬   r   rš   r   r£   r   r�   r	   r¤   Údataclassesr
   r   r   r   rL   Ú	functoolsr   Úinspectr   Ú
_signaturer†   r   r’   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r¯   rª   r«   r™   r¡   rœ   r    ri   r%   r&   r'   r(   r)   rh   r*   rS   Ú__all__r“   r2   r-   ÚImportErrorÚversion_infoÚbuiltinsr,   Úexceptiongroupr1   rC   r.   r{   Ú	teLiteralÚaddÚteAnyr¦   r+   rN   r:   Úboolr@   r0   rI   r©   rX   r˜   r/   ro   rs   ru   rv   rx   ÚOriginAbstractSetÚOriginMutableSetrz   r|   ÚFrozenSetSubscriptablerp   ÚTupleSubscriptabler~   r�   r9   r‹   r�   rŽ   r�   r–   r›   rž   rŸ   r¥   r§   r¨   r®   r°   r²   r´   r¸   r¹   r>   r>   r>   r?   Ú<module>   sð    Xÿ
þþÿÿ-		þ		
