
    iKj!                       d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZmZmZ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 ddZddZddZddZ edd       Z!ddZ"ddZ#ddZ$ddZ% G d de      Z&y)    )annotationsN)suppress)cache)Anycast)ParameterKind)ExprExprAttributeExprCallExprDict)	Extension)logger)	AttributeClass	DecoratorFunctionModule	Parameter
Parametersc                    | D ]D  }t        |j                  t              s|j                  j                  dk(  s8|j                  c S  y )Nzdataclasses.dataclass)
isinstancevaluer	   canonical_path)
decorators	decorators     x/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/griffe/_internal/extensions/dataclasses.py_dataclass_decoratorr      s;    	ioot,1O1OSj1j??"       c                   i }t        | t              r-| j                  D ]  }	 |j                  ||j                  <    |S t        | t              ra|j                  t        | j                   | j"                  d      D ci c]$  \  }}t%        j&                  t)        |            |& c}}       |S # t
        $ r t        t              5  | j                  j                  j                  }||j                  j                     }|j                  t        |j                               d d d        n# 1 sw Y   nxY wY "w xY wc c}}w )NF)strict)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X]]# ' K 
D(	#TYYX\XcXclqIrsIr:3S%%c#h/6IrstK " 7i(!%!5!5!H!HJ$X^^%B%BCCKK
399 56 )((7 ts0   B3 )E
3EAD2)	E2D;7EEc                V    t        |       x}rt        |t              rt        |      S i S N)r   r   r   r)   )r   r0   s     r   _dataclass_argumentsr8   1   s+    $Z000jx6P$Ir   c                    | j                   rR| j                   }t        |t              r|j                  }t        |t              r|j
                  dk(  rt        |      S i S )Nzdataclasses.field)r   r   r
   lastr   r   r)   )	attributer   s     r   _field_argumentsr<   7   sM    e]+JJEeX&5+?+?CV+Ve$$Ir   c           
     h   t        | j                        }|j                  d      dk(  rg S |j                  d      dk(  }g }| j                  j	                         D ]R  }|j
                  st        d|      }|j                  *d|j                  v sd|j                  v rd|j                  vrUt        |j                  t              r|j                  j                  d	k(  rd
}t        |      }|j                  d      dk(  r|s|j                  d      dk(  rt        j                  nt        j                  }d|v rt!        |d   g       }n |j                  d|rd n|j"                        }|j%                  t'        |j(                  |j                  |||j*                               U |S )NinitFalsekw_onlyTruer   propertyzclass-attributezinstance-attributezdataclasses.KW_ONLYTdefault_factory)r%   r!   default)
annotationkindrD   	docstring)r8   r   getmembersr,   is_attributer   rE   labelsr   r	   r   r<   r   keyword_onlypositional_or_keywordr   r   appendr   r"   rG   )class_dec_argsr@   
parametersmember
field_argsrF   rD   s           r   _dataclass_parametersrT   A   s    $F$5$56H ||Fw&	 ll9%/G J..'')+v.F   ( V]]* "V]]27KSYS`S`7` &++T2v7H7H7W7W[p7p *&1J ~~f%0
 jnnY76A **"88  !J.-5zJ[?\hj-k$..JDFLLY KK%00#$.._ *r r   c                `   | D ci c]  }|j                   | }}g }g }g }|j                         D ]o  }|j                  t        j                  u r|j                  |       1|j                  t        j                  u r|j                  |       _|j                  |       q ||z   |z   S c c}w r7   )r"   r,   rF   r   positional_onlyrN   rL   )rQ   paramparams_dictpos_onlypos_kwr@   s         r   _reorder_parametersr[      s    2<=*5::u$*K= HFG##%::666OOE"ZZ=555NN5!MM%  & fw&& >s   B+c                F   g }	 | j                         }t        |      D ]M  }t        |j                        s|j                  t        |             | j                  j                  d       O t        | j                        sy t        j                  d| j                         |j                  t        |              t        ddd| t        t        dd t        j                   d       gt#        |       d	      }| j%                  d|       y # t        $ r d}Y w xY w)
N 	dataclasszHandling dataclass: %s__init__r   self)r"   rE   rF   rD   None)lineno	endlinenor&   rQ   returns)mro
ValueErrorreversedr   r   extendrT   rK   addr   debugpathr   r   r   r   rM   r[   
set_member)rO   rQ   re   r&   r>   s        r   _set_dataclass_initrm      s   Jjjl 3- 1 123F;< MMk*     1 12
LL)6;;7 +F34 6d9\9\fjk
 ,
 
D j$'=  s   D D D c                ,   | j                   j                         D cg c]  }t        |t              s| }}|D ]R  }t        |j                  t
              s|j                  j                  dk(  s8| j                  |j                         T y c c}w )Nzdataclasses.InitVar)	rI   r,   r   r   rE   r	   r   
del_memberr"   )rO   rR   
attributesr;   s       r   !_del_members_annotated_as_initvarrq      su    '-~~'<'<'>`'>V*VU^B_&'>J`	i**D1i6J6J6Y6Y]r6rinn-   as
   BBc                   | j                   |v ry |j                  | j                          t        | t              rjd| j                  vrt        |        t        |        | j                  j                         D ](  }|j                  r|j                  st        ||       * y t        | t              rR| j                  j                         D ]4  }|j                  r|j                  s|j                  s)t        ||       6 y y )Nr_   )r   ri   r   r   rI   rm   rq   r,   is_aliasis_class_apply_recursivelyr   	is_module)mod_cls	processedrR   s      r   ru   ru      s    *MM'(()'5!W__,(-g6oo,,.F??v"695 / 
GV	$oo,,.F??(8(8FOO"695 / 
%r   c                      e Zd ZdZddZy)DataclassesExtensionzBuilt-in extension adding support for dataclasses.

    This extension creates `__init__` methods of dataclasses
    if they don't already exist.
    c               ,    t        |t                      y)z\Hook for loaded packages.

        Parameters:
            pkg: The loaded package.
        N)ru   set)r`   pkgkwargss      r   
on_packagezDataclassesExtension.on_package   s     	3&r   N)r}   r   r~   r   returnra   )__name__
__module____qualname____doc__r   r]   r   r   rz   rz      s    'r   rz   )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   )rO   r   r   list[Parameter])rQ   r   r   r   )rO   r   r   ra   )rw   zModule | Classrx   zset[str]r   ra   )'
__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)   r8   r<   rT   r[   rm   rq   ru   rz   r]   r   r   <module>r      s    # 
    7  7 * h h h" F FR'$#(L.6"'9 'r   