
    i                        S SK Jr  S SKrS SKJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJrJrJrJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJr  SS jrSS jrSS jrSS jr \SS j5       r!SS jr"SS jr#SS jr$SS jr% " S S\5      r&g)    )annotationsN)suppress)cache)Anycast)ParameterKind)ExprExprAttributeExprCallExprDict)	Extension)logger)	AttributeClass	DecoratorFunctionModule	Parameter
Parametersc                    U  HL  n[        UR                  [        5      (       d  M$  UR                  R                  S:X  d  M@  UR                  s  $    g )Nzdataclasses.dataclass)
isinstancevaluer	   canonical_path)
decorators	decorators     a/home/james-whalen/.local/lib/python3.13/site-packages/griffe/_internal/extensions/dataclasses.py_dataclass_decoratorr      s>    	ioot,,1O1OSj1j??"       c                   0 n[        U [        5      (       a.  U R                   H  n UR                  XR                  '   M     U$ [        U [        5      (       ab  UR                  [        U R                   U R"                  5       VVs0 s H%  u  pV[$        R&                  " [)        U5      5      U_M'     snn5        U$ ! [
         a    [        [        5         U R                  R                  R                  nX2R                  R                     nUR                  [        UR                  5      5        S S S 5         GM  ! , (       d  f        GM.  = ff = fs  snnf N)r   r   	argumentsr   nameAttributeErrorr   	Exceptionfunctionparentmodules_collectionr   update
_expr_argsr   zipkeysvaluesastliteral_evalstr)exprargsargument
collectionvarkeyr   s          r   r)   r)       s    D$!!H7&.nn]]# ' K 
D(	#	#TYYX\XcXcIdeId:3S%%c#h/6IdefK " 7i(!%!5!5!H!HJ$^^%B%BCCKK
399 56 )(((7 fs0   B?	,E
?EAE5E
EEEc                j    [        U 5      =n(       a   [        U[        5      (       a  [        U5      $ 0 $ r    )r   r   r   r)   )r   r0   s     r   _dataclass_argumentsr7   1   s.    $Z000jx6P6P$Ir   c                    U R                   (       a]  U R                   n[        U[        5      (       a  UR                  n[        U[        5      (       a  UR
                  S:X  a  [        U5      $ 0 $ )Nzdataclasses.field)r   r   r
   lastr   r   r)   )	attributer   s     r   _field_argumentsr;   7   sS    e]++JJEeX&&5+?+?CV+Ve$$Ir   c                   [        U R                  5      nUR                  S5      S:X  a  / $ UR                  S5      S:H  n/ nU R                  R	                  5        GHr  nUR
                  (       d  M  [        SU5      nUR                  c  M2  SUR                  ;   d   SUR                  ;   a  SUR                  ;  a  Md  [        UR                  [        5      (       a  UR                  R                  S	:X  a  S
nM  [        U5      nUR                  S5      S:X  a  M  U(       d  UR                  S5      S:X  a  [        R                  O[        R                  nSU;   a  [!        US   / S9nO%UR                  SU(       a  S OUR"                  5      nUR%                  ['        UR(                  UR                  UUUR*                  S95        GMu     U$ )NinitFalsekw_onlyTruer   propertyzclass-attributezinstance-attributezdataclasses.KW_ONLYTdefault_factory)r%   r!   default)
annotationkindrC   	docstring)r7   r   getmembersr,   is_attributer   rD   labelsr   r	   r   r;   r   keyword_onlypositional_or_keywordr   r   appendr   r"   rF   )class_dec_argsr?   
parametersmember
field_argsrE   rC   s           r   _dataclass_parametersrS   A   s    $F$5$56H ||Fw&	 ll9%/G J..'')+v.F   ( V]]* "V]]27KSYS`S`7` &++T22v7H7H7W7W[p7p *&1J ~~f%0
 jnnY76A **"88  !J.-5zJ[?\hj-k$..JDFLLY KK%00#$.._ *r r   c                n   U  Vs0 s H  oR                   U_M     nn/ n/ n/ nUR                  5        Ht  nUR                  [        R                  L a  UR                  U5        M3  UR                  [        R                  L a  UR                  U5        Mc  UR                  U5        Mv     X4-   U-   $ s  snf r    )r"   r,   rE   r   positional_onlyrM   rK   )rP   paramparams_dictpos_onlypos_kwr?   s         r   _reorder_parametersrZ      s    2<=*::u$*K= HFG##%::666OOE"ZZ=555NN5!MM%  & w&& >s   B2c                X   / n U R                  5       n[        U5       HT  n[        UR                  5      (       d  M  UR                  [        U5      5        U R                  R                  S5        MV     [        U R                  5      (       d  g [        R                  " SU R                  5        UR                  [        U 5      5        [        SSSU [        [        SS [        R                   S S9/[#        U5      Q76 SS	9nU R%                  SU5        g ! [         a    Sn GNf = f)
N 	dataclasszHandling dataclass: %s__init__r   self)r"   rD   rE   rC   None)lineno	endlinenor&   rP   returns)mro
ValueErrorreversedr   r   extendrS   rJ   addr   debugpathr   r   r   r   rL   rZ   
set_member)rN   rP   rd   r&   r=   s        r   _set_dataclass_initrl      s   Jjjl 3- 1 1223F;< MMk*     1 122
LL)6;;7 +F34 6d9\9\fjk
 ,
 
D j$'=  s   D D)(D)c                R   U R                   R                  5        Vs/ s H  n[        U[        5      (       d  M  UPM     nnU H[  n[        UR                  [
        5      (       d  M$  UR                  R                  S:X  d  M@  U R                  UR                  5        M]     g s  snf )Nzdataclasses.InitVar)	rH   r,   r   r   rD   r	   r   
del_memberr"   )rN   rQ   
attributesr:   s       r   !_del_members_annotated_as_initvarrp      sx    '-~~'<'<'>`'>V*VU^B_&'>J`	i**D11i6J6J6Y6Y]r6rinn-   as
   B$B$c                j   U R                   U;   a  g UR                  U R                   5        [        U [        5      (       ay  SU R                  ;  a  [        U 5        [        U 5        U R                  R                  5        H4  nUR                  (       a  M  UR                  (       d  M)  [        X!5        M6     g [        U [        5      (       ad  U R                  R                  5        HE  nUR                  (       a  M  UR                  (       d  UR                  (       d  M:  [        X!5        MG     g g )Nr^   )r   rh   r   r   rH   rl   rp   r,   is_aliasis_class_apply_recursivelyr   	is_module)mod_cls	processedrQ   s      r   rt   rt      s    *MM'(()'5!!W__,(-g6oo,,.F???v"65 / 
GV	$	$oo,,.F???(8(8FOOO"65 / 
%r   c                  "    \ rS rSrSrSS jrSrg)DataclassesExtension   zBuilt-in extension adding support for dataclasses.

This extension creates `__init__` methods of dataclasses
if they don't already exist.
c               ,    [        U[        5       5        g)zDHook for loaded packages.

Parameters:
    pkg: The loaded package.
N)rt   set)r_   pkgkwargss      r   
on_packageDataclassesExtension.on_package   s     	3&r   r\   N)r}   r   r~   r   returnr`   )__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r\   r   r   ry   ry      s    'r   ry   )r   list[Decorator]r   zExpr | None)r0   r	   r   zdict[str, str | Expr])r   r   r   dict[str, Any])r:   r   r   r   )rN   r   r   list[Parameter])rP   r   r   r   )rN   r   r   r`   )rv   zModule | Classrw   zset[str]r   r`   )'
__future__r   r-   
contextlibr   	functoolsr   typingr   r   griffe._internal.enumerationsr   griffe._internal.expressionsr	   r
   r   r    griffe._internal.extensions.baser   griffe._internal.loggerr   griffe._internal.modelsr   r   r   r   r   r   r   r   r)   r7   r;   rS   rZ   rl   rp   rt   ry   r\   r   r   <module>r      s    # 
    7  7 * h h h" F FR'$#(L.6"'9 'r   