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__/plugin.cpython-312.pyc

�

���g&���dZddlmZddlmZddlmZddlmZddlmZddlmZ	ddlm
Z
dd	lmZdd
l
mZddl
mZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlmZddl"m#Z#ddl"m$Z$ddl"m%Z%	e&d�e'd ��#e'$rYnwxYwGd!�d"e�Z(d/d#�Z)d0d$�Z*d1d%�Z+d1d&�Z,d1d'�Z-d1d(�Z.d1d)�Z/d1d*�Z0d2d+�Z1d3d,�Z2						d4d-�Z3y.)5z"
Mypy plugin for SQLAlchemy ORM.

�)�annotations)�Callable)�List)�Optional)�Tuple)�Type)�Union)�nodes)�
calculate_mro)�MroError)�Block)�ClassDef)�GDEF)�MypyFile)�NameExpr)�SymbolTable)�SymbolTableNode)�TypeInfo)�AttributeContext)�ClassDefContext)�DynamicClassDefContext)�Plugin)�SemanticAnalyzerPluginInterface)�get_proper_type)�Instance�)�
decl_class)�names)�utilzsqlalchemy-stubsz�The SQLAlchemy mypy plugin in SQLAlchemy 2.0 does not work with sqlalchemy-stubs or sqlalchemy2-stubs installed, as well as with any other third party SQLAlchemy stubs.  Please uninstall all SQLAlchemy stubs packages.c�|�eZdZ				d	d�Z				d
d�Z				d
d�Z				d
d�Z				d
d�Z				dd�Z				dd�Z	y)
�SQLAlchemyPluginc�Z�tj|�tjurtSy�N)r�type_id_for_fullname�DECLARATIVE_BASE�_dynamic_class_hook��self�fullnames  �K/opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/ext/mypy/plugin.py�get_dynamic_class_hookz'SQLAlchemyPlugin.get_dynamic_class_hook<s&���%�%�h�/�5�3I�3I�I�&�&��c��tSr#)�_fill_in_decoratorsr's  r*�get_customize_class_mro_hookz-SQLAlchemyPlugin.get_customize_class_mro_hookCs
��#�"r,c�0�|j|�}|��|j�wtj|j�}|tjurt
S|tjtjfvrtS|tjurtSyr#)�lookup_fully_qualified�noder�type_id_for_named_node�MAPPED_DECORATOR�_cls_decorator_hook�AS_DECLARATIVE�AS_DECLARATIVE_BASE�_base_cls_decorator_hook�DECLARATIVE_MIXIN�_declarative_mixin_hook)r(r)�sym�type_ids    r*�get_class_decorator_hookz)SQLAlchemyPlugin.get_class_decorator_hookHs����)�)�(�3���?�s�x�x�3��2�2�3�8�8�<�G��%�0�0�0�*�*���$�$��)�)���0�/��E�3�3�3�.�.�r,c�Z�tj|�tjurtSyr#)rr$�DECLARATIVE_META�_metaclass_cls_hookr's  r*�get_metaclass_hookz#SQLAlchemyPlugin.get_metaclass_hook[s(���%�%�h�/�5�3I�3I�I�'�&�r,c��|j|�}|r?t|jt�r%t	j
|j�rtSyr#)r1�
isinstancer2rr�has_declarative_base�_base_cls_hook)r(r)r;s   r*�get_base_class_hookz$SQLAlchemyPlugin.get_base_class_hookesB���)�)�(�3��
��3�8�8�X�.��)�)�#�(�(�3�!�!�r,c�2�|jd�rtSy)Nz-sqlalchemy.orm.attributes.QueryableAttribute.)�
startswith�_queryable_getattr_hookr's  r*�get_attribute_hookz#SQLAlchemyPlugin.get_attribute_hookss �����;�
�+�*�r,c�
�gd�S)N))�
�sqlalchemy.orm���)rLzsqlalchemy.orm.attributesrN)rLzsqlalchemy.orm.decl_apirN�)r(�files  r*�get_additional_depsz$SQLAlchemyPlugin.get_additional_deps}s��
�	
r,N)r)�str�returnz2Optional[Callable[[DynamicClassDefContext], None]])r)rRrSz+Optional[Callable[[ClassDefContext], None]])r)rRrSz,Optional[Callable[[AttributeContext], Type]])rPrrSzList[Tuple[int, str, int]])
�__name__�
__module__�__qualname__r+r/r=rArFrJrQrOr,r*r!r!;s������	;��#��#�	4�#�
���	4��&���	4�����	4�����	5��
��
�	#�
r,r!c��tSr#)r!)�versions r*�pluginrY�s���r,c��t|�t|jtg��}|jj|j�|_tt�||jj�}||_
t|j|�tj|jdtf��}|��t!|j"t�rrtj$|j"�t'j(|j"j*|jd��t-|j"g�g|_n1|jj1t2j4�}|g|_	t7|�|jj?|jtAtB|��tj$|�y#t8$rftj:|jd|j�|jj1t2j4�}|g|_d|_Y��wxYw)zZGenerate a declarative Base class when the declarative_base() function
    is encountered.�cls)�
expr_typesNT��
is_mixin_scanz.Not able to calculate MRO for declarative base)"�_add_globalsr�namer
�api�qualified_namer)rr�
cur_mod_id�info�_set_declarative_metaclassr�get_callexpr_kwarg�callrrCr2�set_is_baser�,scan_declarative_assignments_and_apply_types�defnr�bases�
named_typer�NAMED_TYPE_BUILTINS_OBJECTrr�fail�fallback_to_any�add_symbol_table_noderr)�ctxr[rd�cls_arg�objs     r*r&r&�s������
�3�8�8�U�2�Y�
'�C��7�7�)�)�#�(�(�3�C�L��K�M�3����(:�(:�;�D��C�H��s�w�w��,��%�%�c�h�h��8�+�N�G���z�'�,�,��A�������&��?�?��L�L���s�w�w�d�	
��w�|�|�R�0�1��
��g�g� � ��!A�!A�B���U��
�$��d���G�G�!�!�#�(�(�O�D�$�,G�H����T����$��	�	��G�G�E�s�x�x�	
��g�g� � ��!A�!A�B���U��
�#���
$�s�G�A,I�Ic�.�|jjD�]{}t|tj�rJt|j
tj�r&|j
jdk(r
|j
}n-t|tj�r|jdk(r|}n��t|jt�r3|jj|jj|d��}n��|s��|js��t|j�}t|t�r,|jj �d|j��|_��Dt#j$|jd|jz|j���~y)N�as_declarative_base�mappedT)�suppress_errors�.z�Class decorator called %s(), but we can't tell if it's from an ORM registry.  Please annotate the registry assignment, e.g. my_registry: registry = registry())r[�
decoratorsrCr
�CallExpr�callee�
MemberExprr`�exprrra�lookup_qualifiedr2r�typerr)rrn)rq�	decorator�targetr;�sym_types     r*r.r.�s3���W�W�'�'�	�
�y�%�.�.�1��9�+�+�U�-=�-=�>�� � �%�%�)>�>��%�%�F��y�%�"2�"2�3����(�*��F���f�k�k�8�,��'�'�*�*���� � �&�$�+��C�
��3�8�8�&�s�x�x�0�H��(�H�-�%-�]�]�%;�%;�$<�A�f�k�k�]�"K����	�	��G�G�9�<B�;�;�G��H�H�
�W(r,c�&�t|�t|jtj�sJ�|jj
}t|tj�r$t|jtj�sJ�t|jj�}t|t�r/tj|j�tjusJ�tj |j"|j$�yr#)r_rC�reasonr
r|r}�RefExprr2�Varrrrrr3�REGISTRYrrir[ra)rqr}�	node_types   r*r5r5�s�������c�j�j�%�"2�"2�3�3�3��:�:�?�?�D��d�E�M�M�*�z�$�)�)�U�Y�Y�/O�O�O���	�	���/�I�	�9�h�'��(�(����8�E�N�N�J��	K��;�;�C�G�G�S�W�W�Mr,c���t|�|j}t|j|�t	j
|jj�tj||jd��y�NTr])	r_r[rerarrhrdrri)rqr[s  r*r8r8�sP�����

�'�'�C��s�w�w��,����S�W�W�\�\�"��;�;��S�W�W�D�r,c���t|�tj|jj�tj|j|jd��yr�)r_rrhr[rdrrira�rqs r*r:r:s=��������S�W�W�\�\�"��;�;��������r,c�V�tj|jj�yr#)rrhr[rdr�s r*r@r@s�����S�W�W�\�\�"r,c�n�t|�tj|j|j�yr#)r_rrir[rar�s r*rErEs"������;�;�C�G�G�S�W�W�Mr,c��|jSr#)�default_attr_typer�s r*rIrIs��� � � r,c�4�tj|ddd�y)z`Add __sa_DeclarativeMeta and __sa_Mapped symbol to the global space
    for all class defs

    rM�Mapped�__sa_MappedN)r�
add_globalr�s r*r_r_s��	�O�O�C�)�8�]�Cr,c��|j}|jd�}|�t|jt�sJ�t|jg�x|_|_y)Nz'sqlalchemy.orm.decl_api.DeclarativeMeta)rd�lookup_fully_qualified_or_nonerCr2rr�declared_metaclass�metaclass_type)ra�
target_clsrdr;s    r*rere'sU���?�?�D�

�
,�
,�1��C��?�z�#�(�(�H�=�=�=�4<�S�X�X�r�4J�J�D��d�1r,N)rXrRrSzTypingType[SQLAlchemyPlugin])rqrrS�None)rqrrSr�)rqrrSr)rqz.Union[ClassDefContext, DynamicClassDefContext]rSr�)rarr�rrSr�)4�__doc__�
__future__r�typingrrrrr�
TypingTyper	�mypyr
�mypy.mrorr�
mypy.nodesr
rrrrrrr�mypy.pluginrrrrr�
mypy.typesrr�rrr�
__import__�ImportErrorr!rYr&r.r5r8r:r@rErIr_rerOr,r*�<module>r�s���#�����%���"�������"�&��(�'�.��7�&��������!�"��	�����	��	��J
�v�J
�Z�$�N3�lN�"
��#�N�
!�D�K�	(�K�6>�K�	�Ks�2C�C
�	C


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