o znh @sdZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z dd lm Z dd lm Z dd lm Z dd lm Z ddlmZddlmZddlmZddlmZGdddeZe de dedede diZddZddZee dee ddd ZdS)!z5Establish constraint and index naming conventions. N) _defer_name)_defer_none_name)conv)CheckConstraint)Column) Constraint)ForeignKeyConstraint)Index)PrimaryKeyConstraint)Table)UniqueConstraint)event)events)excc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)ConventionDictcCs*||_t|t|_||_||_|j|_dSN)const isinstancer _is_fktable conventionname _const_name)selfrrrr@/usr/local/lib/python3.10/dist-packages/sqlalchemy/sql/naming.py__init__ s   zConventionDict.__init__cCs|jjSr)rrrrrr_key_table_name'szConventionDict._key_table_namecCs(|jr |jj|}|jSt|jj|Sr)rrelementsparentlistcolumnsridxfkrrr _column_X*s zConventionDict._column_XcCs8t|jtdtfrtdt|jtsd|j_|jS)NzcNaming convention including %(constraint_name)s token requires that constraint is explicitly named.) rrtyperrInvalidRequestErrorrrrrrrr_key_constraint_name1s z#ConventionDict._key_constraint_namecC ||jSr)r(keyrr&rrr_key_column_X_key<s z ConventionDict._key_column_X_keycCr,r)r(rr.rrr_key_column_X_nameB z!ConventionDict._key_column_X_namecCr,r)r( _ddl_labelr.rrr_key_column_X_labelEr1z"ConventionDict._key_column_X_labelcCs>|jjd}|jd}t|dkr|\}}}|S|\}}|S)Nr.)rr!target_fullnamesplitlen)rr'refs refschemareftablerefcolrrr_key_referred_table_nameHs    z'ConventionDict._key_referred_table_namecCs|jj|}|jjSr)rr!columnrr%rrr_key_referred_column_X_nameQs z*ConventionDict._key_referred_column_X_namec Cs,||jvr|j||j|jSt|d|rt|d|Std|}|r|d}|d}|rz|jr:|jj }nt |jj }g}t |D]%\}}d| d|d}z |t|||WqFtykt|w|drsdnd } | |Sd| |d}t|}t||rt|||St|) Nz_key_%sz.*_?column_(\d+)(_?N)?_.+rr_key_0X_)rrrhasattrgetattrrematchgrouprr!r#r$ enumeratereplaceappendAttributeErrorKeyError startswithjoinint) rr- col_templater& multipleselemstokenselemattrseprrr __getitem__Xs6         zConventionDict.__getitem__N) __name__ __module__ __qualname__rr r(r+r/r0r3r=r?rYrrrrrs  rixpkckuqr'cCsH|jD]}|tvrt||vr|t|S||vr!||SqdSr)__mro__ _prefix_dict)dict_r-super_rrr_get_conventions  recCs|j}t|jt|}t|jtr|jS|dur8t|jts8|jdus-d|vs-t|jtr8t|t|||jSt|t r?dSdS)Nconstraint_name) metadatarenaming_conventionr)rrrrrr)rrrgrrrr_constraint_name_for_tables&      riafter_parent_attachcsft|trt|dfdddSt|tr/tjttfr!dSt|}|dur1|_dSdSdS)Nrjcs t|Sr)_constraint_name)colrrrrs z"_constraint_name..) rrrlistenr rrrri)rrnewnamerrmrrks     rk)__doc__rGr!rrrschemarrrr r r r r rDrrrobjectrrbreri listens_forrkrrrrs8              [