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

�

���g�&�	��ddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddl#m$Z$ddl%m&Z&ddl%m'Z'dd l%m(Z(dd!l)m*Z*dd"l+m,Z,dd#l-m.Z.dd$l-m/Z/dd%l-m0Z0dd&l-m1Z1dd
l-mZdd'l-m2Z2dd(l-m3Z3dd)l-m4Z4e5ejljod*�D�cgc]}ejqd+|�s�e9|���c}�Z:e:d,k\Z;e
d-eeef�.�Z<Gd/�d0�Z=dJd1�Z>dKd2�Z?dLd3�Z@dLd4�ZAdMd5�ZBdMd6�ZCdNd7�ZDdNd8�ZEdMd9�ZFdNd:�ZG						dOd;�ZHdPd<�Z						dQd=�ZIdRd>�ZJ										dSd?�ZKe	d@dA�							dTdB��ZLe									dUdC��ZLddA�							dVdD�ZLdWdE�ZMdXdF�ZN						dYdG�ZO						dZdH�ZPd[dI�ZQycc}w)\�)�annotationsN)�Any)�Iterable)�Iterator)�List)�Optional)�overload)�Tuple)�Type)�TypeVar)�Union)�version)�format_type)�CallExpr)�ClassDef)�CLASSDEF_NO_INFO)�Context)�
Expression)�FuncDef)�IfStmt)�JsonDict)�
MemberExpr)�NameExpr)�	Statement)�SymbolTableNode)�	TypeAlias)�TypeInfo)�Options)�ClassDefContext)�DynamicClassDefContext)�SemanticAnalyzerPluginInterface)�deserialize_and_fixup_type)�map_type_from_supertype)�CallableType)�get_proper_type)�Instance)�NoneType)�TypeVarType)�UnboundType)�	UnionType�.z^\d+$)���	_TArgType)�boundc�^�eZdZ												dd�Zdd�Zdd�Ze								d	d��Zy)
�SQLAlchemyAttributec�J�||_||_||_||_||_y�N)�name�line�column�type�info)�selfr4r5r6�typr8s      �I/opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/ext/mypy/util.py�__init__zSQLAlchemyAttribute.__init__?s'����	���	������	���	�c��|jsJ�|j|j|jt	|j�d�S)N)r4r5r6r7)r7r4r5r6�serialize_type)r9s r;�	serializezSQLAlchemyAttribute.serializeMs9���y�y��y��I�I��I�I��k�k�"�4�9�9�-�	
�	
r=c��t|jt�syt|j||j�|_y)zxExpands type vars in the context of a subtype when an attribute is
        inherited from a generic super type.
        N)�
isinstancer7r(r#r8)r9�sub_types  r;�expand_typevar_from_subtypez/SQLAlchemyAttribute.expand_typevar_from_subtypeVs-���$�)�)�[�1��+�D�I�I�x����K��	r=c�n�|j�}t|jd�|�}|d||d�|��S)Nr7)r:r8�)�copyr"�pop)�clsr8�data�apir:s     r;�deserializezSQLAlchemyAttribute.deserialize_s9���y�y�{��(����&�)9�3�?���.�s��.��.�.r=N)r4�strr5�intr6rNr:zOptional[Type]r8r�return�None)rOr)rCrrOrP)r8rrJrrKr!rOr1)�__name__�
__module__�__qualname__r<r@rD�classmethodrLrFr=r;r1r1>s���������	�
���
�
��
�L��/��/��/�-�	/�

�/��/r=r1c�@�ttjd|��S)Nz	^__.+?__$)�bool�re�match)r4s r;�name_is_dunderrYks�������t�,�-�-r=c�B�||jjdi�|<y�N�
sqlalchemy��metadata�
setdefault)r8�keyrJs   r;�_set_info_metadataraos��6:�D�M�M���\�2�.�s�3r=c�Z�|jjdi�j|d�Sr[)r^�get)r8r`s  r;�_get_info_metadatardss&���=�=���\�2�.�2�2�3��=�=r=c�b�|jr#|jD]}t||�}|��|cSyr3)�mrord)r8r`�baser^s    r;�_get_info_mro_metadatarhws3���x�x��H�H�D�)�$��4�H��#����r=c�<�|jjdi�yr[r]�r8s r;�establish_as_sqlalchemyrk�s���M�M���\�2�.r=c��t|dd�y�N�is_baseT�rarjs r;�set_is_baserp�s���t�Y��-r=c�"�t|d�}|duSrm�rd�r8rns  r;�get_is_basert�s�� ��y�1�G��d�?�r=c�"�t|d�}|duSrm)rhrss  r;�has_declarative_baserv�s��$�T�9�5�G��d�?�r=c��t|dd�y�N�	has_tableTrorjs r;�
set_has_tablerz�s���t�[�$�/r=c�"�t|d�}|duSrxrrrss  r;�
get_has_tabler|�s�� ��{�3�G��d�?�r=c��t|d�}|�yg}|D];}tj|||�}|j|�|j	|��=|S�N�mapped_attributes)rdr1rLrD�append)r8rKr�
attributesrJ�attrs      r;�get_mapped_attributesr��sh��3E��!�3��� ��,.�J�!��"�.�.�t�T�3�?���(�(��.����$��"�
�r=c�<�trt||�St|�Sr3)�mypy_14�_mypy_format_type)�typ_�optionss  r;rr�s��� ��w�/�/� ��&�&r=c	�`�t|d|D�cgc]}|j���c}�ycc}wr~)rar@)r8r��	attributes   r;�set_mapped_attributesr��s2�����0:�;�
�9��	�	�	�
�;���	<s�+c�0�d|z}|j||�S)NzQLAlchemy Mypy plugin] %s)�fail)rK�msg�ctxs   r;r�r��s��
'�#�
-�C��8�8�C���r=c���|jj|jjj}||vr,|jj|j|}|||<yyr3)rK�modules�
cur_mod_id�names)r��module�symbol_name�asname�module_globals�
lookup_syms      r;�
add_globalr��s_���W�W�_�_�S�W�W�%7�%7�8�>�>�N�
�^�#�&)�g�g�o�o�f�&=�&C�&C��'
�
�",��v��$r=.)�
expr_typesc��yr3rF��callexprr4r�s   r;�get_callexpr_kwargr��s��+.r=c��yr3rFr�s   r;r�r��s��r=c��	|jj|�}|j|}t	||�|nt
tf�r|Sy#t$rYywxYwr3)�	arg_names�index�
ValueError�argsrBrr)r�r4r��arg_idx�kwargs     r;r�r��sd����$�$�*�*�4�0��
�M�M�'�"�E��
�Z�3�z�(�H�9M����������s�A	�		A�Ac#�K�|D]q}t|t�r[t|jdt�r>|jdjdk(r"|j
dj
Ed{����n|���sy7��w)Nrztyping.TYPE_CHECKING)rBr�exprr�fullname�body)�stmts�stmts  r;�flatten_typecheckingr��sd�������t�V�$��4�9�9�Q�<��2��	�	�!��%�%�)?�?��y�y��|�(�(�(�(��J��
)�s�A+A<�-A:�.
A<c�6�t|ttf��rt|jt�rv|jj
r_t|jj
t�r;t|jj
j�}t|t�r|Syt|jt�r2t|jj�}t|t�r|Syt|jt�r|jSyr3)
rBrr�noderr7r$r%�ret_typer&r�targetr)�calleer��target_types   r;�type_for_calleer�s����&�:�x�0�1��f�k�k�7�+��{�{���J�v�{�{�/?�/?��$N�*�6�;�;�+;�+;�+D�+D�E���h��1�#�O��
����Y�
/�)�&�+�+�*<�*<�=�K��+�x�0�"�"������X�
.��;�;��r=c�
�t|t�s|S|jdk(rCt|t	|j
D�cgc]}t||���c}t
�gz��S|j|j|�}|�vt|t�rft|jt�rL|j}t||j
D�cgc] }t|t�rt||�n|��"c}�S|Scc}wcc}w)z�Take the UnboundType that we seem to get as the ret_type from a FuncDef
    and convert it into an Instance/TypeInfo kind of structure that seems
    to work as the left-hand type of an AssignmentStatement.

    r)rBr)r4�unbound_to_instancer*r�r'�lookup_qualifiedrr�rr&)rKr:�typ_argr��
bound_type�args      r;r�r�s���c�;�'��
�
�x�x�:��#���BE�(�(�K�(�w�$�S�'�2�(�K��:�,��
�
�	
�������#�.�D�	
���t�_�-��t�y�y�(�+��Y�Y�
����8�8�

�$�C�"�#�{�3�(��S�1���$�

�

�
	
��
��5L�� 
s�C;�
%D
c���|jturI|j|j|�}|�y|rt	|j
t�sJ�|j
S|jSr3)r8rr�r4rBr�r)rIrK�syms   r;�info_for_clsr�HsW���x�x�#�#��"�"�3�8�8�S�1���;���z�#�(�(�H�5�5�5��x�x���8�8�Or=c��	|j�S#t$rYnwxYwt|d�r1td�|jD��|_|j�St|d�r|j�}|j�S)Nr�c3�XK�|]"}t|d�r|j�n|���$y�w)�resolve_string_annotationN)�hasattrr�)�.0�as  r;�	<genexpr>z!serialize_type.<locals>.<genexpr>[s:����
����1�9�:��+�+�-����s�(*r�)r@�	Exceptionr��tupler�r�)r:s r;r?r?Us���
��}�}�����
��
���s�F���
��X�X�

�
����=�=�?��
��1�	2��+�+�-���=�=�?�s��	�)r4rMrOrV)r8rr`rMrJrrOrP)r8rr`rMrO�
Optional[Any])r8rrOrP)r8rrOrV)r8rrKr!rOz#Optional[List[SQLAlchemyAttribute]])r�rr�rrOrM)r8rr�zList[SQLAlchemyAttribute]rOrP)rKr!r�rMr�rrOrP)
r�z.Union[ClassDefContext, DynamicClassDefContext]r�rMr�rMr�rMrOrP)r�rr4rMr�rPrOz#Optional[Union[CallExpr, NameExpr]])r�rr4rMr�z!Tuple[TypingType[_TArgType], ...]rOzOptional[_TArgType])r�rr4rMr�z%Optional[Tuple[TypingType[Any], ...]]rOr�)r�zIterable[Statement]rOzIterator[Statement])r�rrOz#Optional[Union[Instance, TypeInfo]])rKr!r:rrOr)rIrrKr!rOzOptional[TypeInfo])r:rrOzUnion[str, JsonDict])R�
__future__rrW�typingrrrrrr	r
r�
TypingTyperr
�mypyr�
mypy.messagesrr��
mypy.nodesrrrrrrrrrrrrrr�mypy.optionsr�mypy.pluginrr r!�mypy.plugins.commonr"�mypy.typeopsr#�
mypy.typesr$r%r&r'r(r)r*r��__version__�splitrXrN�_versr�r.r1rYrardrhrkrprtrvrzr|r�r�r�r�r�r�r�r�r�r?)�xs0r;�<module>r�s���#�	��������%����:���'��!����!�� �&� �� �'�.�7�:�0�#�&����"�"� �
��(�(�.�.�s�3�M�3��r�x�x��!�7L�S��V�3�M�	���6�/��
�K�u�X�x�-?�'@�A�	�*/�*/�Z.�;�>��/�.��
�
0��
�
��8��(��&'��
�� 9��	���

,�	7�
,��
,��
,�
�	
,�

�
,� 
�9<�.��.�!�.�26�.�(�.�
�.�

����

��2�	�
��
��9=�	���

��6�	�
��(	��&/�	(�/�/3�/�	�/�d
�	�
�7�
��
���Ns�H�2
H

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