관리-도구
편집 파일: decl_class.cpython-38.pyc
U -?�f�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( d?d&d'd(d)d*�d+d,�Z)d&d'd-d.d/d0d1�d2d3�Z*d&d'd4d/d0d5�d6d7�Z+d&d'd8d/d0d5�d9d:�Z,d&d'd0d;�d<d=�Z-d>S )@� )�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)�utilFr r �boolz(Optional[List[util.SQLAlchemyAttribute]])�cls�api� is_mixin_scan�returnc C s t �| |�}|d krd S | j�d�r(d S t �||�}t �|� |d k r\|sXt�| ||� |S g }| jj s�|j �� D ]\}}t| ||||� qrnFt � | jj �D ]6}t|t�r�t| |||� q�t|t�r�t| |||� q�t| |� |s�t�| ||� t �||� |S )N�builtins)r% �info_for_cls�fullname� startswithZget_mapped_attributesZestablish_as_sqlalchemyr"