
    %j!                       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$d0d&Z% G d' d(e          Z&dS )1    )annotationsN)suppress)cache)Anycast)ParameterKind)ExprExprAttributeExprCallExprDict)	Extension)logger)	AttributeClass	DecoratorFunctionModule	Parameter
Parameters
decoratorslist[Decorator]returnExpr | Nonec                v    | D ]5}t          |j        t                    r|j        j        dk    r	|j        c S 6d S )Nzdataclasses.dataclass)
isinstancevaluer	   canonical_path)r   	decorators     o/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/griffe/_internal/extensions/dataclasses.py_dataclass_decoratorr       sI     # #	iot,, 	#1OSj1j1j?"""4    exprr	   dict[str, str | Expr]c                   i }t          | t                    r| j        D ]}	 |j        ||j        <   # t
          $ ry t          t                    5  | j        j	        j
        }||j        j                 }|                    t          |j                             d d d            n# 1 swxY w Y   Y w xY wnNt          | t                    r9|                    d t          | j        | j        d          D                        |S )Nc                X    i | ]'\  }}t          j        t          |                    |(S  )astliteral_evalstr).0keyr   s      r   
<dictcomp>z_expr_args.<locals>.<dictcomp>-   s/    sss:3S%c#hh//sssr!   F)strict)r   r   	argumentsr   nameAttributeErrorr   	Exceptionfunctionparentmodules_collectionr   update
_expr_argsr   zipkeysvalues)r"   argsargument
collectionvars        r   r6   r6       sO   D$!! u 	7 	7H7&.nX]##! 7 7 7i(( 7 7!%!5!HJ$X^%BCCKK
39 5 56667 7 7 7 7 7 7 7 7 7 7 7 7 7 77	7 
D(	#	# ussTYX\XclqIrIrIrssstttKs4   2B5AB'B5'B++B5.B+/B54B5dict[str, Any]c                p    t          |           x}r$t          |t                    rt          |          S i S )N)r    r   r   r6   )r   r"   s     r   _dataclass_argumentsr@   1   s;    $Z000  jx6P6P  $Ir!   	attributer   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   r6   )rA   r   s     r   _field_argumentsrD   7   s_     %e]++ 	JEeX&& 	%5+?CV+V+Ve$$$Ir!   class_r   list[Parameter]c           
     B   t          | j                  }|                    d          dk    rg S |                    d          dk    }g }| j                                        D ]9}|j        r.t          d|          }|j        #d|j        v sd|j        v r
d|j        vr?t          |j        t                    r|j        j        d	k    rd
}lt          |          }|                    d          dk    r|s|                    d          dk    rt          j        nt          j        }d|v rt!          |d         g           }n|                    d|rd n|j                  }|                    t'          |j        |j        |||j                             ;|S )NinitFalsekw_onlyTruer   propertyzclass-attributezinstance-attributezdataclasses.KW_ONLYTdefault_factory)r2   r.   default)
annotationkindrN   	docstring)r@   r   getmembersr9   is_attributer   rO   labelsr   r	   r   rD   r   keyword_onlypositional_or_keywordr   r   appendr   r/   rQ   )rE   dec_argsrJ   
parametersmember
field_argsrP   rN   s           r   _dataclass_parametersr]   A   s    $F$566H ||Fw&&	 ll9%%/G J.'')) 7 7 6	+v..F  ( V]** "V]227KSYS`7`7` &+T22 v7H7W[p7p7p *&11J ~~f%%00
 9(nnY776AA **"8  !J..-5zJ[?\hj-k-k-k$..J4XDDFLYY K%0#$.     r!   rZ   c                2   d | D             }g }g }g }|                                 D ]i}|j        t          j        u r|                    |           +|j        t          j        u r|                    |           T|                    |           j||z   |z   S )Nc                    i | ]
}|j         |S r&   )r/   )r*   params     r   r,   z'_reorder_parameters.<locals>.<dictcomp>   s    ===5:u===r!   )r9   rP   r   positional_onlyrX   rV   )rZ   params_dictpos_onlypos_kwrJ   r`   s         r   _reorder_parametersre      s    ==*===K HFG##%% ! !:666OOE""""Z=555NN5!!!!MM%    fw&&r!   Nonec                ~   g }	 |                                  }n# t          $ r d}Y nw xY wt          |          D ]R}t          |j                  r<|                    t          |                     | j                            d           St          | j                  sd S t          j
        d| j                   |                    t          |                      t          ddd| t          t          dd t          j        d           gt#          |          R  d	          }|                     d|           d S )
Nr&   	dataclasszHandling dataclass: %s__init__r   self)r/   rO   rP   rN   rf   )lineno	endlinenor3   rZ   returns)mro
ValueErrorreversedr    r   extendr]   rU   addr   debugpathr   r   r   r   rW   re   
set_member)rE   rZ   rn   r3   rH   s        r   _set_dataclass_initrv      sj   Jjjll   3-- + + 122 	+3F;;<<< Mk***   122 
L)6;777 +F33444 6d9\fjkkk
 ,,
 
 
 
 
 
D j$'''''s    ((c                    d | j                                         D             }|D ]F}t          |j        t                    r*|j        j        dk    r|                     |j                   Gd S )Nc                <    g | ]}t          |t                    |S r&   )r   r   )r*   r[   s     r   
<listcomp>z5_del_members_annotated_as_initvar.<locals>.<listcomp>   s(    ```V*VU^B_B_`&```r!   zdataclasses.InitVar)rS   r9   r   rO   r	   r   
del_memberr/   )rE   
attributesrA   s      r   !_del_members_annotated_as_initvarr|      sy    ``v~'<'<'>'>```J . .	i*D11 	.i6J6Y]r6r6rin---. .r!   mod_clsModule | Class	processedset[str]c                   | j         |v rd S |                    | j                    t          | t                    rcd| j        vrt          |            t          |            | j                                        D ] }|j        s|j	        rt          ||           !d S t          | t                    rA| j                                        D ])}|j        s|j        s|j	        rt          ||           (d S d S )Nri   )r   rr   r   r   rS   rv   r|   r9   is_aliasis_class_apply_recursivelyr   	is_module)r}   r   r[   s      r   r   r      s#   **MM'()))'5!! 
6W_,,(((-g666o,,.. 	6 	6F? 6v 6"69555	6 	6 
GV	$	$ 6o,,.. 	6 	6F? 6(8 6FO 6"695556 6	6 	6r!   c                      e Zd ZdZd
dZd	S )DataclassesExtensionzBuilt-in extension adding support for dataclasses.

    This extension creates `__init__` methods of dataclasses
    if they don't already exist.
    pkgr   kwargsr   r   rf   c               >    t          |t                                 dS )z\Hook for loaded packages.

        Parameters:
            pkg: The loaded package.
        N)r   set)rj   r   r   s      r   
on_packagezDataclassesExtension.on_package   s     	3&&&&&r!   N)r   r   r   r   r   rf   )__name__
__module____qualname____doc__r   r&   r!   r   r   r      s2         ' ' ' ' ' 'r!   r   )r   r   r   r   )r"   r	   r   r#   )r   r   r   r>   )rA   r   r   r>   )rE   r   r   rF   )rZ   rF   r   rF   )rE   r   r   rf   )r}   r~   r   r   r   rf   )'
__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    r6   r@   rD   r]   re   rv   r|   r   r   r&   r!   r   <module>r      s   # " " " " " 



                     7 7 7 7 7 7            7 6 6 6 6 6 * * * * * * h h h h h h h h h h h h h h h h h h      "       F F F FR' ' ' '$#( #( #( #(L. . . .6 6 6 6"' ' ' ' '9 ' ' ' ' 'r!   