
    i                    J    S SK Jr  S SKJr  SSKJrJrJr  SS jr0 4S	S jjr	g)
    )annotations)TypeVar   )get_args
get_origin
is_genericc                b     U R                  5       $ ! [         a    [        U SS5      SLs $ f = f)am  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)tvars    S/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/cattrs/gen/_generics.py_tvar_has_defaultr      s9    ">!! >t]D1==>s    ..c                   [        U5      n[        U 5      nUbi  [        [        U 5      SS5      nUc  [        U5      $ [        U[	        U 5      5       H*  u  pV[        U[        5      (       a  M  XbUR                  '   M,     U$ [        U 5      (       a  U R                  nU H  n[        US5      (       d  M  UR                  n	[        UR                  S5      (       a  UR                  R                  n
OS[        S U	 5       5      (       a:  U	 Vs/ s H"  n[        U5      (       d  M  XR                   4PM$     nn[        U6 u  pOM  [        X5       H  u  pXUR                  '   M     M     U$ s  snf )zCGenerate a mapping of typevars to actual types for a generic class.N__parameters____args__c              3  8   #    U  H  n[        U5      v   M     g 7f)N)r   ).0base_args     r   	<genexpr>#generate_mapping.<locals>.<genexpr>>   s     KX&x00s   )dictr   r   zipr   
isinstancer   __name__r   __orig_bases__hasattrr   
__origin__r   anyr   r
   )clold_mappingmappingorigin
parameterspt
orig_basesbase	base_argsbase_paramsr   mapping_paramsparamargs                  r   generate_mappingr/       sX   ;G^F Z^-=tD
$$
HRL1DA!W%%"#AJJ 2> N5 
B&&
D4,,It(899"oo<<KKKK %."$-(2 5X334$-  "
 *-n)=&Y!+9
*-' :) . N"s   E0(E0N)returnbool)r!   typer"   dict[str, type]r0   r3   )

__future__r   typingr   _compatr   r   r   r   r/        r   <module>r9      s!    "  6 6>0 ?A /r8   