Ë
    r™ãj9`  ã            
      óô  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ e
rddlmZ ddlmZ ddlmZ  G d„ d«      Z G d„ d«      ZdZe	 	 	 	 	 	 d.d„«       Ze	 d/	 	 	 	 	 d0d„«       Z	 d/	 	 	 	 	 d1d„Zd2d„Zd3d „Z d4d!„Z!d"d#d$d%d&d'd(d)d*d+œ	Z" ejF                  d,jI                  d-„ e"D «       «      «      Z%y)5é    )ÚannotationsN)ÚAny)ÚCallable)ÚLiteral)ÚOptional)Úoverload)ÚSequence)ÚTYPE_CHECKING)ÚUnioné   )ÚENUM)ÚSET)ÚDATETIME)ÚTIME)Ú	TIMESTAMPé   )Útypes)Úutil)ÚMySQLDialect)ÚMySQLIdentifierPreparer)ÚReflectedColumnc                  ó$   — e Zd ZU dZded<   dd„Zy)ÚReflectedStatez;Stores raw information about a SHOW CREATE TABLE statement.úOptional[str]Úcharsetc                óX   — g | _         i | _        d | _        g | _        g | _        g | _        y ©N)ÚcolumnsÚtable_optionsÚ
table_nameÚkeysÚfk_constraintsÚck_constraints)Úselfs    úo/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/reflection.pyÚ__init__zReflectedState.__init__&   s/   € Ø.0ˆŒØ-/ˆÔØ)-ˆŒØ*,ˆŒ	Ø46ˆÔØ46ˆÕó    N©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r&   © r'   r%   r   r   !   s   … ÙEàÓô7r'   r   c                  óÀ   — e Zd ZdZ	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Z		 	 	 	 	 	 dd„Z
dd	„Z	 	 	 	 	 	 dd
„Z	 	 	 	 dd„Zdd„ZdZdd„Zdd„Zdd„Zdd„Zy)ÚMySQLTableDefinitionParserz4Parses the results of a SHOW CREATE TABLE statement.c                ó@   — || _         || _        | j                  «        y r   )ÚdialectÚpreparerÚ_prep_regexes)r$   r4   r5   s      r%   r&   z#MySQLTableDefinitionParser.__init__2   s   € ð ˆŒØ ˆŒØ×ÑÕr'   c                óÐ  — t        «       }||_        t        j                  d|«      D �]:  }|j	                  d| j
                  j                  z   «      r| j                  ||«       Œ?|j	                  d«      r| j                  ||«       Œc|dk(  rŒi|j	                  d«      r| j                  ||«       Œ�d|v r| j                  ||«       Œ¤|sŒ§| j                  |«      \  }}|€t        j                  d|z  «       ŒÖ|dk(  r|j                  j                  |«       Œ÷|d	k(  r|j                   j                  |«       �Œ|d
k(  r|j"                  j                  |«       �Œ;�Œ= |S )Nz\r?\nz  z) ú)zCREATE Ú	PARTITIONzUnknown schema content: %rÚkeyÚfk_constraintÚck_constraint)r   r   ÚreÚsplitÚ
startswithr5   Úinitial_quoteÚ_parse_columnÚ_parse_table_optionsÚ_parse_table_nameÚ_parse_partition_optionsÚ_parse_constraintsr   Úwarnr!   Úappendr"   r#   )r$   Úshow_creater   ÚstateÚlineÚtype_Úspecs          r%   Úparsez MySQLTableDefinitionParser.parse9   s@  € ô Ó ˆØˆŒÜ—H‘H˜X {Ó3ó 	ˆDØ�‰˜t d§m¡m×&AÑ&AÑAÔBØ×"Ñ" 4¨Õ/à—‘ Ô&Ø×)Ñ)¨$°Õ6à˜’ØØ—‘ Ô+Ø×&Ñ& t¨UÕ3Ø Ñ$Ø×-Ñ-¨d°EÕ:ñ Øà"×5Ñ5°dÓ;‘��tØ�=Ü—I‘IÐ:¸TÑAÕBØ˜e’^Ø—J‘J×%Ñ% dÕ+Ø˜oÒ-Ø×(Ñ(×/Ñ/°Ö5Ø˜oÒ-Ø×(Ñ(×/Ñ/°Ö5áð9	ð: ˆr'   c                óJ   — t        | j                  j                  |«      «      S r   )ÚboolÚ_re_is_viewÚmatch)r$   Úsqls     r%   Ú_check_viewz&MySQLTableDefinitionParser._check_view]   s   € Ü�D×$Ñ$×*Ñ*¨3Ó/Ó0Ð0r'   c                ó„  — | j                   j                  |«      }|r¢|j                  «       }| j                  |d   «      |d<   |d   rI| j                  j                  |d   «      }|r)|j                  «       d   r|j                  «       d   |d<   |d   r$| j
                  j                  |d   «      d   |d<   d|fS | j                  j                  |«      }|r…|j                  «       }| j
                  j                  |d   «      |d<   | j                  |d   «      D �cg c]  }|d   ‘Œ	 c}|d<   | j                  |d   «      D �cg c]  }|d   ‘Œ	 c}|d<   d	|fS | j                  j                  |«      }|r|j                  «       }d
|fS | j                  j                  |«      }|rd|fS d|fS c c}w c c}w )zaParse a KEY or CONSTRAINT line.

        :param line: A line of SHOW CREATE TABLE output
        r   Úversion_sqlÚparserr   r:   ÚtableÚlocalÚforeignr;   r<   Ú	partitionN)
Ú_re_keyrQ   Ú	groupdictÚ_parse_keyexprsÚ_re_key_version_sqlr5   Úunformat_identifiersÚ_re_fk_constraintÚ_re_ck_constraintÚ_re_partition)r$   rJ   ÚmrL   Úm2Úcs         r%   rE   z-MySQLTableDefinitionParser._parse_constraints`   sÑ  € ð �L‰L×Ñ˜tÓ$ˆÙØ—;‘;“=ˆDð #×2Ñ2°4¸	±?ÓCˆD�‰OØ�MÒ"Ø×-Ñ-×3Ñ3°D¸Ñ4GÓH�Ù˜"Ÿ,™,›.¨Ò2Ø%'§\¡\£^°HÑ%=�D˜‘NØ�HŠ~Ø!%§¡×!CÑ!CØ˜‘Nó"àñ"��X‘ð ˜$�;Ðð ×"Ñ"×(Ñ(¨Ó.ˆÙØ—;‘;“=ˆDØ ŸM™M×>Ñ>¸tÀG¹}ÓMˆD�‰MØ+/×+?Ñ+?ÀÀWÁÓ+NÖO a˜Q˜q›TÒOˆD�‰Mà"×2Ñ2°4¸	±?ÓCöØ��!“òˆD�‰Oð # DÐ(Ð(ð ×"Ñ"×(Ñ(¨Ó.ˆÙØ—;‘;“=ˆDØ" DÐ(Ð(ð ×Ñ×$Ñ$ TÓ*ˆÙà Ð$Ð$ð �dˆ|Ðùò' Pùòs   Ä$F8ÅF=c                ó‚   — | j                   \  }}|j                  |«      }|r ||j                  d«      «      |_        yy)zZExtract the table name.

        :param line: The first line of SHOW CREATE TABLE
        ÚnameN)Ú_pr_namerQ   Úgroupr    )r$   rJ   rI   ÚregexÚcleanuprc   s         r%   rC   z,MySQLTableDefinitionParser._parse_table_name˜   s<   € ð Ÿ™‰ˆˆwØ�K‰K˜ÓˆÙÙ& q§w¡w¨v£Ó7ˆEÕð r'   c                ó¾  — i }|r€|dk7  r{|}| j                   D ]j  \  }}|j                  |«      }|sŒ|j                  d«      |j                  d«      }	}|r ||	«      }	|	||j                  «       <   |j	                  d|«      }Œl dD ]  }
|j                  |
d«       Œ |j                  «       D ]-  \  }}||j                  | j                  j                  ›d|›�<   Œ/ y)zƒBuild a dictionary of all reflected table-level options.

        :param line: The final line of SHOW CREATE TABLE output.
        r8   Ú	directiveÚvalÚ )Úauto_incrementzdata directoryzindex directoryNÚ_)
Ú_pr_optionsÚsearchri   ÚlowerÚsubÚpopÚitemsr   r4   rg   )r$   rJ   rI   ÚoptionsÚrest_of_linerj   rk   rc   rm   ÚvalueÚnopeÚoptrn   s                r%   rB   z/MySQLTableDefinitionParser._parse_table_options£   sç   € ð ˆá�D˜C’KØˆLØ"&×"2Ñ"2ò ;‘��wØ—L‘L Ó.�ÙØØ#$§7¡7¨;Ó#7¸¿¹À»˜5�	ÙÙ# E›N�EØ-2�˜	Ÿ™Ó)Ñ*Ø$Ÿy™y¨¨\Ó:‘ð;ð Lò 	$ˆDØ�K‰K˜˜dÕ#ð	$ð  Ÿ™›ò 	J‰HˆC�ØFIˆE×Ñ¨4¯<©<×+<Ó+<¹cÐ BÒCñ	Jr'   c                ó€  — i }|d d  }|j                  d«      s|j                  d«      r)|dd  }|j                  d«      rŒ|j                  d«      rŒ)| j                  D �]   \  }}|j                  |«      }|rd|j                  vrŒ)|j	                  d«      }|j                  «       }|dk(  }	|dk(  s|	r™|j                  dd	«      }|j                  d
d	«      }|	r|j                  d«      r|d d }| j                  j                  dk(  r"|j                  d«      rd|v sd|v sd|v r|d d }| j                  j                  ›d|›d�}
|||
<   n2|j                  dd«      }|j	                  d«      }|r ||«      }|||<    n |j                  «       D ]©  \  }}d| j                  j                  z  }d| j                  j                  z  }||k(  s||k(  r@||j                  vr||j                  |<   Œ`|j                  |   ›d|›�|j                  |<   Œ‚||j                  | j                  j                  ›d|›�<   Œ« y )Nú(ú r   r9   rm   ÚsubpartitionrZ   z) */ro   ú,r8   éÿÿÿÿÚmariadbÚMAXVALUEÚMINVALUEÚENGINErq   Ú_definitionsrn   z%s_partition_definitionsz%s_subpartition_definitionsz, )r?   rr   rs   Úpatternri   rt   ÚreplaceÚendswithr4   rg   rw   r   )r$   rJ   rI   rx   Únew_linerj   rk   rc   rm   Úis_subpartitionÚdefsrz   r|   rn   Úpart_defÚsubpart_defs                   r%   rD   z3MySQLTableDefinitionParser._parse_partition_options½   sR  € ð ˆØ™�7ˆà×!Ñ! #Ô&¨(×*=Ñ*=¸cÔ*BØ  �|ˆHð ×!Ñ! #Õ&¨(×*=Ñ*=¸cÕ*Bð #×.Ñ.ó  	‰NˆE�7Ø—‘˜XÓ&ˆAÙ˜¨5¯=©=Ñ8ØàŸ™ Ó,ˆIØ!Ÿ™Ó)ˆIØ'¨>Ñ9ˆOà˜KÒ'©?Ø#×+Ñ+¨F°BÓ7�Ø#×+Ñ+¨C°Ó4�Ù" x×'8Ñ'8¸Ô'=Ø'¨¨˜}�HØ—<‘<×$Ñ$¨	Ò1°h×6GÑ6GÈÔ6Là" hÑ.Ø%¨Ñ1Ø# xÑ/ð $,¨C¨R =˜à.2¯l©l×.?Ó.?ÂÐK�Ø (�˜’ð &×-Ñ-¨c°3Ó7�	ØŸ™ ›�ÙÙ# E›N�EØ%*�˜	Ñ"ÙðA 	ðD  Ÿ™›ò 	N‰HˆC�Ø1°T·\±\×5FÑ5FÑGˆHØ7¸4¿<¹<×;LÑ;LÑMˆKØ�hŠ #¨Ò"4à˜e×1Ñ1Ñ1Ø/2�E×'Ñ'¨Ò,ð ×+Ñ+¨CÓ0Ùð0�E×'Ñ'¨Ò,ð
 KN�×#Ñ#¨t¯|©|×/@Ó/@Á#Ð$FÒGñ	Nr'   c                ó˜  — d}| j                   j                  |«      }|r|j                  «       }d|d<   n2| j                  j                  |«      }|r|j                  «       }d|d<   |st	        j
                  d|z  «       y|d   st	        j
                  d|z  «       |d   |d   |d	   }}}	 | j                  j                  |   }|�|dk(  rg }	n]|d   dk(  r$|d   dk(  r| j                  j                  |«      }	n1| j                  j                  |«      D �
cg c]  }
t        |
«      ‘Œ }	}
i }t        |t         t"        t$        f«      r|	r|	j'                  d«      |d<   dD ]  }|j)                  |d«      sŒd||<   Œ dD ]  }|j)                  |d«      sŒ||   ||<   Œ t        |t*        t,        f«      r$t/        |	«      }	t        |t,        «      r	d|	v rd|d<    ||	i |¤Ž}i }d|d<   |j)                  dd«      dk(  rd|d<   |j)                  dd«      dk(  rd|d<   |j)                  dd«      rd|d<   nt        |t        j0                  «      rd|d<   |j)                  dd«      }|dk(  rd}|j)                  dd«      }|�t3        |«      }|j)                  d«      }|�,t5        |¬«      }|j)                  d«      }|�|d k(  |d!<   ||d"<   t5        ||||¬#«      }|j7                  |«       |j8                  j;                  |«       y# t        $ r0 t	        j
                  d
|›d|›d�«       t        j                  }Y �Œzw xY wc c}
w )$z­Extract column details.

        Falls back to a 'minimal support' variant if full parse fails.

        :param line: Any column-bearing line from SHOW CREATE TABLE
        NTÚfullFzUnknown column definition %rz-Incomplete reflection of column definition %rrg   ÚcoltypeÚargzDid not recognize type 'z' of column 'ú'ro   r   r‚   Úfsp)ÚunsignedÚzerofill)r   ÚcollateÚretrieve_as_bitwiseÚnullableÚnotnullúNOT NULLÚnotnull_generatedÚautoincrÚautoincrementÚdefaultÚNULLÚcommentÚ	generated)ÚsqltextÚpersistenceÚSTOREDÚ	persistedÚcomputed)rg   Útyper    r¢   )Ú
_re_columnrQ   r\   Ú_re_column_looser   rF   r4   Úischema_namesÚKeyErrorÚsqltypesÚNullTypeÚ_re_csv_strÚfindallÚ_re_csv_intÚintÚ
issubclassr   r   r   rv   Úgetr   r   Ú_strip_valuesÚIntegerÚcleanup_textÚdictÚupdater   rG   )r$   rJ   rI   rL   rc   rg   rK   ÚargsÚcol_typeÚ	type_argsÚvÚtype_kwÚkwÚtype_instanceÚcol_kwr    r¢   r¤   r¨   r§   Úcol_ds                        r%   rA   z(MySQLTableDefinitionParser._parse_column÷   sa  € ð ˆØ�O‰O×!Ñ! $Ó'ˆÙØ—;‘;“=ˆDØˆD�ŠLà×%Ñ%×+Ñ+¨DÓ1ˆAÙØ—{‘{“}�Ø$��V‘ÙÜ�I‰IÐ4°tÑ;Ô<ØØ�FŠ|Ü�I‰IÐEÈÑLÔMà  ™L¨$¨y©/¸4À¹;�Tˆeˆð	)Ø—|‘|×1Ñ1°%Ñ8ˆHð ˆ<˜4 2š:Ø‰IØ�!‰W˜Š^  R¡¨C¢Ø×(Ñ(×0Ñ0°Ó6‰Ià)-×)9Ñ)9×)AÑ)AÀ$Ó)GÖH Aœ˜Q�ÐHˆIÐHð ˆä�h¤¬4´Ð ;Ô<ÙØ!*§¡¨qÓ!1�˜‘à*ò 	#ˆBØ�x‰x˜˜EÕ"Ø"�˜’ð	#ð )ò 	'ˆBØ�x‰x˜˜EÕ"Ø" 2™h�˜’ð	'ô �h¤¤s Ô,Ü% iÓ0ˆIä˜(¤CÔ(¨R°9©_Ø15�Ð-Ñ.á  )Ð7¨wÑ7ˆà!#ˆð "ˆˆzÑà�8‰8�I˜uÓ%¨Ò3Ø!&ˆF�:Ñà�8‰8Ð'¨Ó/°:Ò=Ø!&ˆF�:Ñð �8‰8�J Ô&Ø&*ˆF�?Ò#Ü˜¤(×"2Ñ"2Ô3Ø&+ˆF�?Ñ#ð —(‘(˜9 dÓ+ˆà�fÒàˆGà—(‘(˜9 dÓ+ˆàÐÜ" 7Ó+ˆGà—(‘(˜;Ó'ˆØÐÜ GÔ,ˆHØŸ™ Ó/ˆIØÐ$Ø(1°XÑ(=�˜Ñ%Ø!)ˆF�:ÑäØ˜M°7ÀGô
ˆð 	�‰�VÔØ�‰×Ñ˜UÕ#øôY ò 	)Ü�IŠIÚ@EÂtÐLôô  ×(Ñ(‹Hð		)üò Is   Â0L ÄMÌ5MÍMc                ó  ‡
— g }|D �]A  Š
ˆ
fd„dD «       \  }}}}}dg}	|	j                  | j                  j                  |«      «       |	j                  |«       |s|	j                  d«       |r§d|v rn¢|j                  d«      r4|j                  d«      r#|	j                  d«       |	j                  |«       n]|d	k(  r#|	j                  d«       |	j                  |«       n5|	j                  d«       |	j                  d
|j	                  dd«      z  «       |r|	j                  |«       |j                  dj                  |	«      «       �ŒD dj                  d| j                  j                  |«      z  dj                  |«      dg«      S )až  Re-format DESCRIBE output as a SHOW CREATE TABLE string.

        DESCRIBE is a much simpler reflection and is sufficient for
        reflecting views for runtime use.  This method formats DDL
        for columns only- keys are omitted.

        :param columns: A sequence of DESCRIBE or SHOW COLUMNS 6-tuples.
          SHOW FULL COLUMNS FROM rows must be rearranged for use with
          this function.
        c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   r0   )Ú.0ÚiÚrows     €r%   ú	<genexpr>zAMySQLTableDefinitionParser._describe_to_create.<locals>.<genexpr>s  s   øè ø€ ò 8Ø��A•ñ8ùs   ƒ)r   r   é   é   é   r   rœ   rp   Ú	timestampÚCÚDEFAULTr¡   z'%s'r”   ú''ro   zCREATE TABLE %s (
z,
z
) )rG   r5   Úquote_identifierr?   r‰   Újoin)r$   r    r   Úbufferrg   r¼   rš   r    ÚextrarJ   rÈ   s             @r%   Ú_describe_to_createz.MySQLTableDefinitionParser._describe_to_createa  si  ø€ ð  ˆØó 	*ˆCó8Ø /ô8Ñ4ˆD�(˜H g¨uð �5ˆDØ�K‰K˜Ÿ™×6Ñ6°tÓ<Ô=Ø�K‰K˜Ô!ÙØ—‘˜JÔ'ÙØ# wÑ.ØØ×(Ñ(¨Ô5¸'×:LÑ:LØô;ð —K‘K 	Ô*Ø—K‘K Õ(Ø Ò&Ø—K‘K 	Ô*Ø—K‘K Õ(à—K‘K 	Ô*Ø—K‘K ¨¯©¸¸dÓ)CÑ CÔDÙØ—‘˜EÔ"à�M‰M˜#Ÿ(™( 4›.Ö)ð7	*ð: �w‰wð *Ø—m‘m×4Ñ4°ZÓ@ñAð —
‘
˜6Ó"Øðó	
ð 		
r'   c           	     ó’   — | j                   j                  |«      D ���cg c]  \  }}}||rt        |«      nd|f‘Œ c}}}S c c}}}w )z8Unpack '"col"(2),"col" ASC'-ish strings into components.N)Ú_re_keyexprsr±   r³   )r$   ÚidentifiersÚcolnameÚlengthÚ	modifierss        r%   r]   z*MySQLTableDefinitionParser._parse_keyexprsš  sR   € ð /3×.?Ñ.?×.GÑ.GØó/÷
ð 
á*�˜ ð ¡V”c˜&”k°°yÒAô
ð 	
ùô 
s    Ac                ó  — g | _         | j                  j                  }t        t	        d| j                  j
                  || j                  j                  |«      fD �cg c]  }t        j                  |«      ‘Œ c}«      «      }t        d|z  | j                  j                  «      | _        t        d«      | _        t        d|z  «      | _        t        d«      | _        t        d«      | _        t        d|z  «      | _        t        d|z  «      | _        t        d	|z  «      | _        t        d
«      | _        |j+                  «       }d|d<   t        d|z  «      | _        t        d|z  «      | _        t        d«      | _        t2        D ]  }| j5                  |«       Œ dD ]  }| j7                  |«       Œ dD ]  }| j9                  |«       Œ | j;                  dd«       | j;                  dd«       | j;                  dd«       yc c}w )z Pre-compile regular expressions.)ÚiqÚfqÚesc_fqzM^CREATE (?:\w+ +)?TABLE +%(iq)s(?P<name>(?:%(esc_fq)s|[^%(fq)s])+)%(fq)s +\($z^CREATE(?! TABLE)(\s.*)?\sVIEWzW(?:(?:%(iq)s((?:%(esc_fq)s|[^%(fq)s])+)%(fq)s)(?:\((\d+)\))?(?: +(ASC|DESC))?(?=\,|$))+z\x27(?:\x27\x27|[^\x27])*\x27z\d+a¸    %(iq)s(?P<name>(?:%(esc_fq)s|[^%(fq)s])+)%(fq)s +(?P<coltype>\w+)(?:\((?P<arg>(?:\d+|\d+,\d+|(?:'(?:''|[^'])*',?)+))\))?(?: +(?P<unsigned>UNSIGNED))?(?: +(?P<zerofill>ZEROFILL))?(?: +CHARACTER SET +(?P<charset>[\w_]+))?(?: +COLLATE +(?P<collate>[\w_]+))?(?: +(?P<notnull>(?:NOT )?NULL))?(?: +DEFAULT +(?P<default>(?:NULL|'(?:''|[^'])*'|\(.+?\)|[\-\w\.\(\)]+(?: +ON UPDATE [\-\w\.\(\)]+)?)))?(?: +(?:GENERATED ALWAYS)? ?AS +(?P<generated>\(.*\))? ?(?P<persistence>VIRTUAL|STORED)?(?: +(?P<notnull_generated>(?:NOT )?NULL))?)?(?: +(?P<autoincr>AUTO_INCREMENT))?(?: +COMMENT +'(?P<comment>(?:''|[^'])*)')?(?: +COLUMN_FORMAT +(?P<colfmt>\w+))?(?: +STORAGE +(?P<storage>\w+))?(?: +(?P<extra>.*))?,?$zŸ  %(iq)s(?P<name>(?:%(esc_fq)s|[^%(fq)s])+)%(fq)s +(?P<coltype>\w+)(?:\((?P<arg>(?:\d+|\d+,\d+|\x27(?:\x27\x27|[^\x27])+\x27))\))?.*?(?P<notnull>(?:NOT )NULL)?aV    (?:(?P<type>\S+) )?KEY(?: +%(iq)s(?P<name>(?:%(esc_fq)s|[^%(fq)s])+)%(fq)s)?(?: +USING +(?P<using_pre>\S+))? +\((?P<columns>.+?)\)(?: +USING +(?P<using_post>\S+))?(?: +KEY_BLOCK_SIZE *[ =]? *(?P<keyblock>\S+))?(?: +WITH PARSER +(?P<parser>\S+))?(?: +COMMENT +(?P<comment>\x27(?:\x27\x27|[^\x27])*\x27))?(?: +/\*(?P<version_sql>.+)\*/ *)?,?$z+\!\d+ (?: *WITH PARSER +(?P<parser>\S+) *)?z/RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULTÚonaJ    CONSTRAINT +%(iq)s(?P<name>(?:%(esc_fq)s|[^%(fq)s])+)%(fq)s +FOREIGN KEY +\((?P<local>[^\)]+?)\) REFERENCES +(?P<table>%(iq)s[^%(fq)s]+%(fq)s(?:\.%(iq)s[^%(fq)s]+%(fq)s)?) +\((?P<foreign>(?:%(iq)s[^%(fq)s]+%(fq)s(?: *, *)?)+)\)(?: +(?P<match>MATCH \w+))?(?: +ON DELETE (?P<ondelete>%(on)s))?(?: +ON UPDATE (?P<onupdate>%(on)s))?z[  CONSTRAINT +%(iq)s(?P<name>(?:%(esc_fq)s|[^%(fq)s])+)%(fq)s +CHECK +\((?P<sqltext>.+)\),?z(?:.*)(?:SUB)?PARTITION(?:.*))r†   ÚTYPEÚAUTO_INCREMENTÚAVG_ROW_LENGTHzCHARACTER SETzDEFAULT CHARSETÚCHECKSUMÚCOLLATEÚDELAY_KEY_WRITEÚINSERT_METHODÚMAX_ROWSÚMIN_ROWSÚ	PACK_KEYSÚ
ROW_FORMATÚKEY_BLOCK_SIZEÚSTATS_SAMPLE_PAGES)úPARTITION BYúSUBPARTITION BYÚ
PARTITIONSÚSUBPARTITIONSr9   ÚSUBPARTITIONÚUNIONz
\([^\)]+\)Ú
TABLESPACEz.*? STORAGE DISKÚ	RAID_TYPEz4\w+\s+RAID_CHUNKS\s*\=\s*\w+RAID_CHUNKSIZE\s*=\s*\w+N)rr   r5   Úfinal_quoter¹   Úzipr@   Ú_escape_identifierr=   ÚescapeÚ_pr_compileÚ_unescape_identifierrh   Ú_re_compilerP   r×   r°   r²   rª   r«   r[   r^   Úcopyr`   ra   rb   Ú_options_of_type_stringÚ_add_option_stringÚ_add_option_wordÚ_add_partition_option_wordÚ_add_option_regex)r$   Ú_finalÚsÚquotesrÀ   Úoptions         r%   r6   z(MySQLTableDefinitionParser._prep_regexes¦  sW  € ð
 ð 	Ôð —‘×*Ñ*ˆäÜØ&ð Ÿ™×3Ñ3ØØŸ™×8Ñ8¸Ó@ðöàô —I‘I˜a•Lòó
ó
ˆô $ðDØFLñMà�M‰M×.Ñ.ó
ˆŒô 'Ð'HÓIˆÔô (ð9à;AñBó
ˆÔô 'Ð'GÓHˆÔô ' vÓ.ˆÔô &ðð. ñ/ó
ˆŒô8 !,ð-ð 06ñ	6ó!
ˆÔô #ð
ð ñ
ó
ˆŒô  $/Ø>ó$
ˆÔ ð �[‰[‹]ˆØDˆˆ4‰Ü!,ð
5ð 8:ñ
:ó"
ˆÔô$ "-ð%ð (*ñ	*ó"
ˆÔô )Ð)IÓJˆÔô
 .ò 	,ˆFØ×#Ñ# FÕ+ð	,ð
ò 	*ˆFð$ ×!Ñ! &Õ)ð%	*ð(
ò 	4ˆFð ×+Ñ+¨FÕ3ð	4ð 	×Ñ˜w¨Ô6Ø×Ñ˜|Ð-@ÔAØ×ÑØØCõ	
ùò_s   ÁHz(?:\s*(?:=\s*)|\s+)c                ó¢   — dt        j                  |«      ›d| j                  ›d�}| j                  j	                  t        |t        «      «       y )Nú(?P<directive>r8   z'(?P<val>(?:[^']|'')*?)'(?!'))r=   rù   Ú_optional_equalsrr   rG   rú   r¸   ©r$   rm   rj   s      r%   rÿ   z-MySQLTableDefinitionParser._add_option_stringh  s;   � ä�I‰I�iÕ Ø×!Ó!ð
ˆð 	×Ñ×Ñ¤¨E´<Ó @ÕAr'   c                ó˜   — dt        j                  |«      ›d| j                  ›d�}| j                  j	                  t        |«      «       y )Nr  r8   z(?P<val>\w+)©r=   rù   r	  rr   rG   rú   r
  s      r%   r   z+MySQLTableDefinitionParser._add_option_wordo  s9   � ä�I‰I�iÕ Ø×!Ó!ð
ˆð 	×Ñ×Ñ¤¨EÓ 2Õ3r'   c                óB  — |dk(  s|dk(  r'dt        j                  |«      ›d| j                  ›d�}nJ|dk(  s|dk(  r'dt        j                  |«      ›d| j                  ›d�}ndt        j                  |«      ›d	�}| j                  j	                  t        |«      «       y )
Nrî   rï   z(?<!\S)(?P<directive>r8   z(?P<val>\w+.*)rñ   rð   z(?P<val>\d+)z)(?!\S)r  r
  s      r%   r  z5MySQLTableDefinitionParser._add_partition_option_wordv  s�   € Ø˜Ò&¨)Ð7HÒ*Høä—	‘	˜)Õ$Ø×%Ó%ð‰Eð ˜/Ò)¨Y¸,Ò-Føä—	‘	˜)Õ$Ø×%Ó%ð‰Eð .Gô :<¿¹À9Õ9MÐOˆEØ×Ñ×Ñ¤¨EÓ 2Õ3r'   c                óž   — dt        j                  |«      ›d| j                  ›d|›d�}| j                  j	                  t        |«      «       y )Nr  r8   z(?P<val>r  r
  s      r%   r  z,MySQLTableDefinitionParser._add_option_regex…  s<   � ä�I‰I�iÕ Ø×!Ó!Úð
ˆð
 	×Ñ×Ñ¤¨EÓ 2Õ3r'   N)r4   r   r5   r   )rH   Ústrr   r   r)   r   )rR   r  r)   rO   )rJ   r  r)   z‚Union[tuple[None, str], tuple[Literal['partition'], str], tuple[Literal['ck_constraint', 'fk_constraint', 'key'], dict[str, str]]])rJ   r  rI   r   r)   r*   )r    r  r   z-Sequence[tuple[str, str, str, str, str, str]]r)   r  )rØ   r  r)   z$list[tuple[str, Optional[int], str]]r(   )rm   r  r)   r*   )rm   r  rj   r  r)   r*   )r+   r,   r-   r.   r&   rM   rS   rE   rC   rB   rD   rA   rÕ   r]   r6   r	  rÿ   r   r  r  r0   r'   r%   r2   r2   /   sÒ   „ Ù>ðØ#ðØ/Fóð"Øð"Ø)6ð"à	ó"óH1ó6óp	8óJð48NØð8NØ .ð8Nà	ó8Nóth$ðT7
àð7
ð ?ð7
ð 
ó	7
ðr

Øð

à	-ó

ó~
ð@ .ÐóBó4ó4ô4r'   r2   )ÚCOMMENTzDATA DIRECTORYzINDEX DIRECTORYÚPASSWORDÚ
CONNECTIONc                 ó   — y r   r0   ©rj   rk   s     r%   rú   rú   —  s   € ð 47r'   c                 ó   — y r   r0   r  s     r%   rú   rú   �  s   € ð $'r'   c                ó   — t        | «      |fS )z1Prepare a 2-tuple of compiled regex and callable.)rü   r  s     r%   rú   rú   £  s   € ô
 ˜Ó Ð(Ð(r'   c                ól   — t        j                  | t         j                  t         j                  z  «      S )z)Compile a string to regex, I and UNICODE.)r=   ÚcompileÚIÚUNICODE)rj   s    r%   rü   rü   «  s"   € ô �:‰:�eœRŸT™T¤B§J¡JÑ.Ó/Ð/r'   c                ó–   — g }| D ]A  }|dd dk(  s|dd dk(  r|dd j                  |d   dz  |d   «      }|j                  |«       ŒC |S )zStrip reflected values quotesr   r   ú"r”   r‚   rÊ   )r‰   rG   )ÚvaluesÚstrip_valuesÚas      r%   r¶   r¶   ±  sg   € à €LØò ˆØˆQˆqˆ6�SŠ=˜A˜a ˜F cšMà�!�B�—‘  !¡ q¡¨!¨A©$Ó/ˆAØ×Ñ˜AÕð	ð
 Ðr'   c                óf   — d| v rt        j                  t        d„ | «      } | j                  dd«      S )Nú\c                ó   — t         | d      S )Nr   )Ú_control_char_map)r  s    r%   ú<lambda>zcleanup_text.<locals>.<lambda>À  s   € Ô'¨¨!©Ñ-€ r'   rÐ   r”   )r=   ru   Ú_control_char_regexpr‰   )Úraw_texts    r%   r¸   r¸   ¼  s6   € ØˆxÑÜ—6‘6Ü Ù-Øó
ˆð
 ×Ñ˜D #Ó&Ð&r'   r!  ú úúú	ú
úúú)	z\\z\0z\az\bz\tz\nz\vz\fz\rú|c              #  óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   )r=   rù   )rÆ   Úks     r%   rÉ   rÉ   Ó  s   è ø€ Ò5˜aŒR�Y‰Y�q�\Ñ5ùs   ‚!)rj   r  rk   zCallable[[str], str]r)   z,tuple[re.Pattern[Any], Callable[[str], str]]r   )rj   r  rk   r*   r)   ztuple[re.Pattern[Any], None])rj   r  rk   zOptional[Callable[[str], str]]r)   z6tuple[re.Pattern[Any], Optional[Callable[[str], str]]])rj   r  r)   zre.Pattern[Any])r  zSequence[str]r)   z	list[str])r&  r  r)   r  )&Ú
__future__r   r=   Útypingr   r   r   r   r   r	   r
   r   Ú
enumeratedr   r   r   r   r   r   ro   r®   r   Úbaser   r   Úengine.interfacesr   r   r2   rþ   rú   rü   r¶   r¸   r#  r  rÒ   r%  r0   r'   r%   ú<module>r7     s<  ðõ #ã 	Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý !Ý áÝ"Ý-Ý4÷7ñ 7÷\	4ñ \	4ð~Ð ð 
ð7Øð7Ø-ð7à1ò7ó 
ð7ð
 
à $ð'Øð'Øð'à!ò'ó 
ð'ð ;?ð)Øð)Ø7ð)à;ó)ó0óó'ð ØØØØØØØØñÐ ð "�r—z‘zØ‡H�HÑ5Ð#4Ô5Ó5óÑ r'   