§
    ñyIf¾V  ã                  ó  — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZmZ edeed         ej         f         eed         ej!        f         f         Z" e#d¦  «        Z$dZ% e#d¦  «        Z&dZ'e$fdJd„Z(dKd„Z)	 dLdMd „Z*dNd!„Z+dOd#„Z,dPd(„Z-dQd,„Z.dRd0„Z/	 dSdTd5„Z0	 dSdUd7„Z1e$fdVd9„Z2dWd:„Z3	 dXdYd=„Z4dZd@„Z5d[dA„Z6d[dB„Z7d[dC„Z8 e#dD¦  «        Z9	 dSd\dF„Z:d]dI„Z;dS )^a>  
Astroid hook for the dataclasses library.

Support built-in dataclasses, pydantic.dataclasses, and marshmallow_dataclass-annotated
dataclasses. References:
- https://docs.python.org/3/library/dataclasses.html
- https://pydantic-docs.helpmanual.io/usage/dataclasses/
- https://lovasoa.github.io/marshmallow_dataclass/
é    )Úannotations)ÚIterator)ÚLiteralÚTupleÚUnion)ÚbasesÚcontextÚnodes)Úparse)Ú	PY39_PLUSÚ
PY310_PLUS)ÚAstroidSyntaxErrorÚInferenceErrorÚUseInferenceDefault)Úinference_tip)ÚAstroidManager)ÚInferenceResult)ÚUninferableÚUninferableBaseÚ
safe_inferNÚdefaultÚdefault_factory)Ú	dataclassÚfield)ÚdataclassesÚmarshmallow_dataclasszpydantic.dataclassesÚ_HAS_DEFAULT_FACTORYÚnodeúnodes.ClassDefÚdecorator_namesúfrozenset[str]ÚreturnÚboolc                ó”   ‡— t          | t          j        ¦  «        r| j        sdS t	          ˆfd„| j        j        D ¦   «         ¦  «        S )zDReturn True if a decorated node has a `dataclass` decorator applied.Fc              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S ©N)Ú_looks_like_dataclass_decorator)Ú.0Údecorator_attributer    s     €úS/var/www/piapp/venv/lib/python3.11/site-packages/astroid/brain/brain_dataclasses.pyú	<genexpr>z.is_decorated_with_dataclass.<locals>.<genexpr>2   sB   øè è € ð ð àõ 	(Ð(;¸_ÑMÔMðð ð ð ð ð ó    )Ú
isinstancer
   ÚClassDefÚ
decoratorsÚany)r   r    s    `r*   Úis_decorated_with_dataclassr1   +   sd   ø€ õ �d�EœNÑ+Ô+ð °4´?ð Øˆuåð ð ð ð à#'¤?Ô#8ðñ ô ñ ô ð r,   ÚNonec           	     ó¦  — d| _         t          | ¦  «        D ][}|j        j        }t	          j        |j        |j        |¬¦  «        }t          ¦   «          	                    |¦  «        }|g| j
        |<   Œ\t          | ¦  «        sdS d}t          rg| j        j        r[| j        j        D ]N}t          |t          j        ¦  «        sd} n/|j        D ]&}|j        dk    r|j                             ¦   «         }Œ'ŒOt)          | t+          t          | d¬¦  «        ¦  «        |¦  «        }	 t-          |¦  «        d         }| |_        d\  |_        |_        |g| j        d<   |                      ¦   «         }	t4          |	j        vrFt-          t4          › d	�¦  «        j        d
         }
|	|
_        |
j        d
         g|	j        t4          <   dS dS # t:          $ r Y dS w xY w)z6Rewrite a dataclass to be easily understood by pylint.T)ÚlinenoÚ
col_offsetÚparentNFÚkw_only)ÚinitÚ__init__©NNz = object()r   )Úis_dataclassÚ_get_dataclass_attributesÚtargetÚnamer
   ÚUnknownr4   r5   r   Úvisit_transformsÚinstance_attrsÚ_check_generate_dataclass_initr   r/   r-   ÚCallÚkeywordsÚargÚvalueÚ
bool_valueÚ_generate_dataclass_initÚlistr   r6   ÚlocalsÚrootÚDEFAULT_FACTORYÚbodyÚtargetsr   )r   Úassign_noder>   Úrhs_nodeÚkw_only_decoratedÚ	decoratorÚkeywordÚinit_strÚ	init_noderK   Ú
new_assigns              r*   Údataclass_transformrW   8   s  € à€DÔå0°Ñ6Ô6ð 	/ð 	/ˆØÔ!Ô&ˆå”=ØÔ%Ø"Ô-Øð
ñ 
ô 
ˆõ
 "Ñ#Ô#×4Ò4°XÑ>Ô>ˆØ%- JˆÔ˜DÑ!Ð!å)¨$Ñ/Ô/ð ØˆàÐÝð C�d”oÔ+ð CØœÔ.ð 	Cð 	CˆIÝ˜i­¬Ñ4Ô4ð Ø$)Ð!Ø�Ø$Ô-ð Cð C�Ø”; )Ò+Ð+Ø(/¬×(@Ò(@Ñ(BÔ(BÐ%øðCõ (ØÝÕ& t°$Ð7Ñ7Ô7Ñ8Ô8Øñô €HðCÝ˜(‘O”O JÔ/ˆ	ð  ˆ	ÔØ1;Ñ.ˆ	Ô˜)Ô.Ø#, +ˆŒ�JÑà�yŠy‰{Œ{ˆÝ $¤+Ð-Ð-Ý¥/Ð>Ð>Ð>Ñ?Ô?ÔDÀQÔGˆJØ $ˆJÔØ,6Ô,>¸qÔ,AÐ+BˆDŒK�Ñ(Ð(Ð(ð .Ð-øõ ð ð ð Øˆˆðøøøs   Ä"G Ç
GÇGFr8   úIterator[nodes.AnnAssign]c              #  ó  K  — | j         D ]�}t          |t          j        ¦  «        rt          |j        t          j        ¦  «        sŒ<t          |j        ¦  «        rŒQt          |j        ¦  «        rŒf|st          |j        ¦  «        rŒ}|V — Œ‚dS )zqYield the AnnAssign nodes of dataclass attributes for the node.

    If init is True, also include InitVars.
    N)
rM   r-   r
   Ú	AnnAssignr=   Ú
AssignNameÚ_is_class_varÚ
annotationÚ_is_keyword_only_sentinelÚ_is_init_var)r   r8   rO   s      r*   r<   r<   j   s¶   è è € ð ”yð ð ˆÝ˜+¥u¤Ñ7Ô7ð 	½zØÔ¥Ô 0ñ@
ô @
ð 	ð õ ˜Ô/Ñ0Ô0ð 	Øå$ [Ô%;Ñ<Ô<ð 	Øð ð 	� [Ô%;Ñ<Ô<ð 	ØàÐÐÐÐð#ð r,   c                óØ   — d| j         v rdS d}| j        j        D ].}t          |t          j        ¦  «        sŒt          |¦  «        r|}Œ/|€dS t          d„ |j        D ¦   «         ¦  «         S )zèReturn True if we should generate an __init__ method for node.

    This is True when:
        - node doesn't define its own __init__ method
        - the dataclass decorator was called *without* the keyword argument init=False
    r9   FNTc              3  ó`   K  — | ])}|j         d k    o|j                             ¦   «          V — Œ*dS ©r8   N©rE   rF   rG   ©r(   rS   s     r*   r+   z1_check_generate_dataclass_init.<locals>.<genexpr>œ   sX   è è € ð ð ð ð 	Œ�vÒð 	+Ø”×(Ò(Ñ*Ô*Ð*ðð ð ð ð ð r,   )rJ   r/   r
   r-   rC   r'   r0   rD   )r   Úfoundr)   s      r*   rB   rB   …   s¢   € ð �T”[Ð Ð Øˆuà€Eà#œÔ4ð (ð (ÐÝÐ-­u¬zÑ:Ô:ð 	Øå*Ð+>Ñ?Ô?ð 	(Ø'ˆEøà€}Øˆtõ ð ð ð ”~ðñ ô ñ ô ð ð r,   úYtuple[dict[str, tuple[str | None, str | None]], dict[str, tuple[str | None, str | None]]]c                óh  — i }i }t          |                      ¦   «         ¦  «        D ]‰}|j        sŒ
	 |j        d         d         }n# t          $ r Y Œ+w xY w|j                             ¦   «         \  }}|                     ¦   «         D ]
\  }}|||<   Œ|                     ¦   «         D ]
\  }	}|||	<   ŒŒŠ||fS )z<Iterate through all bases and get their typing and defaults.r9   r   )ÚreversedÚmror;   rJ   ÚKeyErrorÚargsÚ_get_arguments_dataÚitems)
r   Úpos_only_storeÚkw_only_storeÚbaseÚ	base_initÚpos_onlyr7   ÚposargÚdataÚkwargs
             r*   Ú!_find_arguments_from_base_classesrv   £   sõ   € ð @B€NØ>@€Mõ ˜Ÿš™œÑ$Ô$ð (ð (ˆØÔ ð 	Øð	Ø+/¬;°zÔ+BÀ1Ô+EˆIˆIøÝð 	ð 	ð 	ØˆHð	øøøð &œN×>Ò>Ñ@Ô@Ñˆ�'Ø$ŸNšNÑ,Ô,ð 	*ð 	*‰LˆF�Dð &*ˆN˜6Ñ"Ð"à"Ÿ=š=™?œ?ð 	(ð 	(‰KˆE�4Ø#'ˆM˜%Ñ Ð ð	(à˜=Ð(Ð(s   ±AÁ
AÁArn   ú(dict[str, tuple[str | None, str | None]]ro   útuple[str, str]c                óT  — d\  }}|                       ¦   «         D ];\  }}||z  }|d         r|d|d         z   z  }|d         r|d|d         z   z  }|dz  }Œ<|                      ¦   «         D ];\  }}||z  }|d         r|d|d         z   z  }|d         r|d|d         z   z  }|dz  }Œ<||fS )zKParse positional and keyword arguments into strings for an __init__ method.)Ú rz   r   ú: é   ú = ú, )rm   )rn   ro   rr   r7   Úpos_argrt   Úkw_args          r*   Ú_parse_arguments_into_stringsr�   Æ   sú   € ð
 Ñ€HˆgØ'×-Ò-Ñ/Ô/ð ð ‰ˆ�Ø�GÑˆØ�Œ7ð 	'Ø˜˜t Aœw™Ñ&ˆHØ�Œ7ð 	(Ø˜  Q¤™Ñ'ˆHØ�DÑˆˆØ%×+Ò+Ñ-Ô-ð ð ‰ˆ�Ø�6ÑˆØ�Œ7ð 	&Ø�t˜d 1œg‘~Ñ%ˆGØ�Œ7ð 	'Ø�u˜t Aœw‘Ñ&ˆGØ�4‰ˆˆà�WÐÐr,   r>   Ústrúnodes.NodeNG | Nonec                ó®  — t          |                      ¦   «         ¦  «        D ]²}|j        sŒ
||j        v rŸ|j        |         D ]‘}t	          |j        t          j        ¦  «        rp|j        j        rdt	          |j        j        t          j	        ¦  «        r@t          |j        j        ¦  «        r't          |j        j        ¦  «        }|r|d         c c S Œ’Œ³dS )z4Get the default value of a previously defined field.r|   N)rh   ri   r;   rJ   r-   r6   r
   rZ   rF   rC   Ú _looks_like_dataclass_field_callÚ_get_field_default)r   r>   rp   Úassignr   s        r*   Ú_get_previous_field_defaultrˆ   Þ   sà   € å˜Ÿš™œÑ$Ô$ð *ð *ˆØÔ ð 	ØØ�4”;ÐÐØœ+ dÔ+ð 	*ð 	*�å˜vœ}­e¬oÑ>Ô>ð*àœÔ+ð*õ # 6¤=Ô#6½¼
ÑCÔCð*õ 9¸¼Ô9LÑMÔMð	*õ 1°´Ô1DÑEÔE�GØð *Ø& qœzÐ)Ð)Ð)Ð)Ð)øøØˆ4r,   Úassignsúlist[nodes.AnnAssign]rQ   c                óÐ  — g }g }g }t          | ¦  «        \  }}|D �]5}|j        j        |j        |j        }}
}	d}| j        |	         D ]?}t          |t          j        ¦  «        sŒ|j	        sŒ%d| 
                    ¦   «         v r|} nŒ@t          |t          j        ¦  «        ot          |d¬¦  «        }|rKt          d„ |j        D ¦   «         ¦  «        r-|                     |	d¦  «         |                     |	d¦  «         Œät!          |
¦  «        r)d}t          |
t          j        ¦  «        r|
j        }
nd}
d}n
d}d|	› d	|	› �}d
\  }}|
�|
                     ¦   «         }|r~|rgt)          |¦  «        }|rU|\  }}|dk    r|                     ¦   «         }nÍ|dk    r/t*          }d|	› d	|                     ¦   «         › d|	› dt*          › d|	› �
}n—|                     ¦   «         }n‚|rZ	 t-          t/          |                     d¦  «        ¦  «                             ¦   «         ¦  «        }n=# t2          t4          f$ r Y n*w xY wt7          | |	¦  «        }|r|                     ¦   «         }|	}|�|d|› �z  }|�|d	|› �z  }|r_d„ |j        D ¦   «         }|rL|d         j                             ¦   «         r|                     |¦  «         n|                     |¦  «         �Œº|r"|	|v r||f||	<   nV|                     |¦  «         n@|	|v r||f||	<   n4|	|v r|	g|¢}|                     |	¦  «         n|                     |¦  «         |s|                     |¦  «         �Œ7t=          ||¦  «        \  }}d|v rdnd}||d                     |¦  «        z   z  }|                      d¦  «        s|dz  }|s|r|dz  }||› d                     |¦  «        › �z  }|rd                     |¦  «        nd}d|› d|› �S )z8Return an init method for a dataclass given the targets.Nzbuiltins.propertyF)Úcheck_scopec              3  ó`   K  — | ])}|j         d k    o|j                             ¦   «          V — Œ*dS rb   rc   rd   s     r*   r+   z+_generate_dataclass_init.<locals>.<genexpr>  sS   è è € ð ð àð ”˜vÒ%ÐH¨g¬m×.FÒ.FÑ.HÔ.HÐ*Hðð ð ð ð ð r,   Trz   zself.r}   r:   r   r   z if z is z else r{   c                ó(   — g | ]}|j         d k    ¯|‘ŒS )r7   )rE   )r(   Úks     r*   ú
<listcomp>z,_generate_dataclass_init.<locals>.<listcomp>T  s$   € ÐGÐGÐG˜Q°A´E¸YÒ4FÐ4F�qÐ4FÐ4FÐ4Fr,   r   Úselfzself, r~   z*, z
    Úpasszdef __init__(z) -> None:
    )!rv   r=   r>   r]   rF   rJ   r-   r
   ÚFunctionDefr/   ÚdecoratornamesrC   r…   r0   rD   Úpopr_   Ú	SubscriptÚsliceÚ	as_stringr†   rL   r‚   ÚnextÚinfer_call_resultr   ÚStopIterationrˆ   rG   Úappendr�   ÚjoinÚendswith)r   r‰   rQ   ÚparamsÚkw_only_paramsÚassignmentsÚprev_pos_only_storeÚprev_kw_only_storer‡   r>   r]   rF   Úproperty_nodeÚadditional_assignÚis_fieldÚinit_varÚassignment_strÚann_strÚdefault_strÚresultÚdefault_typeÚdefault_nodeÚprevious_defaultÚ	param_strr7   Úprev_pos_onlyÚprev_kw_onlyÚparams_stringÚassignments_strings                                r*   rH   rH   ñ   ss  € ð €FØ "€NØ€Kå.OÐPTÑ.UÔ.UÑ+ÐÐ+àð r/ñ r/ˆØ"(¤-Ô"4°fÔ6GÈÌ˜%ˆjˆð 37ˆØ!%¤¨TÔ!2ð 	ð 	ÐÝÐ/µÔ1BÑCÔCð ØØ$Ô/ð ØØ"Ð&7×&FÒ&FÑ&HÔ&HÐHÐHØ 1�Ø�ð Iõ ˜e¥U¤ZÑ0Ô0ð 
Õ5UØ˜uð6
ñ 6
ô 6
ˆð ð 		åð ð à$œ~ðñ ô ñ ô ð ð
 $×'Ò'¨¨dÑ3Ô3Ð3Ø"×&Ò& t¨TÑ2Ô2Ð2Øå˜
Ñ#Ô#ð 
	5ØˆHÝ˜*¥e¤oÑ6Ô6ð "Ø'Ô-�
�
ð "�
ØˆNˆNàˆHØ4 TÐ4Ð4¨dÐ4Ð4ˆNà)Ñˆ�ØÐ!Ø ×*Ò*Ñ,Ô,ˆGàð  	;Øð 0Ý+¨EÑ2Ô2�Øð 	Ø17Ñ.�L ,Ø# yÒ0Ð0Ø&2×&<Ò&<Ñ&>Ô&>˜˜Ø%Ð):Ò:Ð:Ý&5˜ðJ Dð Jð J¨\×-CÒ-CÑ-EÔ-Eð Jð JØ"&ðJð JÝ,;ðJð JØCGðJð Jð 'øð
 $ŸošoÑ/Ô/��Øð 	;ðå!Ý˜×8Ò8¸Ñ>Ô>Ñ?Ô?×IÒIÑKÔKñô ��øõ #¥MÐ2ð ð ð Ø�ðøøøõ  ;¸4ÀÑFÔFÐØð ;Ø.×8Ò8Ñ:Ô:�ð ˆ	ØÐØ˜˜g˜˜Ñ'ˆIØÐ"ØÐ,˜{Ð,Ð,Ñ,ˆIð ð 	ØGÐG %¤.ÐGÑGÔGˆGØð Ø˜1”:Ô#×.Ò.Ñ0Ô0ð -Ø"×)Ò)¨)Ñ4Ô4Ð4Ð4à—M’M )Ñ,Ô,Ð,Ùàð 	)ØÐ)Ð)Ð)Ø,3°[Ð+AÐ" 4Ñ(Ð(à×%Ò% iÑ0Ô0Ð0Ð0ð Ð*Ð*Ð*Ø-4°kÐ,BÐ# DÑ)Ð)ØÐ+Ð+Ð+Ø˜ ˜�Ø"×&Ò& tÑ,Ô,Ð,Ð,à—’˜iÑ(Ô(Ð(àð 	/Ø×Ò˜~Ñ.Ô.Ð.ùå"?ØÐ/ñ#ô #Ñ€M�<ð ! MÐ1Ð1�B�B°x€MØ�] T§Y¢Y¨vÑ%6Ô%6Ñ6Ñ6€MØ×!Ò! $Ñ'Ô'ð Ø˜Ñˆð ð �~ð Ø˜ÑˆØ˜ÐA d§i¢i°Ñ&?Ô&?ÐAÐAÑA€Mà7BÐN˜Ÿš {Ñ3Ô3Ð3ÈÐØN˜=ÐNÐNÐ:LÐNÐNÐNs   ÇAH!È!H5È4H5únodes.UnknownÚctxúcontext.InferenceContext | NoneúIterator[InferenceResult]c              #  ó  K  — | j         }t          |t          j        ¦  «        st          V — dS |j        |j        }}|�|                     |¬¦  «        E d{V —† |�t          ||¬¦  «        E d{V —† dS t          V — dS )zñInference tip for an Unknown node that was dynamically generated to
    represent a dataclass attribute.

    In the case that a default value is provided, that is inferred first.
    Then, an Instance of the annotated class is yielded.
    N©r	   )rµ   )	r6   r-   r
   rZ   r   r]   rF   ÚinferÚ_infer_instance_from_annotation)r   rµ   r‡   r]   rF   s        r*   Úinfer_dataclass_attributer¼   „  s±   è è € ð Œ[€FÝ�f�eœoÑ.Ô.ð ÝÐÐÐØˆàÔ)¨6¬<�€JØÐØ—;’; s�;Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÐÝ2°:À3ÐGÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGåÐÐÐÐÐr,   ú
nodes.Callc              #  óª  K  — t          | j        t          j        t          j        f¦  «        st
          ‚t          | ¦  «        }|st          V — dS |\  }}|dk    r|                     |¬¦  «        E d{V —† dS t          | 
                    ¦   «         ¦  «        j        d         j        }| j        |_        |                     |¬¦  «        E d{V —† dS )z(Inference tip for dataclass field calls.r   r¹   Nr   )r-   r6   r
   rZ   ÚAssignr   r†   r   rº   r   r˜   rM   rF   )r   rµ   r«   r¬   r   Únew_calls         r*   Úinfer_dataclass_field_callrÁ   ›  sì   è è € õ �d”k¥E¤OµU´\Ð#BÑCÔCð "Ý!Ð!Ý Ñ%Ô%€FØð 	3ÝÐÐÐÐÐà &Ñˆ�gØ˜9Ò$Ð$Ø—}’}¨S�}Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1å˜W×.Ò.Ñ0Ô0Ñ1Ô1Ô6°qÔ9Ô?ˆHØ"œkˆHŒOØ—~’~¨c�~Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r,   únodes.NodeNGc                ó  — t          | t          j        ¦  «        r| j        } 	 t	          |                      ¦   «         ¦  «        }n# t          t          f$ r
 t          }Y nw xY wt          |t          ¦  «        rHt          | t          j
        ¦  «        r	| j        |v S t          | t          j        ¦  «        r	| j        |v S dS t          |t          j        ¦  «        o(|j        |v o|                     ¦   «         j        t           v S )z¦Return True if node looks like a dataclass decorator.

    Uses inference to lookup the value of the node, and if that fails,
    matches against specific names.
    F)r-   r
   rC   Úfuncr™   rº   r   r›   r   r   ÚNamer>   Ú	AttributeÚattrnamer“   rK   ÚDATACLASS_MODULES)r   r    Úinferreds      r*   r'   r'   ®  sþ   € õ �$�œ
Ñ#Ô#ð ØŒyˆðÝ˜Ÿ
š
™œÑ%Ô%ˆˆøÝ�MÐ*ð ð ð Ýˆˆˆðøøøõ �(�OÑ,Ô,ð Ý�d�EœJÑ'Ô'ð 	0Ø”9 Ð/Ð/Ý�d�EœOÑ,Ô,ð 	4Ø”= OÐ3Ð3àˆuõ 	�8�UÔ.Ñ/Ô/ð 	6ØŒM˜_Ð,ð	6à�MŠM‰OŒOÔ Õ$5Ð5ðs   £!A ÁA ÁA c                óÆ   — | j         }|sdS |                     ¦   «         }t          |t          j        ¦  «        o(t          |t          j        ¦  «        ot          |¦  «        S )z^Return True if node was dynamically generated as the child of an AnnAssign
    statement.
    F)r6   Úscoper-   r
   rZ   r.   r1   )r   r6   rË   s      r*   Ú_looks_like_dataclass_attributerÌ   Ì  s]   € ð Œ[€FØð Øˆuà�LŠL‰NŒN€Eå�6�5œ?Ñ+Ô+ð 	/Ý�u�eœnÑ-Ô-ð	/å'¨Ñ.Ô.ðr,   TrŒ   c                ó  — |rt|                       ¦   «         }|                     ¦   «         }t          |t          j        ¦  «        r0|j        �)t          |t          j        ¦  «        rt          |¦  «        sdS 	 t          | j	         
                    ¦   «         ¦  «        }n# t          t          f$ r Y dS w xY wt          |t          j        ¦  «        sdS |j        t          k    o|                     ¦   «         j        t"          v S )zÇReturn True if node is calling dataclasses field or Field
    from an AnnAssign statement directly in the body of a ClassDef.

    If check_scope is False, skips checking the statement and body.
    NF)Ú	statementrË   r-   r
   rZ   rF   r.   r1   r™   rÄ   rº   r   r›   r“   r>   Ú
FIELD_NAMErK   rÈ   )r   rŒ   ÚstmtrË   rÉ   s        r*   r…   r…   Ü  sõ   € ð ð 	Ø�~Š~ÑÔˆØ—
’
‘”ˆå�t�Uœ_Ñ-Ô-ð	à”
Ð&Ý˜5¥%¤.Ñ1Ô1ð 'å+¨EÑ2Ô2ð 'ð �5ðÝ˜œ	ŸšÑ)Ô)Ñ*Ô*ˆˆøÝ�MÐ*ð ð ð Øˆuˆuðøøøõ �h¥Ô 1Ñ2Ô2ð ØˆuàŒ=�JÒ&ÐT¨8¯=ª=©?¬?Ô+?ÕCTÐ+TÐTs   Á8&B ÂB4Â3B4Ú
field_callÚ_FieldDefaultReturnc                ó"  — d\  }}| j         D ]'}|j        dk    r|j        }Œ|j        dk    r|j        }Œ(|�|€d|fS |€P|�Nt          j        | j        | j        | j        | j        | j	        ¬¦  «        }| 
                    |g g ¬¦  «         d|fS dS )ah  Return a the default value of a field call, and the corresponding keyword
    argument name.

    field(default=...) results in the ... node
    field(default_factory=...) results in a Call node with func ... and no arguments

    If neither or both arguments are present, return ("", None) instead,
    indicating that there is not a valid default value.
    r:   r   r   N)r4   r5   r6   Ú
end_linenoÚend_col_offset)rÄ   rk   rD   )rD   rE   rF   r
   rC   r4   r5   r6   rÔ   rÕ   Úpostinit)rÑ   r   r   rS   rÀ   s        r*   r†   r†   ú  sÍ   € ð  *Ñ€Gˆ_ØÔ&ð ,ð ,ˆØŒ;˜)Ò#Ð#Ø”mˆGˆGØŒ[Ð-Ò-Ð-Ø%œmˆOøàÐ˜Ð6Ø˜'Ð!Ð!à€˜?Ð6Ý”:ØÔ$Ø!Ô,ØÔ$Ø!Ô,Ø%Ô4ð
ñ 
ô 
ˆð 	×Ò˜°RÀ"ÐÑEÔEÐEØ  (Ð*Ð*àˆ4r,   c                ó   — t           rP	 t          |                      ¦   «         ¦  «        }n# t          t          f$ r Y dS w xY wt          |dd¦  «        dk    S t          | t          j        ¦  «        o]t          | j	        t          j
        ¦  «        r| j	        j        dk    p.t          | j	        t          j        ¦  «        o| j	        j        dk    S )z@Return True if node is a ClassVar, with or without subscripting.Fr>   rz   ÚClassVar)r   r™   rº   r   r›   Úgetattrr-   r
   r–   rF   rÅ   r>   rÆ   rÇ   ©r   rÉ   s     r*   r\   r\     sË   € åð ;ð	Ý˜DŸJšJ™LœLÑ)Ô)ˆHˆHøÝ¥Ð.ð 	ð 	ð 	Ø�5�5ð	øøøõ �x ¨Ñ,Ô,°
Ò:Ð:õ �d�EœOÑ,Ô,ð Ý�4”:�uœzÑ*Ô*ð 	*ØŒJŒO˜zÒ)ð	.å�d”j¥%¤/Ñ2Ô2ð .ØŒJÔ :Ò-ð	s   ‰!+ «A ¿A c                ó–   — t           sdS t          | ¦  «        }t          |t          j        ¦  «        o|                     ¦   «         dk    S )z,Return True if node is the KW_ONLY sentinel.Fzdataclasses._KW_ONLY_TYPE)r   r   r-   r   ÚInstanceÚqnamerÚ   s     r*   r^   r^   0  sH   € åð ØˆuÝ˜$ÑÔ€Hå�8�Uœ^Ñ,Ô,ð 	<Ø�NŠNÑÔÐ ;Ò;ðr,   c                ó¢   — 	 t          |                      ¦   «         ¦  «        }n# t          t          f$ r Y dS w xY wt	          |dd¦  «        dk    S )z@Return True if node is an InitVar, with or without subscripting.Fr>   rz   ÚInitVar)r™   rº   r   r›   rÙ   rÚ   s     r*   r_   r_   ;  s^   € ðÝ˜Ÿ
š
™œÑ%Ô%ˆˆøÝ�MÐ*ð ð ð Øˆuˆuðøøøõ �8˜V RÑ(Ô(¨IÒ5Ð5s   ‚!$ ¤9¸9)ÚDictÚ	FrozenSetÚListÚSetr   ú*Iterator[UninferableBase | bases.Instance]c              #  ó¦  K  — d}	 t          |                      |¬¦  «        ¦  «        }n # t          t          f$ r t          V — Y nw xY wt          |t          j        ¦  «        st          V — dS |                     ¦   «         j	        dv r1|j	        t          v r|                     ¦   «         V — dS t          V — dS |                     ¦   «         V — dS )zŠInfer an instance corresponding to the type annotation represented by node.

    Currently has limited support for the typing module.
    Nr¹   >   rz   ÚtypingÚ_collections_abc)r™   rº   r   r›   r   r-   r
   r.   rK   r>   Ú_INFERABLE_TYPING_TYPESÚinstantiate_class)r   rµ   Úklasss      r*   r»   r»   Q  s  è è € ð €EðÝ�T—Z’Z¨�ZÑ,Ô,Ñ-Ô-ˆˆøÝ�MÐ*ð ð ð ÝÐÐÐÐÐðøøøå�e�Uœ^Ñ,Ô,ð (ÝÐÐÐÐÐØ	�Š‰ŒÔ	ð ð 
ð 
ð
 Œ:Õ0Ð0Ð0Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+åÐÐÐÐÐà×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð's   †#* ªAÁAÚmanagerr   c                óD  — |                       t          j        t          t          ¦  «         |                       t          j        t          t          d¬¦  «        t          ¦  «         |                       t          j	        t          t          d¬¦  «        t          ¦  «         d S )NT)Úraise_on_overwrite)Úregister_transformr
   r.   rW   r1   rC   r   rÁ   r…   r?   r¼   rÌ   )rë   s    r*   Úregisterrï   l  s•   € Ø×ÒÝŒÕ+Õ-Hñô ð ð ×ÒÝŒ
ÝÕ0ÀTÐJÑJÔJÝ(ñô ð ð ×ÒÝŒÝÕ/ÀDÐIÑIÔIÝ'ñô ð ð ð r,   )r   r   r    r!   r"   r#   )r   r   r"   r2   )F)r   r   r8   r#   r"   rX   )r   r   r"   r#   )r   r   r"   rf   )rn   rw   ro   rw   r"   rx   )r   r   r>   r‚   r"   rƒ   )r   r   r‰   rŠ   rQ   r#   r"   r‚   r&   )r   r´   rµ   r¶   r"   r·   )r   r½   rµ   r¶   r"   r·   )r   rÂ   r    r!   r"   r#   )r   r´   r"   r#   )T)r   r½   rŒ   r#   r"   r#   )rÑ   r½   r"   rÒ   )r   rÂ   r"   r#   )r   rÂ   rµ   r¶   r"   rä   )rë   r   r"   r2   )<Ú__doc__Ú
__future__r   Úcollections.abcr   ræ   r   r   r   Úastroidr   r	   r
   Úastroid.builderr   Úastroid.constr   r   Úastroid.exceptionsr   r   r   Úastroid.inference_tipr   Úastroid.managerr   Úastroid.typingr   Úastroid.utilr   r   r   ÚNodeNGrC   rÒ   Ú	frozensetÚDATACLASSES_DECORATORSrÏ   rÈ   rL   r1   rW   r<   rB   rv   r�   rˆ   rH   r¼   rÁ   r'   rÌ   r…   r†   r\   r^   r_   rè   r»   rï   © r,   r*   ú<module>rÿ      s}  ðð
ð ð #Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø !Ð !Ð !Ð !Ð !Ð !Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ /Ð /Ð /Ð /Ð /Ð /Ø *Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AàØØ	ˆ'�)Ô
˜eœlÐ
*Ô+Ø	ˆ'Ð#Ô
$ e¤jÐ
0Ô1ð3ôÐ ð #˜ >Ñ2Ô2Ð Ø€
Ø�IØDñô Ð ð )€ð =Sð
ð 
ð 
ð 
ð 
ð/Cð /Cð /Cð /Cðf (-ðð ð ð ð ð6ð ð ð ð< )ð  )ð  )ð  )ðFð ð ð ð0ð ð ð ð&POð POð POð POðh AEðð ð ð ð ð0 >Bð3ð 3ð 3ð 3ð 3ð( ;Qðð ð ð ð ð<ð ð ð ð" +/ðUð Uð Uð Uð Uð<ð ð ð ðDð ð ð ð(ð ð ð ð6ð 6ð 6ð 6ð $˜)ðñô Ð ð @Dð(ð (ð (ð (ð (ð6ð ð ð ð ð r,   