§
    eŠtjŒ`  ã            
      ó  — 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 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		 dAdBd(„¦   «         Z"	 dAdCd+„Z"dDd-„Z#dEd1„Z$dFd3„Z%d4d5d6d7d8d9d:d;d<d=œ	Z& ej'        d> (                    d?„ e&D ¦   «         ¦  «        ¦  «        Z)dS )Gé    )ÚannotationsN)ÚAny)ÚCallable)ÚDict)ÚList)ÚOptional)Úoverload)ÚSequence)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   )ÚENUM)ÚSET)ÚDATETIME)ÚTIME)Ú	TIMESTAMPé   )Útypes)Úutil)ÚLiteral)ÚMySQLDialect)ÚMySQLIdentifierPreparer)ÚReflectedColumnc                  ó&   — e Zd ZU dZded<   dd„ZdS )	ÚReflectedStatez;Stores raw information about a SHOW CREATE TABLE statement.úOptional[str]ÚcharsetÚreturnÚNonec                óZ   — g | _         i | _        d | _        g | _        g | _        g | _        d S ©N)ÚcolumnsÚtable_optionsÚ
table_nameÚkeysÚfk_constraintsÚck_constraints)Úselfs    úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/reflection.pyÚ__init__zReflectedState.__init__)   s5   € Ø.0ˆŒØ-/ˆÔØ)-ˆŒØ*,ˆŒ	Ø46ˆÔØ46ˆÔÐÐó    N©r   r    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r+   © r,   r*   r   r   $   s<   € € € € € € ØEÐEàÐÐÑð7ð 7ð 7ð 7ð 7ð 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d0d „Zd1d!„Zd"Zd2d$„Zd2d%„Zd2d&„Zd3d(„Zd)S )4ÚMySQLTableDefinitionParserz4Parses the results of a SHOW CREATE TABLE statement.Údialectr   Úpreparerr   c                óJ   — || _         || _        |                      ¦   «          d S r"   )r6   r7   Ú_prep_regexes)r)   r6   r7   s      r*   r+   z#MySQLTableDefinitionParser.__init__5   s*   € ð ˆŒØ ˆŒØ×ÒÑÔÐÐÐr,   Úshow_createÚstrr   r   r   r   c                ó   — t          ¦   «         }||_        t          j        d|¦  «        D �]Q}|                     d| j        j        z   ¦  «        r|                      ||¦  «         Œ<|                     d¦  «        r|                      ||¦  «         Œh|dk    rŒo|                     d¦  «        r|  	                    ||¦  «         Œ›d|v r|  
                    ||¦  «         Œ¶|sŒ¹|                      |¦  «        \  }}|€t          j        d|z  ¦  «         Œë|dk    r|j                             |¦  «         �Œ|d	k    r|j                             |¦  «         �Œ/|d
k    r|j                             |¦  «         �ŒQ�ŒS|S )Nz\r?\nz  z) ú)zCREATE Ú	PARTITIONzUnknown schema content: %rÚkeyÚfk_constraintÚck_constraint)r   r   ÚreÚsplitÚ
startswithr7   Úinitial_quoteÚ_parse_columnÚ_parse_table_optionsÚ_parse_table_nameÚ_parse_partition_optionsÚ_parse_constraintsr   Úwarnr&   Úappendr'   r(   )r)   r:   r   ÚstateÚlineÚtype_Úspecs          r*   Úparsez MySQLTableDefinitionParser.parse<   s¨  € õ Ñ Ô ˆØˆŒÝ”H˜X {Ñ3Ô3ð 	ñ 	ˆDØ�Š˜t d¤mÔ&AÑAÑBÔBð Ø×"Ò" 4¨Ñ/Ô/Ð/Ð/à—’ Ñ&Ô&ð Ø×)Ò)¨$°Ñ6Ô6Ð6Ð6à˜’�ØØ—’ Ñ+Ô+ð Ø×&Ò& t¨UÑ3Ô3Ð3Ð3Ø Ð$Ð$Ø×-Ò-¨d°EÑ:Ô:Ð:Ð:ð ð Øà"×5Ò5°dÑ;Ô;‘��tØ�=Ý”IÐ:¸TÑAÑBÔBÐBÐBØ˜e’^�^Ø”J×%Ò% dÑ+Ô+Ð+Ñ+Ø˜oÒ-Ð-ØÔ(×/Ò/°Ñ5Ô5Ð5Ñ5Ø˜oÒ-Ð-ØÔ(×/Ò/°Ñ5Ô5Ð5Ñ5áØˆr,   ÚsqlÚboolc                óP   — t          | j                             |¦  «        ¦  «        S r"   )rS   Ú_re_is_viewÚmatch)r)   rR   s     r*   Ú_check_viewz&MySQLTableDefinitionParser._check_view`   s!   € Ý�DÔ$×*Ò*¨3Ñ/Ô/Ñ0Ô0Ð0r,   rN   ú‚Union[Tuple[None, str], Tuple[Literal['partition'], str], Tuple[Literal['ck_constraint', 'fk_constraint', 'key'], Dict[str, str]]]c                óÈ  — | j                              |¦  «        }|rÈ|                     ¦   «         }|                      |d         ¦  «        |d<   |d         rY| j                             |d         ¦  «        }|r7|                     ¦   «         d         r|                     ¦   «         d         |d<   |d         r)| j                             |d         ¦  «        d         |d<   d|fS | j                             |¦  «        }|r‹|                     ¦   «         }| j                             |d         ¦  «        |d<   d„ |                      |d         ¦  «        D ¦   «         |d<   d	„ |                      |d
         ¦  «        D ¦   «         |d
<   d|fS | j                             |¦  «        }|r|                     ¦   «         }d|fS | j	                             |¦  «        }|rd|fS d|fS )zaParse a KEY or CONSTRAINT line.

        :param line: A line of SHOW CREATE TABLE output
        r#   Úversion_sqlÚparserr   r?   Útablec                ó   — g | ]
}|d          ‘ŒS ©r   r3   ©Ú.0Úcs     r*   ú
<listcomp>zAMySQLTableDefinitionParser._parse_constraints.<locals>.<listcomp>†   s   € ÐOÐOÐO a˜Q˜qœTÐOÐOÐOr,   Úlocalc                ó   — g | ]
}|d          ‘ŒS r^   r3   r_   s     r*   rb   zAMySQLTableDefinitionParser._parse_constraints.<locals>.<listcomp>‡   s)   € ð ð ð Ø��!”ðð ð r,   Úforeignr@   rA   Ú	partitionN)
Ú_re_keyrV   Ú	groupdictÚ_parse_keyexprsÚ_re_key_version_sqlr7   Úunformat_identifiersÚ_re_fk_constraintÚ_re_ck_constraintÚ_re_partition)r)   rN   ÚmrP   Úm2s        r*   rJ   z-MySQLTableDefinitionParser._parse_constraintsc   s
  € ð ŒL×Ò˜tÑ$Ô$ˆØð 	Ø—;’;‘=”=ˆDð #×2Ò2°4¸	´?ÑCÔCˆD�‰OØ�MÔ"ð >ØÔ-×3Ò3°D¸Ô4GÑHÔH�Øð >˜"Ÿ,š,™.œ.¨Ô2ð >Ø%'§\¢\¡^¤^°HÔ%=�D˜‘NØ�HŒ~ð Ø!%¤×!CÒ!CØ˜”Nñ"ô "àô"��X‘ð ˜$�;Ðð Ô"×(Ò(¨Ñ.Ô.ˆØð 	)Ø—;’;‘=”=ˆDØ œM×>Ò>¸tÀG¼}ÑMÔMˆD�‰MØOÐO¨4×+?Ò+?ÀÀWÄÑ+NÔ+NÐOÑOÔOˆD�‰Mðð Ø"×2Ò2°4¸	´?ÑCÔCðñ ô ˆD�‰Oð # DÐ(Ð(ð Ô"×(Ò(¨Ñ.Ô.ˆØð 	)Ø—;’;‘=”=ˆDØ" DÐ(Ð(ð Ô×$Ò$ TÑ*Ô*ˆØð 	%à Ð$Ð$ð �dˆ|Ðr,   rM   r    c                ó’   — | j         \  }}|                     |¦  «        }|r% ||                     d¦  «        ¦  «        |_        dS dS )zZExtract the table name.

        :param line: The first line of SHOW CREATE TABLE
        ÚnameN)Ú_pr_namerV   Úgroupr%   )r)   rN   rM   ÚregexÚcleanupro   s         r*   rH   z,MySQLTableDefinitionParser._parse_table_name›   sT   € ð œ‰ˆˆwØ�KŠK˜ÑÔˆØð 	8Ø&˜w q§w¢w¨v¡¤Ñ7Ô7ˆEÔÐÐð	8ð 	8r,   c                óÌ  — i }|r‘|dk    r‹|}| j         D ]�\  }}|                     |¦  «        }|sŒ|                     d¦  «        |                     d¦  «        }	}|r ||	¦  «        }	|	||                     ¦   «         <   |                     d|¦  «        }Œ‚dD ]}
|                     |
d¦  «         Œ|                     ¦   «         D ]\  }}||j        | j        j	        ›d|›�<   ŒdS )zƒBuild a dictionary of all reflected table-level options.

        :param line: The final line of SHOW CREATE TABLE output.
        r=   Ú	directiveÚvalÚ )Úauto_incrementzdata directoryzindex directoryNÚ_)
Ú_pr_optionsÚsearchrt   ÚlowerÚsubÚpopÚitemsr$   r6   rr   )r)   rN   rM   ÚoptionsÚrest_of_lineru   rv   ro   rx   ÚvalueÚnopeÚoptry   s                r*   rG   z/MySQLTableDefinitionParser._parse_table_options¦   s  € ð ˆàð 
	;�D˜C’K�KØˆLØ"&Ô"2ð ;ð ;‘��wØ—L’L Ñ.Ô.�Øð ØØ#$§7¢7¨;Ñ#7Ô#7¸¿ºÀ¹¼˜5�	Øð +Ø#˜G E™NœN�EØ-2�˜	ŸšÑ)Ô)Ñ*Ø$Ÿyšy¨¨\Ñ:Ô:��àKð 	$ð 	$ˆDØ�KŠK˜˜dÑ#Ô#Ð#Ð#àŸš™œð 	Jð 	J‰HˆC�ØFIˆEÔ¨4¬<Ô+<Ð+<Ð+<¸c¸cÐ BÑCÐCð	Jð 	Jr,   c                óx  — i }|d d …         }|                      d¦  «        s|                      d¦  «        r4|dd …         }|                      d¦  «        °|                      d¦  «        °4| j        D �]:\  }}|                     |¦  «        }|r	d|j        vrŒ'|                     d¦  «        }|                     ¦   «         }|dk    }	|dk    s|	r |                     dd	¦  «        }|                     d
d	¦  «        }|	r|                     d¦  «        r
|d d…         }| j        j	        dk    r+|                     d¦  «        rd|v sd|v sd|v r
|d d…         }| j        j	        ›d|›d�}
|||
<   n=|                     dd¦  «        }|                     d¦  «        }|r ||¦  «        }|||<    | 
                    ¦   «         D ]w\  }}d| j        j	        z  }d| j        j	        z  }||k    s||k    r/||j        vr||j        |<   ŒC|j        |         ›d|›�|j        |<   Œ^||j        | j        j	        ›d|›�<   Œxd S )Nú(ú r   r>   rx   Úsubpartitionrf   z) */rz   ú,r=   éÿÿÿÿÚmariadbÚMAXVALUEÚMINVALUEÚENGINEr|   Ú_definitionsry   z%s_partition_definitionsz%s_subpartition_definitionsz, )rD   r}   r~   Úpatternrt   r   ÚreplaceÚendswithr6   rr   r‚   r$   )r)   rN   rM   rƒ   Únew_lineru   rv   ro   rx   Úis_subpartitionÚdefsr…   r‡   ry   Úpart_defÚsubpart_defs                   r*   rI   z3MySQLTableDefinitionParser._parse_partition_optionsÀ   sÐ  € ð ˆØ˜˜˜”7ˆà×!Ò! #Ñ&Ô&ð 	$¨(×*=Ò*=¸cÑ*BÔ*Bð 	$Ø   ”|ˆHð ×!Ò! #Ñ&Ô&ð 	$¨(×*=Ò*=¸cÑ*BÔ*Bð 	$ð #Ô.ð  	ñ  	‰NˆE�7Ø—’˜XÑ&Ô&ˆAØð ˜¨5¬=Ð8Ð8ØàŸš Ñ,Ô,ˆIØ!ŸšÑ)Ô)ˆIØ'¨>Ò9ˆOà˜KÒ'Ð'¨?Ð'Ø#×+Ò+¨F°BÑ7Ô7�Ø#×+Ò+¨C°Ñ4Ô4�Ø"ð - x×'8Ò'8¸Ñ'=Ô'=ð -Ø'¨¨¨œ}�HØ”<Ô$¨	Ò1Ð1°h×6GÒ6GÈÑ6LÔ6LÐ1à" hÐ.Ð.Ø%¨Ð1Ð1Ø# xÐ/Ð/ð $,¨C¨R¨C¤=˜à.2¬lÔ.?Ð.?Ð.?ÀÀÀÐK�Ø (�˜‘�ð &×-Ò-¨c°3Ñ7Ô7�	ØŸš ™œ�Øð +Ø#˜G E™NœN�EØ%*�˜	Ñ"ØàŸš™œð 	Nð 	N‰HˆC�Ø1°T´\Ô5FÑGˆHØ7¸4¼<Ô;LÑMˆKØ�hŠˆ #¨Ò"4Ð"4à˜eÔ1Ð1Ð1Ø/2�EÔ'¨Ñ,Ð,ð Ô+¨CÔ0Ð0Ð0Ø˜ð0�EÔ'¨Ñ,Ð,ð
 KN�Ô#¨t¬|Ô/@Ð/@Ð/@À#À#Ð$FÑGÐGð	Nð 	Nr,   c                ó.  — d}| j                              |¦  «        }|r|                     ¦   «         }d|d<   n5| j                             |¦  «        }|r|                     ¦   «         }d|d<   |st	          j        d|z  ¦  «         dS |d         st	          j        d|z  ¦  «         |d         |d         |d	         }}}	 | j        j        |         }n7# t          $ r* t	          j        d
|›d|›d�¦  «         t          j
        }Y nw xY w|�|dk    rg }	nW|d         dk    r'|d         dk    r| j                             |¦  «        }	n$d„ | j                             |¦  «        D ¦   «         }	i }
t          |t          t           t"          f¦  «        r|	r|	                     d¦  «        |
d<   dD ]}|                     |d¦  «        rd|
|<   ŒdD ]#}|                     |d¦  «        r||         |
|<   Œ$t          |t(          t*          f¦  «        r-t-          |	¦  «        }	t          |t*          ¦  «        r	d|	v rd|
d<    ||	i |
¤Ž}i }d|d<   |                     dd¦  «        dk    rd|d<   |                     dd¦  «        dk    rd|d<   |                     dd¦  «        rd|d<   nt          |t          j        ¦  «        rd|d<   |                     dd¦  «        }|dk    rd}|                     dd¦  «        }|�t1          |¦  «        }|                     d¦  «        }|�5t3          |¬¦  «        }|                     d ¦  «        }|�	|d!k    |d"<   ||d#<   t3          ||||¬$¦  «        }|                     |¦  «         |j                             |¦  «         dS )%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 %rrr   ÚcoltypeÚargzDid not recognize type 'z' of column 'ú'rz   r   r�   c                ó,   — g | ]}t          |¦  «        ‘ŒS r3   ©Úint)r`   Úvs     r*   rb   z<MySQLTableDefinitionParser._parse_column.<locals>.<listcomp>"  s   € ÐHÐHÐH A�˜Q™œÐHÐHÐHr,   Ú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)rr   Útyper¯   r±   )Ú
_re_columnrV   rh   Ú_re_column_looser   rK   r6   Úischema_namesÚKeyErrorÚsqltypesÚNullTypeÚ_re_csv_strÚfindallÚ_re_csv_intÚ
issubclassr   r   r   r�   Úgetr   r   Ú_strip_valuesÚIntegerÚcleanup_textÚdictÚupdater#   rL   )r)   rN   rM   rP   ro   rr   rO   ÚargsÚcol_typeÚ	type_argsÚtype_kwÚkwÚtype_instanceÚcol_kwr¯   r±   r³   r·   r¶   Úcol_ds                       r*   rF   z(MySQLTableDefinitionParser._parse_columnú   s'  € ð ˆØŒO×!Ò! $Ñ'Ô'ˆØð 	%Ø—;’;‘=”=ˆDØˆD�‰LˆLàÔ%×+Ò+¨DÑ1Ô1ˆAØð %Ø—{’{‘}”}�Ø$��V‘Øð 	ÝŒIÐ4°tÑ;Ñ<Ô<Ð<ØˆFØ�FŒ|ð 	NÝŒIÐEÈÑLÑMÔMÐMà  œL¨$¨y¬/¸4À¼;�Tˆeˆð	)Ø”|Ô1°%Ô8ˆHˆHøÝð 	)ð 	)ð 	)ÝŒIˆIØ@EÀÀÀtÀtÀtÐLñô ð õ  Ô(ˆHˆHˆHð		)øøøð ˆ<˜4 2š:˜:ØˆIˆIØ�!ŒW˜Š^ˆ^  R¤¨C¢ ØÔ(×0Ò0°Ñ6Ô6ˆIˆIàHÐH¨Ô)9×)AÒ)AÀ$Ñ)GÔ)GÐHÑHÔHˆIð ˆå�h¥­4µÐ ;Ñ<Ô<ð 	2Øð 2Ø!*§¢¨qÑ!1Ô!1�˜‘à*ð 	#ð 	#ˆBØ�xŠx˜˜EÑ"Ô"ð #Ø"�˜‘øØ(ð 	'ð 	'ˆBØ�xŠx˜˜EÑ"Ô"ð 'Ø" 2œh�˜‘øÝ�h¥¥s Ñ,Ô,ð 	6Ý% iÑ0Ô0ˆIå˜(¥CÑ(Ô(ð 6¨R°9¨_¨_Ø15�Ð-Ñ.à ˜ )Ð7¨wÐ7Ð7ˆà!#ˆð "ˆˆzÑà�8Š8�I˜uÑ%Ô%¨Ò3Ð3Ø!&ˆF�:Ñà�8Š8Ð'¨Ñ/Ô/°:Ò=Ð=Ø!&ˆF�:Ñð �8Š8�J Ñ&Ô&ð 	,Ø&*ˆF�?Ñ#Ð#Ý˜¥(Ô"2Ñ3Ô3ð 	,Ø&+ˆF�?Ñ#ð —(’(˜9 dÑ+Ô+ˆà�fÒÐàˆGà—(’(˜9 dÑ+Ô+ˆàÐÝ" 7Ñ+Ô+ˆGà—(’(˜;Ñ'Ô'ˆØÐÝ GÐ,Ñ,Ô,ˆHØŸš Ñ/Ô/ˆIØÐ$Ø(1°XÒ(=�˜Ñ%Ø!)ˆF�:ÑåØ˜M°7ÀGð
ñ 
ô 
ˆð 	�Š�VÑÔÐØŒ×Ò˜UÑ#Ô#Ð#Ð#Ð#s   ÃC Ã1DÄDr%   r#   ú-Sequence[Tuple[str, str, str, str, str, str]]c                óœ  ‡
— g }|D �]€Š
ˆ
fd„dD ¦   «         \  }}}}}dg}	|	                      | j                             |¦  «        ¦  «         |	                      |¦  «         |s|	                      d¦  «         |rÌd|v rnÇ|                     d¦  «        r@|                     d¦  «        r+|	                      d¦  «         |	                      |¦  «         nr|d	k    r+|	                      d¦  «         |	                      |¦  «         nA|	                      d¦  «         |	                      d
|                     dd¦  «        z  ¦  «         |r|	                      |¦  «         |                      d                     |	¦  «        ¦  «         �Œ‚d                     d| j                             |¦  «        z  d                     |¦  «        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  — | ]}‰|         V — Œd S r"   r3   )r`   ÚiÚrows     €r*   ú	<genexpr>zAMySQLTableDefinitionParser._describe_to_create.<locals>.<genexpr>v  s8   øè è € ð 8ð 8Ø��A”ð8ð 8ð 8ð 8ð 8ð 8r,   )r   r   é   é   é   rŠ   r«   r{   Ú	timestampÚCÚDEFAULTr°   z'%s'rŸ   ú''rz   zCREATE TABLE %s (
z,
z
) )rL   r7   Úquote_identifierrD   r”   Újoin)r)   r%   r#   Úbufferrr   rÊ   r©   r¯   ÚextrarN   rÕ   s             @r*   Ú_describe_to_createz.MySQLTableDefinitionParser._describe_to_created  s  ø€ ð  ˆØð 	*ñ 	*ˆCð8ð 8ð 8ð 8Ø /ð8ñ 8ô 8Ñ4ˆD�(˜H g¨uð �5ˆDØ�KŠK˜œ×6Ò6°tÑ<Ô<Ñ=Ô=Ð=Ø�KŠK˜Ñ!Ô!Ð!Øð (Ø—’˜JÑ'Ô'Ð'Øð EØ# wÐ.Ð.ØØ×(Ò(¨Ñ5Ô5ð 
E¸'×:LÒ:LØñ;ô ;ð 
Eð —K’K 	Ñ*Ô*Ð*Ø—K’K Ñ(Ô(Ð(Ð(Ø Ò&Ð&Ø—K’K 	Ñ*Ô*Ð*Ø—K’K Ñ(Ô(Ð(Ð(à—K’K 	Ñ*Ô*Ð*Ø—K’K ¨¯ª¸¸dÑ)CÔ)CÑ CÑDÔDÐDØð #Ø—’˜EÑ"Ô"Ð"à�MŠM˜#Ÿ(š( 4™.œ.Ñ)Ô)Ð)Ñ)à�wŠwð *Ø”m×4Ò4°ZÑ@Ô@ñAð —
’
˜6Ñ"Ô"Øðñ	
ô 	
ð 		
r,   Úidentifiersú$List[Tuple[str, Optional[int], str]]c                óJ   — d„ | j                              |¦  «        D ¦   «         S )z8Unpack '"col"(2),"col" ASC'-ish strings into components.c                óB   — g | ]\  }}}||rt          |¦  «        nd |f‘ŒS r"   r¡   )r`   ÚcolnameÚlengthÚ	modifierss       r*   rb   z>MySQLTableDefinitionParser._parse_keyexprs.<locals>.<listcomp>¢  sD   € ð 
ð 
ð 
á*�˜ ð  VÐ5•c˜&‘k”k�k°°yÐAð
ð 
ð 
r,   )Ú_re_keyexprsrÀ   )r)   rã   s     r*   ri   z*MySQLTableDefinitionParser._parse_keyexprs�  s9   € ð

ð 
à.2Ô.?×.GÒ.GØñ/ô /ð
ñ 
ô 
ð 	
r,   c                ó@  — g | _         | j        j        }t          t	          dd„ | j        j        || j                             |¦  «        fD ¦   «         ¦  «        ¦  «        }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¦  «        | _        |                     ¦   «         }d|d<   t          d|z  ¦  «        | _        t          d|z  ¦  «        | _        t          d¦  «        | _        t.          D ]}|                      |¦  «         ŒdD ]}|                      |¦  «         ŒdD ]}|                      |¦  «         Œ|                      dd¦  «         |                      dd¦  «         |                      dd¦  «         dS )z Pre-compile regular expressions.)ÚiqÚfqÚesc_fqc                ó6   — g | ]}t          j        |¦  «        ‘ŒS r3   ©rB   Úescape)r`   Úss     r*   rb   z<MySQLTableDefinitionParser._prep_regexes.<locals>.<listcomp>µ  s0   € ð ð ð àõ ”I˜a‘L”Lðð ð r,   zM^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)?aX    (?:(?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ÚSUBPARTITIONSr>   ÚSUBPARTITIONÚUNIONz
\([^\)]+\)Ú
TABLESPACEz.*? STORAGE DISKÚ	RAID_TYPEz4\w+\s+RAID_CHUNKS\s*\=\s*\w+RAID_CHUNKSIZE\s*=\s*\w+N)r}   r7   Úfinal_quoterÇ   ÚziprE   Ú_escape_identifierÚ_pr_compileÚ_unescape_identifierrs   Ú_re_compilerU   rê   r¿   rÁ   r¹   rº   rg   rj   Úcopyrl   rm   rn   Ú_options_of_type_stringÚ_add_option_stringÚ_add_option_wordÚ_add_partition_option_wordÚ_add_option_regex)r)   Ú_finalÚquotesrÍ   Úoptions        r*   r9   z(MySQLTableDefinitionParser._prep_regexes©  sº  € ð
 ð 	Ôð ”Ô*ˆåÝØ&ðð ð œÔ3ØØœ×8Ò8¸Ñ@Ô@ððñ ô ñ
ô 
ñ
ô 
ˆõ $ðDØFLñMàŒMÔ.ñ
ô 
ˆŒõ 'Ð'HÑIÔIˆÔõ (ð9à;AñBñ
ô 
ˆÔõ 'Ð'GÑHÔHˆÔõ ' vÑ.Ô.ˆÔõ &ðð. ñ/ñ
ô 
ˆŒõ8 !,ð-ð 06ñ	6ñ!
ô !
ˆÔõ #ð
ð ñ
ñ
ô 
ˆŒõ  $/Ø>ñ$
ô $
ˆÔ ð �[Š[‰]Œ]ˆØDˆˆ4‰Ý!,ð
5ð 8:ñ
:ñ"
ô "
ˆÔõ$ "-ð%ð (*ñ	*ñ"
ô "
ˆÔõ )Ð)IÑJÔJˆÔõ
 .ð 	,ð 	,ˆFØ×#Ò# FÑ+Ô+Ð+Ð+ð
ð 	*ð 	*ˆFð$ ×!Ò! &Ñ)Ô)Ð)Ð)ð
ð 	4ð 	4ˆFð ×+Ò+¨FÑ3Ô3Ð3Ð3à×Ò˜w¨Ñ6Ô6Ð6Ø×Ò˜|Ð-@ÑAÔAÐAØ×ÒØØCñ	
ô 	
ð 	
ð 	
ð 	
r,   z(?:\s*(?:=\s*)|\s+)rx   c                ó    — dt          j        |¦  «        ›d| j        ›d�}| j                             t          |t          ¦  «        ¦  «         d S )Nú(?P<directive>r=   z'(?P<val>(?:[^']|'')*?)'(?!'))rB   rñ   Ú_optional_equalsr}   rL   r  rÆ   ©r)   rx   ru   s      r*   r  z-MySQLTableDefinitionParser._add_option_stringk  sS   € € åŒI�iÑ Ô Ð Ð ØÔ!Ð!Ð!ð
ˆð 	Ô×Ò¥¨Eµ<Ñ @Ô @ÑAÔAÐAÐAÐAr,   c                ó”   — dt          j        |¦  «        ›d| j        ›d�}| j                             t          |¦  «        ¦  «         d S )Nr  r=   z(?P<val>\w+)©rB   rñ   r  r}   rL   r  r  s      r*   r  z+MySQLTableDefinitionParser._add_option_wordr  sQ   € € åŒI�iÑ Ô Ð Ð ØÔ!Ð!Ð!ð
ˆð 	Ô×Ò¥¨EÑ 2Ô 2Ñ3Ô3Ð3Ð3Ð3r,   c                ó8  — |dk    s|dk    r!dt          j        |¦  «        ›d| j        ›d�}nE|dk    s|dk    r!dt          j        |¦  «        ›d| j        ›d�}ndt          j        |¦  «        ›d	�}| j                             t          |¦  «        ¦  «         d S )
Nr  r  z(?<!\S)(?P<directive>r=   z(?P<val>\w+.*)r  r  z(?P<val>\d+)z)(?!\S)r  r  s      r*   r  z5MySQLTableDefinitionParser._add_partition_option_wordy  sÆ   € Ø˜Ò&Ð&¨)Ð7HÒ*HÐ*Høå”	˜)Ñ$Ô$Ð$Ð$ØÔ%Ð%Ð%ðˆEˆEð ˜/Ò)Ð)¨Y¸,Ò-FÐ-Føå”	˜)Ñ$Ô$Ð$Ð$ØÔ%Ð%Ð%ðˆEˆEð .Gõ :<¼À9Ñ9MÔ9MÐ9MÐ9MÐOˆEØÔ×Ò¥¨EÑ 2Ô 2Ñ3Ô3Ð3Ð3Ð3r,   ru   c                óš   — dt          j        |¦  «        ›d| j        ›d|›d�}| j                             t          |¦  «        ¦  «         d S )Nr  r=   z(?P<val>r  r  s      r*   r  z,MySQLTableDefinitionParser._add_option_regexˆ  sX   € € åŒI�iÑ Ô Ð Ð ØÔ!Ð!Ð!ØˆEˆEð
ˆð
 	Ô×Ò¥¨EÑ 2Ô 2Ñ3Ô3Ð3Ð3Ð3r,   N)r6   r   r7   r   )r:   r;   r   r   r   r   )rR   r;   r   rS   )rN   r;   r   rX   )rN   r;   rM   r   r   r    )r%   r;   r#   rÑ   r   r;   )rã   r;   r   rä   r-   )rx   r;   r   r    )rx   r;   ru   r;   r   r    )r.   r/   r0   r1   r+   rQ   rW   rJ   rH   rG   rI   rF   râ   ri   r9   r  r  r  r  r  r3   r,   r*   r5   r5   2   sh  € € € € € Ø>Ð>ðð ð ð ð"ð "ð "ð "ðH1ð 1ð 1ð 1ð6ð 6ð 6ð 6ðp	8ð 	8ð 	8ð 	8ðJð Jð Jð Jð48Nð 8Nð 8Nð 8Nðth$ð h$ð h$ð h$ðT7
ð 7
ð 7
ð 7
ðr

ð 

ð 

ð 

ð~
ð ~
ð ~
ð ~
ð@ .ÐðBð Bð Bð Bð4ð 4ð 4ð 4ð4ð 4ð 4ð 4ð4ð 4ð 4ð 4ð 4ð 4r,   r5   )ÚCOMMENTzDATA DIRECTORYzINDEX DIRECTORYÚPASSWORDÚ
CONNECTIONru   r;   rv   úCallable[[str], str]r   ú,Tuple[re.Pattern[Any], Callable[[str], str]]c                ó   — d S r"   r3   ©ru   rv   s     r*   r  r  š  s	   € ð 47°3r,   r    úTuple[re.Pattern[Any], None]c                ó   — d S r"   r3   r&  s     r*   r  r     s	   € ð $' 3r,   úOptional[Callable[[str], str]]ú6Tuple[re.Pattern[Any], Optional[Callable[[str], str]]]c                ó$   — t          | ¦  «        |fS )z1Prepare a 2-tuple of compiled regex and callable.)r  r&  s     r*   r  r  ¦  s   € õ
 ˜ÑÔ Ð(Ð(r,   úre.Pattern[Any]c                óZ   — t          j        | t           j        t           j        z  ¦  «        S )z)Compile a string to regex, I and UNICODE.)rB   ÚcompileÚIÚUNICODE)ru   s    r*   r  r  ®  s   € õ Œ:�e�RœT¥B¤JÑ.Ñ/Ô/Ð/r,   ÚvaluesúSequence[str]ú	List[str]c                óÐ   — g }| D ]`}|dd…         dk    s|dd…         dk    r-|dd…                               |d         dz  |d         ¦  «        }|                     |¦  «         Œa|S )zStrip reflected values quotesr   r   ú"rŸ   r�   r×   )r”   rL   )r1  Ústrip_valuesÚas      r*   rÄ   rÄ   ´  s{   € à €LØð ð ˆØˆQˆqˆSŒ6�SŠ=ˆ=˜A˜a ˜cœF cšM˜Mà�!�B�$”—’  !¤ q¡¨!¨A¬$Ñ/Ô/ˆAØ×Ò˜AÑÔÐÐØÐr,   Úraw_textc                ón   — d| v rt          j        t          d„ | ¦  «        } |                      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Ÿ   )rB   r€   Ú_control_char_regexpr”   )r8  s    r*   rÆ   rÆ   ¿  sB   € ØˆxÐÐÝ”6Ý Ø-Ð-Øñ
ô 
ˆð
 ×Ò˜D #Ñ&Ô&Ð&r,   r:  ú úúú	ú
úúú)	z\\z\0z\az\bz\tz\nz\vz\fz\rú|c              #  ó>   K  — | ]}t          j        |¦  «        V — Œd S r"   rð   )r`   Úks     r*   rÖ   rÖ   Ö  s*   è è € Ð5Ð5˜a�RŒY�q‰\Œ\Ð5Ð5Ð5Ð5Ð5Ð5r,   )ru   r;   rv   r#  r   r$  r"   )ru   r;   rv   r    r   r'  )ru   r;   rv   r)  r   r*  )ru   r;   r   r,  )r1  r2  r   r3  )r8  r;   r   r;   )*Ú
__future__r   rB   Útypingr   r   r   r   r   r	   r
   r   r   r   Ú
enumeratedr   r   r   r   r   r   rz   r½   r   Úutil.typingr   Úbaser   r   Úengine.interfacesr   r   r5   r  r  r  rÄ   rÆ   r<  r.  rß   r>  r3   r,   r*   ú<module>rP     s  ðð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "àð 5Ø"Ð"Ð"Ð"Ð"Ð"Ø-Ð-Ð-Ð-Ð-Ð-Ø4Ð4Ð4Ð4Ð4Ð4ð7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ð\	4ð \	4ð \	4ð \	4ð \	4ñ \	4ô \	4ð \	4ð~Ð ð 
ð7ð 7ð 7ñ 
„ð7ð
 
à $ð'ð 'ð 'ð 'ñ 
„ð'ð ;?ð)ð )ð )ð )ð )ð0ð 0ð 0ð 0ðð ð ð ð'ð 'ð 'ð 'ð ØØØØØØØØðð Ð ð "�r”zØ‡H‚HÐ5Ð5Ð#4Ð5Ñ5Ô5Ñ5Ô5ñô Ð Ð Ð r,   