File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/ext/mypy/__pycache__/apply.cpython-310.pyc
o
���g_) � @ 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 dlm Z d dlm!Z! ddl"m#Z# ddl"m$Z$ dd l%m&Z& dd!l%m'Z' dAd,d-�Z(dBd.d/�Z)dCd7d8�Z*dBd9d:�Z+dDd>d?�Z,d@S )E� )�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_MAPPED�clsr
�apir �item�Union[NameExpr, StrExpr]�
attributes�List[util.SQLAlchemyAttribute]�return�Nonec C s� t |t�r |j}nt |t�r|j}nd S | jjD ]}t |t�r1t |jd t�r1|jd j|kr1 n
qt �
|d|� �| � d S |jd u rLt �
|d|� d S t|j�}t |t
ttf�s[J �|�t j||j|j|| jd�� t|||jd |d � d S )Nr zCan't find mapped attribute zBStatement linked from _mypy_mapped_attrs has no typing information)�name�line�column�typ�info)�
isinstancer
r+ r �value�defs�bodyr �lvaluesr �fail�typer r r r �append�SQLAlchemyAttributer, r- r/ �apply_type_to_mapped_statement)r# r$ r% r'