HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/alembic/ddl/__pycache__/impl.cpython-310.pyc
o

+we�c�@s^UddlmZddlmZddlZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZe�r
ddlmZddlmZddlmZddlmZddl 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*m-Z-dd&l*m.Z.dd'l*m/Z/dd(l*m0Z0dd)l1m2Z2dd*l3m4Z4dd+lm5Z5dd,l6m7Z7dd-l8m9Z9dd.l8m:Z:Gd/d0�d0e;�Z<iZ=d1e>d2<ed3gd4��Z?Gd5d6�d6e<d7�Z@dAd?d@�ZAdS)B�)�annotations)�
namedtupleN)�Any)�Callable)�Dict)�Iterable)�List)�Mapping)�Optional)�Sequence)�Set)�Tuple)�Type)�
TYPE_CHECKING)�Union)�cast��schema)�text�)�base�)�util)�sqla_compat)�Literal)�TextIO)�
Connection)�Dialect)�CursorResult)�	Inspector)�
ClauseElement)�
Executable)�
ColumnElement)�quoted_name)�Column)�
Constraint)�ForeignKeyConstraint)�Index)�Table)�UniqueConstraint)�TableClause)�
TypeEngine)�_ServerDefault)�AutogenContext)�ApplyBatchImpl)�BatchOperationsImplc@seZdZd
dd�Zd	S)�ImplMeta�	classname�str�bases�Tuple[Type[DefaultImpl]]�dict_�Dict[str, Any]cCs(t�||||�}d|vr|t|d<|S)N�__dialect__)�type�__init__�_impls)�clsr1r3r5�newtype�r=�I/home/arjun/projects/env/lib/python3.10/site-packages/alembic/ddl/impl.pyr97szImplMeta.__init__N)r1r2r3r4r5r6)�__name__�
__module__�__qualname__r9r=r=r=r>r06sr0zDict[str, Type[DefaultImpl]]r:�Params)�token0�tokens�args�kwargsc@s(eZdZUdZdZdZdZddhfZded<d	Z	d
ed<dZ
d
ed<d�dd�Zed�d d!��Z
d�d$d%�Zd�d(d)�Zd�d.d/�Zed�d0d1��Zd2d	e��fd�d;d<�Z	2d�d�d>d?�Z	2		2	2	2	2		2	2	2	2	2d�d�dUdV�Z	2d�d�dZd[�Z	2d�d�d\d]�Zd�d_d`�Zd�dbdc�Z	2d�d�dgdh�Zd�didj�Zd�dkdl�Zd�dodp�Zd�dqdr�Z d�dsdt�Z!d�dvdw�Z"d�dxdy�Z#	zd�d�dd��Z$d�d�d��Z%d�d�d��Z&d�d�d��Z'd�d�d��Z(d�d��Z)d�d�d��Z*d�d��Z+	d�d�d�d��Z,d�d�d��Z-d�d�d��Z.d�d��Z/d�d�d��Z0d�d�d��Z1d�d�d��Z2d�d�d��Z3d�d��Z4d�d�d��Z5d�d�d„Z6d�dĄZ7d�d�dȄZ8d2S)��DefaultImpla�Provide the entrypoint for major migration operations,
    including database-specific behavioral variances.

    While individual SQL/DDL constructs already provide
    for database-specific implementations, variances here
    allow for entirely different sequences of operations
    to take place for a particular migration, such as
    SQL Server's special 'IDENTITY INSERT' step for
    bulk inserts.

    �defaultF�;�NUMERIC�DECIMALzTuple[Set[str], ...]�
type_synonymsr=z
Sequence[str]�type_arg_extract)�order�on_nullzTuple[str, ...]�identity_attrs_ignore�dialectr�
connection�Optional[Connection]�as_sql�bool�transactional_ddl�Optional[bool]�
output_buffer�Optional[TextIO]�context_optsr6�return�NonecCs^||_||_||_|�dd�|_||_i|_||_|dur ||_|jr+|js-t	�
d��dSdS)N�
literal_bindsFz3Can't use literal_binds setting without as_sql mode)rQrRrT�getr]rX�memorZrVr�CommandError)�selfrQrRrTrVrXrZr=r=r>r9bs 	��zDefaultImpl.__init__�Type[DefaultImpl]cCs
t|jS�N)r:�name)r;rQr=r=r>�get_by_dialect|s
zDefaultImpl.get_by_dialectrr2cCs,|jdusJ�|j�|d�|j��dS)Nz

)rX�write�flush)rarr=r=r>�
static_output�szDefaultImpl.static_output�batch_opr/cC�dS)z�Return True if the given :class:`.BatchOperationsImpl`
        would need the table to be recreated and copied in order to
        proceed.

        Normally, only returns True on SQLite when operations other
        than add_column are present.

        Fr=)rarir=r=r>�requires_recreate_in_batch�sz&DefaultImpl.requires_recreate_in_batch�
batch_implr.�tabler(cCrj)z�perform any operations needed on a table before a new
        one is created to replace it in batch mode.

        the PG dialect uses this to drop constraints on the table
        before the new one uses those same names.

        Nr=)rarlrmr=r=r>�prep_table_for_batch��z DefaultImpl.prep_table_for_batchcC�|jSrc)rR�rar=r=r>�bind�szDefaultImpl.bindN�	construct�Union[Executable, str]�execution_options�Optional[dict[str, Any]]�multiparams�Sequence[dict]�params�Optional[CursorResult]cCs�t|t�r	t|�}|jrM|s|rtd��|jr%t|tj�s%tddid�}ni}t	r0t|t
�s0J�|jdd|ji|��}|�
t|��dd���|j�dS|j}|dusVJ�|r`|jdi|��}|rnt|t�siJ�||f7}|�||�S)	Nz+Execution arguments not allowed with as_sqlr]T)�compile_kwargsrQ�	z    r=)�
isinstancer2rrT�	Exceptionr]r�
DDLElement�dictrr �compilerQrh�replace�strip�command_terminatorrRru�tuple�execute)rarsrurwry�
compile_kw�compiled�connr=r=r>�_exec�s6
���
zDefaultImpl._exec�sqlcCs|�||�dSrc)r�)rar�rur=r=r>r��szDefaultImpl.execute�
table_name�column_name�nullable�server_default�%Union[_ServerDefault, Literal[False]]rd�
Optional[str]�type_�Optional[TypeEngine]r�
autoincrement�comment�$Optional[Union[str, Literal[False]]]�existing_comment�
existing_type�existing_server_default�Optional[_ServerDefault]�existing_nullable�existing_autoincrement�kwrcKs,|dus|durtjddd�|dur#|�tj|||||||
|
d��|durWi}t�||�r3tj}nt�||�rAtj	}||d<ntj
}|�||||f||||
|
d�|���|durk|�tj|||||||
|
d��|	dur|�tj|||	||||
|
d��|dur�|�tj
|||||||
d��dSdS)NzBautoincrement and existing_autoincrement only make sense for MySQL�)�
stacklevel)rr�r�r�r�F�impl)rr�r�r�)r�warnr�r�ColumnNullabler�_server_default_is_computed�ComputedColumnDefault�_server_default_is_identity�IdentityColumnDefault�
ColumnDefault�
ColumnType�
ColumnComment�
ColumnName)rar�r�r�r�rdr�rr�r�r�r�r�r�r�r��cls_r=r=r>�alter_column�s������
��	��
��
�����zDefaultImpl.alter_column�column�Column[Any]�!Optional[Union[str, quoted_name]]cC�|�tj|||d��dS�Nr)r�r�	AddColumn)rar�r�rr=r=r>�
add_columnAszDefaultImpl.add_columncKr�r�)r�r�
DropColumn)rar�r�rr�r=r=r>�drop_columnIszDefaultImpl.drop_column�constcCs,|jdus
|�|�r|�t�|��dSdSrc)�_create_ruler�r�
AddConstraint�rar�r=r=r>�add_constraintRs�zDefaultImpl.add_constraintr%cC�|�t�|��dSrc)r�r�DropConstraintr�r=r=r>�drop_constraintV�zDefaultImpl.drop_constraint�old_table_name�new_table_name�Union[str, quoted_name]cCr�r�)r�r�RenameTable)rar�r�rr=r=r>�rename_tableYs�zDefaultImpl.rename_tablecCs�|jj||jd|d�|�t�|��|jj||jd|d�|jD]
}|�t�|��q!|j	j
o4|j	j}|j}|rA|rA|�
|�|jD]}|j}|rR|rR|�|�qDdS�NF)�
checkfirst�_ddl_runner)�dispatch�
before_createrRr�r�CreateTable�after_create�indexes�CreateIndexrQ�supports_comments�inline_commentsr��create_table_comment�columns�create_column_comment)rarm�index�with_commentr�r�r=r=r>�create_tablecs(
�
�
�


��zDefaultImpl.create_tablecCs@|jj||jd|d�|�t�|��|jj||jd|d�dSr�)r��before_droprRr�r�	DropTable�
after_drop�rarmr=r=r>�
drop_tablezs
�

�zDefaultImpl.drop_tabler�r'cK�|�tj|fi|���dSrc)r�rr��rar�r�r=r=r>�create_index��zDefaultImpl.create_indexcCr�rc)r�r�SetTableCommentr�r=r=r>r��r�z DefaultImpl.create_table_commentcCr�rc)r�r�DropTableCommentr�r=r=r>�drop_table_comment�r�zDefaultImpl.drop_table_comment�ColumnElement[Any]cCr�rc)r�r�SetColumnComment)rar�r=r=r>r��r�z!DefaultImpl.create_column_commentcKr�rc)r�r�	DropIndexr�r=r=r>�
drop_index�r�zDefaultImpl.drop_indexT�Union[TableClause, Table]�rows�
List[dict]�multiinsertc	s�t|t�s	td��|rt|dt�std��|jr7|D]}|�t���jdi�fdd�|�	�D����qdS|rZ|rG|jt���|d�dS|D]}|�t���jdi|���qIdSdS)Nz
List expectedrzList of dictionaries expectedcs:i|]\}}|t|tj�stj||�j|jd�n|�qS))r�)r}r�_literal_bindparam�cr8)�.0�k�v�rmr=r>�
<dictcomp>�s�����z+DefaultImpl.bulk_insert.<locals>.<dictcomp>)rwr=)
r}�list�	TypeErrorr�rTr�r�_insert_inline�values�items)rarmr�r��rowr=r�r>�bulk_insert�s2

����

���zDefaultImpl.bulk_insertr$rBcCs�|jj�|j���}t�d|�}g}d}|D]}t�d|�r!|}q|�|�qt	|d|dd�gi�}|r\t�d|�D]}d|vrS|�
d�\}	}
|
��|j|	��<q<|j
�|���q<|S)Nz[\w\-_]+|\(.+?\)z^\(.*\)$rrz[^(),]+�=)rQ�
type_compiler�processr8�lower�re�findall�match�appendrB�splitr�rFrE)rar��
definitionrD�term_tokens�
paren_term�tokenry�term�key�valr=r=r>�_tokenize_column_type�s z!DefaultImpl._tokenize_column_type�inspector_params�metadata_paramscCs||j|jkrdSdd�|jD�}d�|jg|j�}d�|jg|j�}|D]}||h�|�s8|j|jh�|�r;dSq&dS)NTcSsg|]	}dd�|D��qS)cSsh|]}|���qSr=)r�)r��tr=r=r>�	<setcomp>��z=DefaultImpl._column_types_match.<locals>.<listcomp>.<setcomp>r=)r��batchr=r=r>�
<listcomp>�sz3DefaultImpl._column_types_match.<locals>.<listcomp>� F)rCrL�joinrD�issubset)rarr	�synonyms�inspector_all_terms�metadata_all_termsr
r=r=r>�_column_types_match�s&�����zDefaultImpl._column_types_match�inspected_params�meta_paramscCs�t|j�t|j�kr|j|jkrdSt|j�t|j�kr$|j|jkr$dSd�|j���}d�|j���}|jD]}t�||�}t�||�}|rV|rV|�d�|�d�krVdSq7dS)aWe want to compare column parameters. However, we only want
        to compare parameters that are set. If they both have `collation`,
        we want to make sure they are the same. However, if only one
        specifies it, dont flag it for being less specific
        FrrT)	�lenrDrErr�rMr��search�group)rarr�insp�meta�reg�mi�mmr=r=r>�_column_args_match�s

�zDefaultImpl._column_args_match�inspector_column�metadata_columncCs8|�|�}|�|�}|�||�sdS|�||�sdSdS)z�Returns True if there ARE differences between the types of the two
        columns. Takes impl.type_synonyms into account between retrospected
        and metadata types
        TF)rrr )rar!r"rr	r=r=r>�compare_types

zDefaultImpl.compare_typecCs||kSrcr=)rar!r"�rendered_metadata_default�rendered_inspector_defaultr=r=r>�compare_server_default%sz"DefaultImpl.compare_server_default�conn_uniques�Set[UniqueConstraint]�conn_indexes�
Set[Index]�metadata_unique_constraints�metadata_indexescC�dSrcr=)rar'r)r+r,r=r=r>�correct_for_autogen_constraints.sz+DefaultImpl.correct_for_autogen_constraintscCs(|jj|jurt|d|�|d<dSdS)N�expr)r8�_type_affinityr)ra�existing�existing_transfer�new_typer=r=r>�cast_for_batch_migrate7s
��z"DefaultImpl.cast_for_batch_migrater/r �is_server_defaultcKsddd�}t|j|j|d��S)zdRender a SQL expression that is typically a server default,
        index expression, etc.

        TF)r]�
include_table)rQr{)r2r�rQ)rar/r5r�r�r=r=r>�render_ddl_sql_expr=s
�zDefaultImpl.render_ddl_sql_expr�	inspectorrrcCrprc)�autogen_column_reflect)rar8r=r=r>�_compat_autogen_column_reflectKsz*DefaultImpl._compat_autogen_column_reflect�conn_fks�Set[ForeignKeyConstraint]�metadata_fkscCr-rcr=)rar;r=r=r=r>�correct_for_autogen_foreignkeysNsz+DefaultImpl.correct_for_autogen_foreignkeyscCrj)z�A hook that is attached to the 'column_reflect' event for when
        a Table is reflected from the database during the autogenerate
        process.

        Dialects can elect to modify the information gathered here.

        Nr=)rar8rm�column_infor=r=r>r9Uroz"DefaultImpl.autogen_column_reflectcCrj)z�A hook called when :meth:`.EnvironmentContext.run_migrations`
        is called.

        Implementations can set up per-migration-run state here.

        Nr=rqr=r=r>�start_migrations^rozDefaultImpl.start_migrationscC�|�d|j�dS)z�Emit the string ``BEGIN``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        �BEGINN�rhr�rqr=r=r>�
emit_beginf�zDefaultImpl.emit_begincCrA)z�Emit the string ``COMMIT``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        �COMMITNrCrqr=r=r>�emit_commitprEzDefaultImpl.emit_commit�type_objr+�autogen_contextr-�Union[str, Literal[False]]cCrj)NFr=)rarHrIr=r=r>�render_typezszDefaultImpl.render_typecCsvt||t��dhd�\}}t|dd�}t|dd�}t|�t|�kr&|�d�|�|j�||t|�p9t|�t|�kfS)N�always)�skip)�_compare_identity_optionsr�Identity�getattrrU�add�difference_updaterP)ra�metadata_identity�inspector_identity�diff�ignored�meta_always�inspector_alwaysr=r=r>�_compare_identity_defaults
�
�z%DefaultImpl._compare_identity_default�Tuple[Any, ...]cCstdd�|jD��S)Ncss�|]}|jVqdSrc�rd�r��colr=r=r>�	<genexpr>�s�z/DefaultImpl.create_index_sig.<locals>.<genexpr>)r�r�)rar�r=r=r>�create_index_sig�szDefaultImpl.create_index_sigr)cCsttdd�|jD���S)NcSsg|]}|j�qSr=r[r\r=r=r>r�sz<DefaultImpl.create_unique_constraint_sig.<locals>.<listcomp>)r��sortedr�r�r=r=r>�create_unique_constraint_sig�sz(DefaultImpl.create_unique_constraint_sigc
Cshdd�|D�}t|�D]&}|j|vrqt�|�}|r1t�d|j�d|j�dtj�d��|�|�qdS)NcSsi|]}|j|�qSr=r[)r�r�r=r=r>r��rz8DefaultImpl._skip_functional_indexes.<locals>.<dictcomp>z@autogenerate skipping metadata-specified expression-based index z
; dialect z under SQLAlchemy z6 can't reflect these indexes so they can't be compared)	r�rdr�is_expression_indexrr�r7�sqlalchemy_version�discard)rar,r)�conn_indexes_by_name�idx�iexr=r=r>�_skip_functional_indexes�s$

����
��z$DefaultImpl._skip_functional_indexes�reflected_object�kindcCs|�di�S)N�dialect_options)r^)rarirjr=r=r>� adjust_reflected_dialect_options�sz,DefaultImpl.adjust_reflected_dialect_options)rQrrRrSrTrUrVrWrXrYrZr6r[r\)rQrr[rb)rr2r[r\)rir/r[rU)rlr.rmr(r[r\)r[rS)
rsrtrurvrwrxryr6r[rzrc)r�rtrurvr[r\)NFNNNNFNNNNN) r�r2r�r2r�rWr�r�rdr�r�r�rr�r�rWr�r�r�r�r�r�r�r�r�rWr�rWr�rr[r\)r�r2r�r�rr�r[r\)r�r2r�r�rr�r[r\)r�rr[r\)r�r%r[r\)r�r2r�r�rr�r[r\)rmr(r[r\)r�r'r�rr[r\)r�r�r[r\)T)rmr�r�r�r�rUr[r\)r�r$r[rB)rrBr	rBr[rU)rrBrrBr[rU)r!r�r"r$r[rU)
r'r(r)r*r+r(r,r*r[r\)F)r/r r5rUr�rr[r2)r8rr[r)r;r<r=r<r[r\)r[r\)rHr+rIr-r[rJ)r�r'r[rZ)r�r)r[rZ)rir6rjr2r[r6)9r?r@rA�__doc__r7rVr�rL�__annotations__rMrPr9�classmethodrerhrkrn�propertyrrr�
immutabledictr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr r#r&r.r4r7r:r>r9r@rDrGrKrYr_rarhrlr=r=r=r>rGHs�





�,��t��
	
�



	



�
&
&

!
		�


	






rG)�	metaclass�metadata_io�-Union[schema.Identity, schema.Sequence, None]�inspector_io�
default_io�'Union[schema.Identity, schema.Sequence]rM�Set[str]cs�t�|�}t�|�}t��t��d
���fdd�}|||t�|�t|��|��tjr?|t|d	i�t|d	i�|jt|d	i����fS)N�	meta_dict�Mapping[str, Any]�	insp_dict�default_dict�attrs�
Iterable[str]cs\t|����D]$}|�|�}|�|�}||kr+|�|�}||kr&��|�q��|�qdSrc)�set�
differencer^rQ)ryr{r|r}�attr�
meta_value�
insp_value�
default_value�rU�ignored_attrrMr=r>�check_dicts�s



��z._compare_identity_options.<locals>.check_dicts�dialect_kwargs)ryrzr{rzr|rzr}r~)r�_get_identity_options_dictr�union�identity_has_dialect_kwargsrPr�)rsrurvrM�meta_d�insp_dr�r=r�r>rN�s&
	
�


�rN)rsrtrurtrvrwrMrx)B�
__future__r�collectionsrr��typingrrrrrr	r
rrr
rrr�
sqlalchemyrrr�rrrrr�sqlalchemy.enginerr�sqlalchemy.engine.cursorr�sqlalchemy.engine.reflectionr�sqlalchemy.sqlr r!�sqlalchemy.sql.elementsr"r#�sqlalchemy.sql.schemar$r%r&r'r(r)�sqlalchemy.sql.selectabler*�sqlalchemy.sql.type_apir+r,�autogenerate.apir-�operations.batchr.r/r8r0r:rnrBrGrNr=r=r=r>�<module>sl
x