File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/__pycache__/reflection.cpython-310.pyc
o
���gw& � @ s� d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlm Z ddl
mZ dd l
mZ dd
l
m
Z
ddl
mZ ddl
mZ dd
l
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z ddlm!Z! ddlm"Z# dd l$m%Z% dd!l&m'Z' dd"l&m(Z( dd#l)m*Z* dd$l+m,Z, dd%l m-Z- dd&l.m/Z/ e�rdd'l0m1Z1 dd(l0m2Z2 dd)l0m3Z3 dd*l0m4Z4 dd+l0m5Z5 dd,l0m6Z6 dd-l0m7Z7 dd.l0m8Z8 dd/l0m9Z9 ed0�Z:e j;dLd;d<��Z<dMd@dA�Z=e G dBdC� dCe��Z>e G dDdE� dEe��Z?ej@G dFdG� dGejAdG ��ZBe/G dHdI� dI��ZCeG dJdK� dK��ZDdS )Na� Provides an abstraction for obtaining database schema information.
Usage Notes:
Here are some general conventions when accessing the low level inspector
methods such as get_table_names, get_columns, etc.
1. Inspector methods return lists of dicts in most cases for the following
reasons:
* They're both standard types that can be serialized.
* Using a dict instead of a tuple allows easy expansion of attributes.
* Using a list for the outer structure maintains order and is easy to work
with (e.g. list comprehension [d['name'] for d in cols]).
2. Records that contain a name, such as the column name in a column record
use the key 'name'. So for most return values, each record will have a
'name' attribute..
� )�annotationsN)� dataclass)�auto)�Flag)�unique)�Any)�Callable)�
Collection)�Dict)� Generator)�Iterable)�List)�Optional)�Sequence)�Set)�Tuple)�
TYPE_CHECKING)�TypeVar)�Union� )�
Connection)�Engine� )�exc)�
inspection)�sql)�util)� operators)�schema)�_ad_hoc_cache_key_from_args)�quoted_name)�
TextClause)�
TypeEngine)�InternalTraversal)�topological)�final)�Dialect)�ReflectedCheckConstraint)�ReflectedColumn)�ReflectedForeignKeyConstraint)�ReflectedIndex)�ReflectedPrimaryKeyConstraint)�ReflectedTableComment)�ReflectedUniqueConstraint)�TableKey�_R�fn�Callable[..., _R]�selfr&