PK APOCALYPSE V1

APOCALYPSE V1

Current Path : /opt/hc_python/lib/python3.12/site-packages/sqlalchemy/ext/mypy/__pycache__/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/sqlalchemy/ext/mypy/__pycache__/apply.cpython-312.pyc

�

���g_)���ddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#ddl"m$Z$dd l%m&Z&dd!l%m'Z'										d(d"�Z(								d)d#�Z)												d*d$�Z*								d)d%�Z+										d+d&�Z,y'),�)�annotations)�List)�Optional)�Union)�
ARG_NAMED_OPT)�Argument)�AssignmentStmt)�CallExpr)�ClassDef)�MDEF)�
MemberExpr)�NameExpr)�RefExpr)�StrExpr)�SymbolTableNode)�TempNode)�TypeInfo)�Var)�SemanticAnalyzerPluginInterface)�add_method_to_class)�AnyType)�get_proper_type)�Instance)�NoneTyp)�
ProperType)�	TypeOfAny)�UnboundType)�	UnionType�)�infer)�util)�expr_to_mapped_constructor)�NAMED_TYPE_SQLA_MAPPEDc	���t|t�r
|j}nt|t�r
|j}ny|j
jD]O}t|t�s�t|jdt�s�2|jdj|k(s�Ontj|d|��|�y|j�tj|d|�yt|j�}t|tttf�sJ�|j!tj"||j$|j&||j(���t+|||jd|d�y)NrzCan't find mapped attribute zBStatement linked from _mypy_mapped_attrs has no typing information)�name�line�column�typ�info)�
isinstancerr%r�value�defs�bodyr	�lvaluesr!�fail�typerrrr�append�SQLAlchemyAttributer&r'r)�apply_type_to_mapped_statement)�cls�api�item�
attributesr%�stmt�left_hand_explicit_types       �J/opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/ext/mypy/apply.py�apply_mypy_mapped_attrr;-s;���$��!��y�y��	�D�'�	"��z�z������
�
���t�^�,��4�<�<��?�H�5����Q��$�$��,��
�	
�	�	�#�5�d�V�<�c�B���y�y���	�	��
!��		
��-�d�i�i�8����(�I�{�!C�������� � ������;�;�'����	
��#��T�4�<�<��?�$;�T��c	���|D�cic]}|j|��}}d}|jjD�]}t|t�s�t|j
dt�s�3|j
dj|vs�Ot|j
djt�s�w|j
dj}||j
djj}t|j�}	t|t��r�t|	t��s�t|jt��r�t|jjt��r�t|jjj t��rR|jjj j��'|jjj jj"t$k(r�|jjjdk(r�t|jj&dt�r�t|jj&djt(�rqt+j,||||	|jj&dj�}
|
�5t|
t�s%|
}|||j
dj_	d}t|jt.�r)|jjj"t$k7s���|�J�|j1t$|g�|_	��|r!t3j4|j6|�yycc}w)zlFor multiple class passes, re-apply our left-hand side types as mypy
    seems to reset them in place.

    FrN�_empty_constructorT)r%r,r-r*r	r.r�noderr0rr�rvaluer
�calleer
�expr�fullnamer#�argsrr �#infer_type_from_right_hand_nameexprr�
named_typer!�set_mapped_attributesr))r4r5r7�attr�mapped_attr_lookup�update_cls_metadatar8�	left_node�python_type_for_type�left_node_proper_type�new_python_type_for_types           r:� re_apply_declarative_assignmentsrObs���7A�A�j�d�$�)�)�T�/�j��A������
�
��
�t�^�,��4�<�<��?�H�5����Q��$�$�(:�:��4�<�<��?�/�/��5����Q��,�,�I�#5����Q��$�$�$��d�
!�%4�I�N�N�$C�!��/��=�"�#8�+�F��t�{�{�H�5�"�4�;�;�#5�#5�z�B�"�4�;�;�#5�#5�#:�#:�H�E����*�*�/�/�4�4�@����*�*�/�/�4�4�=�=�-�.����*�*�/�/�3G�G�"�4�;�;�#3�#3�A�#6��A�"�4�;�;�#3�#3�A�#6�#=�#=�w�G��=�=���!�-����(�(��+�2�2��)�,�7�
�,�k�A�,D�(�
-�'�t�|�|�A��';�';�<�A�+/�'��y�~�~�x�8��>�>�&�&�/�/�3I�I�+�7�7�7�!$���*�-A�,B�"�	��C�J��"�"�3�8�8�Z�8���QBs�M+c�l�|j}t|t�sJ�|�$d|_|j	t
|g�|_n?d|_|j	t
|�ttj�gn|g�|_t|j�|_|j�|�||_yyy)a�Apply the Mapped[<type>] annotation and right hand object to a
    declarative assignment statement.

    This converts a Python declarative class statement such as::

        class User(Base):
            # ...

            attrname = Column(Integer)

    To one that describes the final Python behavior to Mypy::

    ... format: off

        class User(Base):
            # ...

            attrname : Mapped[Optional[int]] = <meaningless temp node>

    ... format: on

    NF)r?r*r�is_inferred_defrFr#r0rr�special_formr"r@)r5r8�lvaluer9rLrKs      r:r3r3�s���:���I��i��%�%�%��*�!&������"�%<�$=�
�	��"'������"�(�/���/�/�0�1�*�+�
�	��*-�T�[�[�9�D�K��y�y��!5�!A�(��	�"B�r<c
�.�tj||�}|�ytj|�}d|jv�r|�s|D�cic]}|j|j
��}}|jddD]W}d|jvr�tj||�}|��+|D](}|j|j|j
��*�Yg}	|j�D]U\}
}|�ttj�}|	jtt!|
|�|t#|�t$����Wt'||d|	t)��d|jvr#tj*|�rt-||dd�|st-||d	d
�yycc}w)zCApply __init__, __table__ and other attributes to the mapped class.N�__init__r����
sqlalchemy)�variable�type_annotation�initializer�kind�	__table__zsqlalchemy.sql.schema.Tablezsqlalchemy.orm.mapper.Mapper�
__mapper__)r!�info_for_cls�get_is_base�namesr%r0�mro�metadata�get_mapped_attributes�
setdefault�itemsrrrRr1rrrrrr�
get_has_table� _apply_placeholder_attr_to_class)r4r5r7r)�is_baserH�mapped_attr_names�base�base_cls_attributes�	argumentsr%r(s            r:�add_additional_orm_attributesrm�s������S�#�&�D��|�����t�$�G�����#�G�>H�I�j�d�T�Y�Y��	�	�1�j��I��H�H�Q�r�N�D��4�=�=�0��"&�"<�"<�T�3�"G��"�*��+��!�,�,�T�Y�Y��	�	�B�,�#��	�*�0�0�2�I�D�#��{��i�4�4�5������ ��s�^�$'� (��
�&�	�
�3�	�C��j�)�W�Y�G��$�*�*�$��);�);�D�)A�(���3�[�	
��(���4�l�	
���AJs�Fc��|j|�}|r3t|jt�sJ�t	|jg�}nttj�}t|�}|jdz|z|_
|j|_||_tt|�|jj|<y)N�.)�lookup_fully_qualified_or_noner*r?rrrrrRrrC�	_fullnamer)r0rrr`)r5r4�qualified_name�attrname�sym�type_�vars       r:rgrg4s����
,�
,�^�
<�C�
��#�(�(�H�-�-�-�$�S�X�X�r�2���	�.�.�/��

�h�-�C��L�L�3�&��1�C�M��x�x�C�H��C�H�.�t�S�9�C�H�H�N�N�8�r<N)
r4rr5rr6zUnion[NameExpr, StrExpr]r7�List[util.SQLAlchemyAttribute]�return�None)r4rr5rr7rwrxry)r5rr8r	rSrr9�Optional[ProperType]rLrzrxry)
r5rr4rrr�strrsr{rxry)-�
__future__r�typingrrr�
mypy.nodesrrr	r
rrr
rrrrrrr�mypy.pluginr�mypy.plugins.commonr�
mypy.typesrrrrrrrr�r r!r`r"r#r;rOr3rmrg�r<r:�<module>r�sl��#����$��%����!����&����7�3��&���!� �"� ���-�)�2�	�2�	(�2�#�2�/�	2�

�2�jR9�	�R9�	(�R9�/�R9�
�	R9�jE)�	(�E)�
�E)�
�E)�2�	E)�
/�E)�
�
E)�P2
�	�2
�	(�2
�/�2
�
�	2
�j:�	(�:�	�:��:��	:�

�:r<

if you don't want to be vaporized in a nuclear explosion, i simply have to become nuclear myself… i am atomic