o
    "i2                     @   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rd 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 eOQeP 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re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 )zReturn 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
-				
