o
    "“iÃ  ã                   @  sH   d dl mZ d dlmZ ddlmZmZmZ ddd„Zi fddd„Z	dS )é    )Úannotations)ÚTypeVaré   )Úget_argsÚ
get_originÚ
is_genericÚreturnÚboolc                 C  s.   z|   ¡ W S  ty   t| ddƒdu Y S w )a¡  Does `tvar` have a default?

    In CPython 3.13+ and typing_extensions>=4.12.0:
    - TypeVars have a `no_default()` method for detecting
      if a TypeVar has a default
    - TypeVars with `default=None` have `__default__` set to `None`
    - TypeVars with no `default` parameter passed
      have `__default__` set to `typing(_extensions).NoDefault

    On typing_exensions<4.12.0:
    - TypeVars do not have a `no_default()` method for detecting
      if a TypeVar has a default
    - TypeVars with `default=None` have `__default__` set to `NoneType`
    - TypeVars with no `default` parameter passed
      have `__default__` set to `typing(_extensions).NoDefault
    Ú__default__N)Úhas_defaultÚAttributeErrorÚgetattr)Útvar© r   úT/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cattrs/gen/_generics.pyÚ_tvar_has_default   s
   
þr   ÚclÚtypeÚold_mappingúdict[str, type]c                 C  sü   t |ƒ}t| ƒ}|dur5tt| ƒddƒ}|du rt |ƒS t|t| ƒƒD ]\}}t|tƒr-q#|||j< q#|S t| ƒr|| j	}|D ]=}t
|dƒsFq>|j}	t
|jdƒrT|jj}
ntdd„ |	D ƒƒrkdd„ |	D ƒ}t|Ž \}
}	nq>t|
|	ƒD ]	\}}|||j< qqq>|S )zCGenerate a mapping of typevars to actual types for a generic class.NÚ__parameters__Ú__args__c                 s  s   � | ]}t |ƒV  qd S )N)r   ©Ú.0Úbase_argr   r   r   Ú	<genexpr>>   s   € z#generate_mapping.<locals>.<genexpr>c                 S  s   g | ]}t |ƒr||jf‘qS r   )r   r
   r   r   r   r   Ú
<listcomp>C   s    ýÿz$generate_mapping.<locals>.<listcomp>)Údictr   r   Úzipr   Ú
isinstancer   Ú__name__r   Ú__orig_bases__Úhasattrr   Ú
__origin__r   Úany)r   r   ÚmappingÚoriginÚ
parametersÚpÚtÚ
orig_basesÚbaseÚ	base_argsÚbase_paramsÚmapping_paramsÚparamÚargr   r   r   Úgenerate_mapping    s:   
æ

þÿr1   N)r   r	   )r   r   r   r   r   r   )
Ú
__future__r   Útypingr   Ú_compatr   r   r   r   r1   r   r   r   r   Ú<module>   s
    
