L i dZddlmZddlZddlmZddlmZddlm Z ddl m Z dd l m Z dd l m Z dd l mZdd l mZdd l mZddl mZddl mZddlmZddlmZGddZedede dedediZdZdZej2eddZej2e dej2eddZy) z2Establish constraint and index naming conventions.) annotationsN)events) _NONE_NAME)conv)CheckConstraint)Column) Constraint)ForeignKeyConstraint)Index)PrimaryKeyConstraint)Table)UniqueConstraint)event)exccHeZdZdZdZdZdZdZdZdZ dZ d Z d Z y ) ConventionDictcz||_t|t|_||_||_|j |_yN)const isinstancer _is_fktable conventionname _const_name)selfrrrs [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/sql/naming.py__init__zConventionDict.__init__s2  (<=  $ ::c.|jjSr)rrrs r_key_table_namezConventionDict._key_table_name&szzr!c|jr0 |jj|}t|j|St |jj} ||}t||S#t $rYywxYw#t $rYywxYw)N)rrelementsgetattrparent IndexErrorlistcolumns)ridxattrnamefkcolscols r _column_XzConventionDict._column_X)s ;; 4ZZ((-ryy(33 **+D .3isH--    s#A.A=. A:9A:= B B c|jdtfvrtjdt |jt sd|j _|jS)NzcNaming convention including %(constraint_name)s token requires that constraint is explicitly named.)rrrInvalidRequestErrorrrrrr#s r_key_constraint_namez#ConventionDict._key_constraint_name:sV   j1 1))2  $**D1"DJJOr!c&|j|dS)Nkeyr2rr-s r_key_column_X_keyz ConventionDict._key_column_X_keyEs~~c5))r!c&|j|dS)Nrr8r9s r_key_column_X_namez!ConventionDict._key_column_X_nameKs~~c6**r!c&|j|dS)N _ddl_labelr8r9s r_key_column_X_labelz"ConventionDict._key_column_X_labelNs~~c<00r!c|jjd}|jjd}t |dk(r|\}}}|S|\}}|S)Nr.)rr'target_fullnamesplitlen)rr/refs refschemareftablerefcols r_key_referred_table_namez'ConventionDict._key_referred_table_nameQs[ ZZ  #!!'', t9>*. 'Ix $ Hfr!c`|jj|}|jjSr)rr'columnr)rr-r/s r_key_referred_column_X_namez*ConventionDict._key_referred_column_X_nameZs& ZZ  %yy~~r!cb||jvr*|j||j|jSt|d|zrt |d|zSt j d|}|r|jd}|jd}|r|jr|jj}nt|jj}g}t|D]?\}}d|jd|zdz} |jt |||A|j#drdnd } | j%|Sd|j|dz}t'|}t||rt |||St!|#t$r t!|wxYw) Nz_key_%sz.*_?column_(\d+)(_?N)?_.+rr_key_0X_r&)rrrhasattrr(rematchgrouprr'r+r, enumeratereplaceappendAttributeErrorKeyError startswithjoinint) rr7 col_templater- multipleselemstokenselemattrseps r __getitem__zConventionDict.__getitem__as $// !'4??3' DJJ? ? T9s? +174S13 388$@#FL"((+(..q1 {{ $ 3 3 $TZZ%7%7 8F%.u%50 T&S9_c)JJ0"MM*='$*=c*BC0 "+!5!5c!:#C88F++"S[[c%::Dc(CtT*2wtT2377sm .0"*3-/0s !FF.N) __name__ __module__ __qualname__r r$r2r5r:r<r?rJrMrfr!rrrs4&."  * +1r!rixpkckuqr/c~|jD].}|tvrt||vr|t|cS||vs)||cSyr)__mro__ _prefix_dict)dict_r7super_s r_get_conventionrtsO++ \ !l6&:e&Cf-. . u_=  r!cz|j}t|jt|}t |j t r |j S|_t |j t sE|j d|vs|j tur#t |t|||jzS|turyy)Nconstraint_name) metadatartnaming_conventiontyperrrrr)rrrwrs r_constraint_name_for_tablerzs~~H !;!;T%[IJ%**d#zz5::t, JJ  J.zzZ' UE8+E+EF G   z ! "r!'_sa_event_column_added_to_pk_constraintcp|jr*|j}d|_t||}|r||_yyyr)_implicit_generatedrrrz) pk_constraintr1rnewnames r_column_added_to_pk_constraintrsC(( ##! ,]EB !(M  )r!after_parent_attachct|trtj|dfdyt|trDtj t sj turyt|}|r|_yyy)Nrct|Sr)_constraint_name)r1rrs rz"_constraint_name..s/u=r!) rr rlistenrrrrrz)rrrs` rrrsn%   ! = E5 ! ejj$ '5::+C ,UE:  EJ  "r!)__doc__ __future__rrTr&rbaserr'rschemarr r r r r rrrrrrqrtrz listens_forrrrjr!rrs9" "#(($aaJ 4$Td$  .C ) ):455/0!16!r!