File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/ext/mypy/__pycache__/decl_class.cpython-310.pyc
o
���g�C � @ s� d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dlm
Z
d d lmZ d d
lmZ d dlm
Z
d dlmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dlm!Z! d dlm"Z" d dlm#Z# d d!l$m%Z% d d"l$m&Z& d d#l$m'Z' d d$l$m(Z( %dCdDd.d/�Z)dEd7d8�Z*dFd;d<�Z+dGd>d?�Z,dHd@dA�Z-dBS )I� )�annotations)�List)�Optional)�Union)�AssignmentStmt)�CallExpr)�ClassDef)� Decorator)�
LambdaExpr)�ListExpr)�
MemberExpr)�NameExpr)�PlaceholderNode)�RefExpr)�StrExpr)�
SymbolNode)�SymbolTableNode)�TempNode)�TypeInfo)�Var)�SemanticAnalyzerPluginInterface)�AnyType)�CallableType)�get_proper_type)�Instance)�NoneType)�
ProperType)�Type)� TypeOfAny)�UnboundType)� UnionType� )�apply)�infer)�names)�utilF�clsr �apir �
is_mixin_scan�bool�return�(Optional[List[util.SQLAlchemyAttribute]]c C s t �| |�}|d u rd S | j�d�rd S t �||�}t �|� |d ur.|s,t�| ||� |S g }| jj sG|j
�� D ]\}}t| ||||� q9n#t �
| jj �D ]}t|t�r]t| |||� qNt|t�rit| |||� qNt| |� |sxt�| ||� t �||� |S )N�builtins)r% �info_for_cls�fullname�
startswith�get_mapped_attributes�establish_as_sqlalchemyr"