
    -h                        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     [/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/_griffe/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nLt          | t                    r7|                    d t          | j        | j                  D                        |S )Nc                X    i | ]'\  }}t          j        t          |                    |(S  )astliteral_evalstr).0keyr   s      r   
<dictcomp>z_expr_args.<locals>.<dictcomp>-   s/    eee:3S%c#hh//eeer!   )r   r   	argumentsr   nameAttributeErrorr   	Exceptionfunctionparentmodules_collectionr   update
_expr_argsr   zipkeysvalues)r"   argsargument
collectionvars        r   r5   r5       sI   D$!! g 	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(	#	# geeTYX\XcIdIdeeefff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   r5   )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   r5   )r@   r   s     r   _field_argumentsrC   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)r1   r-   default)
annotationkindrM   	docstring)r?   r   getmembersr8   is_attributer   rN   labelsr   r	   r   rC   r   keyword_onlypositional_or_keywordr   r   appendr   r.   rP   )rD   dec_argsrI   
parametersmember
field_argsrO   rM   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.."J7H,IUWXXX$..J4XDDFLYY K%0#$.     r!   rY   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!   )r8   rO   r   positional_onlyrW   rU   )rY   params_dictpos_onlypos_kwrI   r_   s         r   _reorder_parametersrd      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.   rN   rO   rM   re   )lineno	endlinenor2   rY   returns)mro
ValueErrorreversedr    r   extendr\   rT   addr   debugpathr   r   r   r   rV   rd   
set_member)rD   rY   rm   r2   rG   s        r   _set_dataclass_initru      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*   rZ   s     r   
<listcomp>z5_del_members_annotated_as_initvar.<locals>.<listcomp>   s(    ```V*VU^B_B_`&```r!   zdataclasses.InitVar)rR   r8   r   rN   r	   r   
del_memberr.   )rD   
attributesr@   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 )Nrh   )r   rq   r   r   rR   ru   r{   r8   is_aliasis_class_apply_recursivelyr   	is_module)r|   r~   rZ   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   re   c               >    t          |t                                 dS )z\Hook for loaded packages.

        Parameters:
            pkg: The loaded package.
        N)r   set)ri   r   r   s      r   on_package_loadedz&DataclassesExtension.on_package_loaded   s     	3&&&&&r!   N)r   r   r   r   r   re   )__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=   )r@   r   r   r=   )rD   r   r   rE   )rY   rE   r   rE   )rD   r   r   re   )r|   r}   r~   r   r   re   )'
__future__r   r'   
contextlibr   	functoolsr   typingr   r   _griffe.enumerationsr   _griffe.expressionsr	   r
   r   r   _griffe.extensions.baser   _griffe.loggerr   _griffe.modelsr   r   r   r   r   r   r   r    r5   r?   rC   r\   rd   ru   r{   r   r   r&   r!   r   <module>r      s   # " " " " " 



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