� =��g�y��� ddlmZn #e$reZYnwxYwddlmZddlmZddlZddlZddl Tddl m Z ddl m Z ddl m Z dd l m Z dd l mZdd l mZ dd lmZn #e$r dd lmZn #e$rdZYnwxYwYnwxYw dd lmZn #e$rdZYnwxYw ddlmZn #e$rdZYnwxYwegd���ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��Z edd��Z!Gd �d!e!��Z"Gd"�d#e��Z#d+d$�Z$d+d%�Z%d,d(�Z&d)�Z'd*�Z(dS)-�)� OrderedDict)� namedtuple)�isclassN)�*)� _StringField)�_query_val_transform)� CommaNodeList)� SCOPE_VALUES)�make_snake_case)� text_type)� FIELD_TYPE)� postgres_ext)�CockroachDatabase)�and�as�assert�break�class�continue�def�del�elif�else�except�exec�finally�for�from�global�if�import�in�is�lambda�not�or�pass�print�raise�return�try�while�with�yieldc��eZdZdS)� UnknownFieldN)�__name__� __module__� __qualname__���d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/playhouse/reflection.pyr0r0)s�������Dr5r0c�V�eZdZdZeefZ d d�Zd�Zd�Z d�Z d�Z d �Z d d �Z d �ZdS)�Columnz1 Store metadata about a database column. FNc ��||_||_||_||_||_||_||_||_| |_| |_ d|_ d|_ d|_ dS�N) �name� field_class�raw_column_type�nullable� primary_key� column_name�index�unique�default�extra_parameters� rel_model� related_name�to_field) �selfr;r<r=r>r?r@rArBrCrDs r6�__init__zColumn.__init__3sk���� �&���.��� �� �&���&����� ��� ��� � 0������ ����� � � r5c�j��gd�}d��fd�|D����}d�j�d|�d�S)N)r<r=r>r?r@�, c3�B�K�|]}|�dt�|����V��dS��=N)�getattr)�.0�attrrHs �r6� <genexpr>z"Column.__repr__.<locals>.<genexpr>MsM�����!�!���t�t�W�T�4�0�0�0� 1�!�!�!�!�!�!r5zColumn(�))�joinr;)rH�attrs� keyword_argss` r6�__repr__zColumn.__repr__Fsh������� �y�y�!�!�!�!��!�!�!��� � �$(�9�9�9�l�l�l�;�;r5c�d�i}|j�|�|j��|jrd|d<|jtus|j|jkr d|jz|d<|jrt|jt��sd|d<|j �!d|j � dd��z|d <|� ��r2|j |d <|jr d|jz|d <|jr d|jz|d <|���s-|jrd |d<n |jr|� ��sd |d<|S)NT�null�'%s'r@r?z[SQL("DEFAULT %s")]�"z\"� constraints�model�field�backref�TruerBrA)rD�updater>r<�ForeignKeyFieldr;r@r?� issubclass� AutoFieldrC�replace�is_foreign_keyrErGrF�is_primary_keyrBrA)rH�paramss r6�get_field_parameterszColumn.get_field_parametersRsn���� � � ,� �M�M�$�/� 0� 0� 0� �=� "�!�F�6�N� � �� .� .�$�)�t�?O�2O�2O�$*�T�-=�$=�F�=� !� � � )�J�t�/?��$K�$K� )�$(�F�=� !� �<� #�$9��L�(�(��e�4�4�%5�F�=� !� � � � � � ?�"�n�F�7�O��}� 9�"(�4�=�"8��w��� � ?�$*�T�->�$>��y�!��"�"�$�$� )��{� )�#)��x� � ��� )�D�$7�$7�$9�$9� )�"(��w��� r5c�,�|jtup|jSr:)r<rdr?�rHs r6rgzColumn.is_primary_keyss����9�,�@��0@�@r5c��|jtuSr:)r<rbrks r6rfzColumn.is_foreign_keyvs����?�2�2r5c�4�|jtuo |jdkS�Nz'self')r<rbrErks r6�is_self_referential_fkzColumn.is_self_referential_fkys!��� �O�3�+���(�*� ,r5c��||_t|_|j|jkrd|_n||j|_|r|jpd|_|pd|_dSrn) � foreign_keyrbr<� dest_table�tablerEr;rGrF)rHrq� model_names�destrFs r6�set_foreign_keyzColumn.set_foreign_key}sa��&���*��� � !�[�%6� 6� 6�%�D�N�N�(��)?�@�D�N��*���2�d�� �(�0�D����r5c��i}|������D]5\}}t|��rt|t��r|j}|||<�6d�d�t|�����D����}|j�d|j j�d|�d�}|j tur |�d|j ��}|S)NrKc3�*K�|]\}}|�d|��V��dSrMr4)rP�k�vs r6rRz#Column.get_field.<locals>.<genexpr>�sM����H�H�"&�!�Q�*+���A�A�.�H�H�H�H�H�Hr5z = �(rSz # ) ri�itemsrrc�Fieldr1rT�sortedr;r<r0r=)rH� field_params�key�value� param_strr^s r6� get_fieldzColumn.get_field�s��� ��3�3�5�5�;�;�=�=� &� &�J�C���u�~�~� '�*�U�E�":�":� '���� %�L�� � ��I�I�H�H�*0��1C�1C�1E�1E�*F�*F�H�H�H�H�H� � �I�I�I� � � %� %� %� �I�I��� � �|� +� +�"'�%�%��)=�)=�>�E�� r5)FNFFNN)NN)r1r2r3�__doc__� IntegerFieldrd�primary_key_typesrIrWrirgrfrorvr�r4r5r6r8r8-s���������&�y�1��=B�>B�����& <� <� <����BA�A�A�3�3�3�,�,�,�>B�%)� 1� 1� 1� 1�����r5r8c�P�eZdZiZdZd�Zd�Zd d�Zd d�Zd�Z d d�Z d d �Z d d �Z dS) �Metadata�c�"�||_d|_dS)NF)�database�requires_extension)rHr�s r6rIzMetadata.__init__�s�� �� �"'����r5c�8�|j�||��Sr:)r�� execute_sql)rH�sqlrhs r6�executezMetadata.execute�s���}�(�(��f�5�5�5r5Nc �r�td�|j�||��D����}|�||��\}}|�||��}t |��dkr;|d}||t ur t||<n||tur t||<t��}|� ��D]d\} } || } |� | | j ��} t| | | j| j| j| | |�| �����|| <�e|S)Nc3�(K�|] }|j|fV��dSr:�r;)rP�metadatas r6rRz'Metadata.get_columns.<locals>.<genexpr>�sE����F�F���]�H� %�F�F�F�F�F�Fr5�r)r<r=r>r?r@rCrD)rr�� get_columns�get_column_types�get_primary_keys�lenr�rd�BigIntegerField� BigAutoFieldr|�_clean_defaultrCr8� data_typerYr?�get) rHrs�schemar�� column_types� extra_params�pk_names�pk�columnsr;� column_datar<rCs r6r�zMetadata.get_columns�sc���F�F� �M�5�5�e�V�D�D�F�F�F�F�F�� &*�%:�%:�5�&�%I�%I�"� �l��(�(���7�7�� �x�=�=�A� � ��!��B��B��<�/�/�#,� �R� � ��b�!�_�4�4�#/� �R� ��-�-��!)���!1�!1� 9� 9� �D�+�&�t�,�K��)�)�+�{�7J�K�K�G�"��'� +� 5�$�)�'�3� ��!-�!1�!1�$�!7�!7�9�9�9�G�D�M�M��r5c��t�r:)�NotImplementedError�rHrsr�s r6r�zMetadata.get_column_types�s��!�!r5c���|�(|ttfvs|���dkrdSt|t��r/t |t ��r|�d��sd|z}|pdS)NrY�'rZz'')rdr��lowerrcr� isinstancer � startswith)rHr<rCs r6r�zMetadata._clean_default�s|�� �?�k�i��-F�F�F� �=�=�?�?�f� $� $� �F� �k�<� 0� 0� '� �g�y� )� )� '�29�2D�2D�S�2I�2I� '��w�&�G���$�r5c�8�|j�||��Sr:)r��get_foreign_keysr�s r6r�zMetadata.get_foreign_keys�����}�-�-�e�V�<�<�<r5c�8�|j�||��Sr:)r�r�r�s r6r�zMetadata.get_primary_keys�r�r5c�8�|j�||��Sr:)r�� get_indexesr�s r6r�zMetadata.get_indexes�s���}�(�(���7�7�7r5r:) r1r2r3� column_map�extension_importrIr�r�r�r�r�r�r�r4r5r6r�r��s��������J���(�(�(�6�6�6� � � � �D"�"�"�"����=�=�=�=�=�=�=�=�8�8�8�8�8�8r5r�c ����eZdZide�de�de�de�de�de�de �de �d e �d e �d e �d e �d e �de�de�de�de�Zeeeeee e ee e eed� ZdZ�fd�Zd�Zd�fd� Zd�fd� Zd�fd� Zd�fd� Z�xZS)�PostgresqlMetadata������i�i�iii:iZi�i;i�i�i� ) i�i�i�i�i�i�i���i[i�i�i� z$from playhouse.postgres_ext import *c����tt|���|��t��|�d��}|���}|D]q\}}}|dkrtj|j|<�!|dkrtj|j|<�<|dkrtj |j|<�W|dkrtj |j|<�r|j D]}tj |j|<�dSdS)N�9select oid, typname, format_type(oid, NULL) from pg_type;�json�jsonb�hstore�tsvector) �superr�rIrr��fetchall� JSONFieldr��BinaryJSONField� HStoreField� TSVectorField� array_types� ArrayField)rHr��cursor�results�oid�typname�formatted_type� __class__s �r6rIzPostgresqlMetadata.__init__s��� � �$�'�'�0�0��:�:�:� � #��\�\�#3�4�4�F��o�o�'�'�G�07� F� F�,��W�n��f�$�$�+7�+A�D�O�C�(�(���'�'�+7�+G�D�O�C�(�(���(�(�+7�+C�D�O�C�(�(�� �*�*�+7�+E�D�O�C�(���'� ?� ?��'3�'>����$�$�# $� #�  ?� ?r5c���i}i}t�Fttjtjtjtjtjf��n t��}|�d|�d�}|�d|d��}|���D]T\}} |j � | t��||<|||vrd|_ | |j vrd|j | i||<�U||fS)Nz."r[zcSELECT attname, atttypid FROM pg_catalog.pg_attribute WHERE attrelid = %s::regclass AND attnum > %srTr<)r�setr�r�r�r�r�r�r�r�r�r0r�r�) rHrsr�r�r��extension_types� identifierr�r;r�s r6r�z#PostgresqlMetadata.get_column_typess��� �� � +7�*B� � � #� � (� � "� � &� � $� &�'�'�'� IL��� �#)�&�&�%�%�%�0� ���� <�=G��L�L��  ���*�*� L� L�I�D�#�!%��!4�!4�S�,�!G�!G�L�� ��D�!�_�4�4�*.��'��d�&�&�&�&3�T�5E�c�5J�%K� �T�"���\�)�)r5Nc�^��|pd}tt|���||��S�N�public)r�r�r��rHrsr�r�s �r6r�zPostgresqlMetadata.get_columns4�.����#�8���'��.�.�:�:�5�&�I�I�Ir5c�^��|pd}tt|���||��Sr�)r�r�r�r�s �r6r�z#PostgresqlMetadata.get_foreign_keys8�.����#�8���'��.�.�?�?��v�N�N�Nr5c�^��|pd}tt|���||��Sr�)r�r�r�r�s �r6r�z#PostgresqlMetadata.get_primary_keys<r�r5c�^��|pd}tt|���||��Sr�)r�r�r�r�s �r6r�zPostgresqlMetadata.get_indexes@r�r5r:)r1r2r3� BooleanField� BlobFieldr��SmallIntegerFieldr�� TextField� FloatField� DoubleField� CharField� DateField� DateTimeField� TimeField� DecimalField� UUIDFieldr�r�r�rIr�r�r�r�r�� __classcell__�r�s@r6r�r��s��������� �L�� �I�� �O�� � � � �L� � �I� � �Z�� �[�� �i�� �i�� �i�� �m�� �m�� �i�� �i�� �l�!�" �i�#�J�(������������ � �K�>��?�?�?�?�?�,*�*�*�4J�J�J�J�J�J�O�O�O�O�O�O�O�O�O�O�O�O�J�J�J�J�J�J�J�J�J�Jr5r�c��eZdZej���Zeed<ej���Zeed<dZd�Z dS)�CockroachDBMetadatar�r�z#from playhouse.cockroachdb import *c�0�t�||��d|_t�j|�d��}|���}|D] \}}}|dkrtj|j|<�!|jD]}tj |j|<�dSdS)NTr�r�) r�rIr�rr�r�r�r�r�r�)rHr�r�r�r�r�r�s r6rIzCockroachDBMetadata.__init__Ns������$��)�)�)�"&��� � #��\�\�#3�4�4�F��o�o�'�'�G�07� H� H�,��W�n��g�%�%�+7�+G�D�O�C�(���'� ?� ?��'3�'>����$�$� $� #� ?� ?r5N) r1r2r3r�r��copyr�r�r�rIr4r5r6r�r�Esf������$�.�3�3�5�5�J�!�J�r�N�$�0�5�5�7�7�K�$�K���<��?�?�?�?�?r5r�c�r��eZdZe�iZn�ieje�eje�ej e �ej e �ej e�eje�eje�eje�eje�eje�eje�eje�eje�eje�eje�eje �eje�ejeej eej!ei�Z�fd�Z"dd�Z#�xZ$S)� MySQLMetadataNc ���d|vr|�d��|d<tt|��j|fi|��dS)N�password�passwd)�popr�r�rI)rHr��kwargsr�s �r6rIzMySQLMetadata.__init__{sO��� �� � �%�z�z�*�5�5�F�8� �+��m�T�"�"�+�H�?�?��?�?�?�?�?r5c��i}|�d|z��}|jD]2}|dd�\}}|j�|t��||<�3|ifS)NzSELECT * FROM `%s` LIMIT 1�)r�� descriptionr�r�r0)rHrsr�r�r��column_descriptionr;� type_codes r6r�zMySQLMetadata.get_column_types�ss��� ����:�U�B�C�C��#)�"4� N� N� �0��!��4�O�D�)�!%��!4�!4�Y� �!M�!M�L�� � ��R��r5r:)%r1r2r3r r��BLOBr��CHARr��DATEr��DATETIMEr��DECIMALr��DOUBLEr��FLOAT�INT24r�� LONG_BLOB�LONG�LONGLONGr�� MEDIUM_BLOB� NEWDECIMAL�SHORT�STRING� TIMESTAMP�TIMEr�� TINY_BLOB�TINY� VAR_STRINGrIr�r�r�s@r6r�r�`s~���������� � � � �O�Y� � �O�Y� � �O�Y� � � ��  � � � �  � � �z�  � � �j� � � �l� � � �)� � �O�\� � � �� � � "�I� � � !�<� � � �l� � � �y� � � �-�! �" �O�Y�# �$ � �)� �O�\� � !�9�) � � �.@�@�@�@�@�  �  �  �  �  �  �  �  r5r�c���eZdZide�de�de�de�de�de�de�de �d e �d e �d e �d e �d e�de �de �de �de �e e e ed��ZdZdZd�ee���ZdZd�Zdd�ZdS)�SqliteMetadata�bigint�blob�bool�boolean�char�date�datetime�decimal�float�integerzinteger unsigned�int�long�numeric�real� smallinteger�smallint)zsmallint unsigned�text�time�varcharz (?:["\[\(]+)?z (?:["\]\)]+)?zi(?:FOREIGN KEY\s*)?{begin}(.+?){end}\s+(?:.+\s+)?references\s+{begin}(.+?){end}\s*\(["|\[]?(.+?)["|\]]?\))�begin�endz&^\s*(?:var)?char\s*\(\s*(\d+)\s*\)\s*$c�(�|���}||jvr|j|}nftj|j|��rt }nDtjdd|��}|dkrt}n |j�|t��}|S)Nz\(.+\)r�) r�r��re�search� re_varcharr��sub� BareFieldr�r0)rH� column_typer=r<s r6�_map_colzSqliteMetadata._map_col�s���%�+�+�-�-�� �d�o� -� -��/�/�:�K�K� �Y�t��� 8� 8� M�#�K�K��&��B��@�@�K��b� � �'� � �"�o�1�1�+�|�L�L� ��r5Nc��i}|j�|��}|D]$}|�|j��||j<�%|ifSr:)r�r�r0r�r;)rHrsr�r�r��columns r6r�zSqliteMetadata.get_column_types�sV��� ��-�+�+�E�2�2��� H� H�F�(,� � �f�6F�(G�(G�L��� %� %��R��r5r:)r1r2r3r�r�r�r�r�r�r�r�r�r�r�r�r'r(�format�re_foreign_keyr,r0r�r4r5r6rr�sS��������/��� �� � �� �<� � � � � � � � �M�� �<�� ��� �<�� �L�� �|�� ��� �<�� � �� � �!�" �L�#�$*����+���J�0 �E� �C� &�(.�v�E�s�v�'C�'C� � ;�J� � � � � � � � � r5r�_DatabaseMetadata)r�� primary_keys� foreign_keysrt�indexesc��eZdZd�Zd�ZdS)�DatabaseMetadatac����g}�j�D]J}t|j��dkr0��fd�|jD��}|�||jf���K|S)Nr�c�^��g|])}|�j�v��j�|j��*Sr4)r�r;)rPr2rHrss ��r6� <listcomp>z9DatabaseMetadata.multi_column_indexes.<locals>.<listcomp>�sG���A�A�A�#)�"(�D�L��,?�"?�"?� $�|�E�2�6�:�?�"?�"?�"?r5)r8r�r��appendrB)rHrs�accumrA� field_namess`` r6�multi_column_indexesz%DatabaseMetadata.multi_column_indexes�s��������\�%�(� :� :�E��5�=�!�!�A�%�%�A�A�A�A�A�-2�]�A�A�A� �� � �k�5�<�8�9�9�9��� r5c��i}|j|D]/}t|j��dkr|j||jd<�0|S)Nr�r)r8r�r�rB)rHrsr?rAs r6�column_indexeszDatabaseMetadata.column_indexes�sK�����\�%�(� 7� 7�E��5�=�!�!�Q�&�&�*/�,��e�m�A�&�'��� r5N)r1r2r3rArCr4r5r6r:r:�s2�������������r5r:c�~�eZdZeegZdd�Zd�Zedd���Z d�Z d�Z d�Z d�Z dd �Zdd �Z dd �Z dd�ZdS)� IntrospectorNc�"�||_||_dSr:)r�r�)rHr�r�s r6rIzIntrospector.__init__�s�� �� ��� � � r5c� �d|jjzS)Nz<Introspector: %s>�r�r�rks r6rWzIntrospector.__repr__�s��#�d�m�&<�<�<r5c���t|t��r|j�td���|j}tr%t|t��rt |��}n�t|t ��rt|��}n\t|t��rt|��}n7t|t��rt|��}ntd|z���|||���S)Nz)Cannot introspect an uninitialized Proxy.z"Introspection not supported for %r�r�) r��Proxy�obj� ValueErrorrr��PostgresqlDatabaser�� MySQLDatabaser��SqliteDatabaser)�clsr�r�r�s r6� from_databasezIntrospector.from_database�s��� �h�� &� &� $��|�#� �!L�M�M�M��|�H� � N��H�6G�!H�!H� N�*�8�4�4�H�H� ��"4� 5� 5� N�)�(�3�3�H�H� ��-� 0� 0� N�$�X�.�.�H�H� ��.� 1� 1� N�%�h�/�/�H�H��A�H�L�M�M� M��s�8�F�+�+�+�+r5c�4�t|jj��Sr:)�typer�r�rks r6�get_database_classzIntrospector.get_database_class�s���D�M�*�+�+�+r5c�$�|jjjSr:rHrks r6�get_database_namezIntrospector.get_database_names���}�%�.�.r5c�$�|jjjSr:)r�r��connect_paramsrks r6�get_database_kwargsz Introspector.get_database_kwargss���}�%�4�4r5c�<�|jjrd|jjzSdS)N� r�)r�r�r�rks r6�get_additional_importsz#Introspector.get_additional_importss$�� �=� +� 9��$�-�8�8� 8��rr5Tc���|rt|��}tjdd|��}d�d�|�d��D����}|d���sd|z}|S)N�[^\w]+r�c3�>K�|]}|���V��dSr:)�title)rPr-s r6rRz/Introspector.make_model_name.<locals>.<genexpr>s*����E�E�S�S�Y�Y�[�[�E�E�E�E�E�Er5�_r�T)r r*r-rT�split�isalpha)rHrs� snake_caser]� model_names r6�make_model_namezIntrospector.make_model_name s~�� � +�#�E�*�*�E���y�"�e�,�,���W�W�E�E�E�K�K��4D�4D�E�E�E�E�E� ��!�}�$�$�&�&� *��z�)�J��r5Fc�P�|���}|rt|��}|���}|rtjdd|��p|}tjdd|��}|t vr|dz }t |��r|d���rd|z}|S)Nz_id$r�r_rbr)�stripr r�r*r-�RESERVED_WORDSr��isdigit)rHr2rfrfs r6�make_column_namezIntrospector.make_column_names��������� � -�$�V�,�,�F������� � :��V�F�B��/�/�9�6�F��� �3��/�/�� �^� #� #� �c�M�F� �v�;�;� "�6�!�9�,�,�.�.� "��6�\�F�� r5c ����|jj�|j���}|rD|jj�|j���}|�d�|D�������fd�|D��}t |��}i}i} i} i} i} |D�]-} |j�| |j��}|j�| |j��} |j� | |j��| | <��H| | D]?}|j |vr4|� |j ��|� |j ���@n#t$r}g| | <Yd}~nd}~wwxYw|�| |��| | <t d�|D����}t d�| | D����}|���D]\}}|rt!jdd|��}n|�|||v|��}|���}|�d��r||vr|���}||_��|D]J}t-|j��d kr0|jd }||vr|j||_d ||_�K|j�| |j��| | <||| <|| | <��/i}d �}|D]�} t ��}t7| | |� ��D]X} || |j}n#t:$rY�#wxYw|j }||vr|�d|j�d�||<�C|� |���Y��|D]}} | | D]r}||j|j} ||j |j}n#t:$rd}YnwxYw|� || ||�!|������s�~tE|| | | | ��S)NrJc��g|] }|j�� Sr4r�)rP�views r6r=z+Introspector.introspect.<locals>.<listcomp>.s��7�7�7��4�9�7�7�7r5c���g|]}|�v�|�� Sr4r4)rPrs� table_namess �r6r=z+Introspector.introspect.<locals>.<listcomp>1s#���H�H�H��5�K�3G�3G�e�3G�3G�3Gr5c3�>K�|]}|���V��dSr:)r�)rPr@s r6rRz*Introspector.introspect.<locals>.<genexpr>YsJ����"D�"D�&1�#.�"3�"3�"5�"5�"D�"D�"D�"D�"D�"Dr5c3�$K�|] }|jV�� dSr:�r2)rP�fk_cols r6rRz*Introspector.introspect.<locals>.<genexpr>[s$����F�F��f�m�F�F�F�F�F�Fr5r_rb�_idr�rTc��|jSr:ru)rqs r6�<lambda>z)Introspector.introspect.<locals>.<lambda>|s ��k�&8�r5)r��_set)rqrtrurF)#r�r�� get_tablesr�� get_views�extendr�r�r�r�rrr>�addrMrhr|r*r-rmr��endswithr;r�r�rBrAr�r~r2�KeyErrorrs� dest_columnrvr�r:)rHrr�literal_column_names� include_viewsrf�tables�views� table_setr�r6r7rtr8rs� table_indexes� table_columnsrq�exc�lower_col_names�fks�col_namer2�new_name� lower_namerA� related_names�sort_fn�models_referencedrr�srcrus ` r6� introspectzIntrospector.introspect(s�����'�2�2�$�+�2�F�F�� � 9��M�*�4�4�D�K�4�H�H�E� �M�M�7�7��7�7�7� 8� 8� 8� � "�H�H�H�H��H�H�H�F���K�K� ���� �� �� ����2 +�2 +�E� �M�5�5�e�T�[�I�I�M� �M�5�5�e�T�[�I�I�M� B�&*�m�&D�&D��4�;�'(�'(� �U�#��*�'3�E�':�B�B� �&�1��B�B�"�M�M�+�*@�A�A�A�%�M�M�+�*@�A�A�A����� )� )� )�&(� �U�#�#�#�#�#�#����� )����"&�!5�!5�e�Z�!H�!H�K�� �"�"D�"D�5B�"D�"D�"D�D�D�O��F�F�,�u�2E�F�F�F�F�F�C�$1�$7�$7�$9�$9� '� '� ��&�'�A�!�v�i��h�?�?�H�H�#�4�4�X�x�3��5?� A� A�H� &�^�^�-�-� ��&�&�u�-�-�0�(�o�2M�2M�'�~�~�/�/�H�&�� � �&� ;� ;���u�}�%�%��*�*�"�]�1�-�F���.�.�7<�|� �f�-�4�6:� �f�-�3��"&�-�"@�"@��t�{�#$�#$�L�� �*�G�E�N�*�G�E�N�N� � �8�8��� 6� 6�E� #��� �%�l�5�&9�w�G�G�G� 6� 6� ��$�U�^�K�,>�?�F�F�������H�����)�3� ��!2�2�2�"� � �� � � �-%�M�&�)�)�&�)�)�*�5�5�5�5� 6�� 9� 9�E�+�E�2� 9� 9� ��k�/�0��1C�D�� �"�;�#9�:�#�/�1�D�D��� � � ��D�D�D� �����#�#� +� +��!.�!2�!2�3�!7�!7� $�9�9�9�9� 9� � � � � � � �� s<�#E � E#�E�E#�8L � L�L�6N� N�Nc����� � � � ���|||��� i}G�fd�dt��� t��� � � �� � �fd�� t� j�����D]\}}||vr � ||���|S)Nc�.��eZdZG�fd�d��ZdS)�/Introspector.generate_models.<locals>.BaseModelc�6��eZdZ�jjZ�jZdS)�4Introspector.generate_models.<locals>.BaseModel.MetaN)r1r2r3r�r�r�rks�r6�Metar��s ��������=�1������r5r�N)r1r2r3r�rks�r6� BaseModelr��sG������� %� %� %� %� %� %� %� %� %� %� %� %r5r�c������������j�D]>}|j}||vr1|�kr+|�vrtjd��d|�����2�||���?g��j�}|���D]&\}}|jr��|j ���'�� ������ ���}G��fd�d��}d} t���dkr d|vrd|_n|� ���t���dkr.t�fd �|���D���|_d } d|i} |���D�]Y\}}|j} | t ur �rt"} n| t$urt"} ||jd �} |jr| r| t(urt*} d| d <n|jr| t(urd | d <|���r^|���rd | d<n(|jj} | |vr || | d<n t2} | | d<|jr |j| d<��d|�d�| d<|j�t9d|jz��}|g| d<|���s1||vr(||rd | d<n|���sd | d<nd| d<| di| ��| |j <��[ t=t?����f| ��|�<n#t@$r�s�YnwxYw��vr��!���dSdS#��vr��!���wwxYw)Nz'Possible reference cycle found between z and c���eZdZ�Z�ZdS)�AIntrospector.generate_models.<locals>._create_model.<locals>.MetaN)r1r2r3r8� table_name)rArss��r6r�r��s�������.��"� � � r5r�Fr�idr�c�,��g|]\}}|�v� |j��Sr4r�)rP�colr^r6s �r6r=zGIntrospector.generate_models.<locals>._create_model.<locals>.<listcomp>�s4���2,�2,�2,�#-�3���l�*�*��J�*�*�*r5T)r@rYr?rHr]�rel_model_namer^rb�_relr_z DEFAULT %sr\rBrAr4)"r~r7rr�warnings�warnr�r|r?r>r;rArCr��keys� CompositeKeyr<rbr.r0r>rdr�rfrorq�DeferredForeignKeyrGrC�SQLrgrT�strrM�remove)rs�modelsrqrur�r@r2rCr�� composite_keyrU� FieldClassrhrr� constraintrAr6r�� _create_model� bare_fieldsr��pending� skip_invalids` @@������r6r�z3Introspector.generate_models.<locals>._create_model�s{������ �K�K�� � � �'�4�U�;� 4� 4� �"�-���v�%�%�$�%�-�-��w��� � � �5:�U�U�D�D�'B�C�C�C�C�&� �d�F�3�3�3���L��&�u�-�G�'.�}�}��� 5� 5�#� �V��%�5� �'�'�� �4�4�4��#+�#@�#@��#G�#G� �%�4�4�U�;�;�N� #� #� #� #� #� #� #� #� #� #� #� "�M��<� � �A�%�%��w�&�&�',�D�$�$�#*�<�<�>�>�L��<� � �1�$�$�#/�2,�2,�2,�2,�18�����2,�2,�2,�$-�� �!%� ��T�N�E�'.�}�}���- :�- :�#� �V�#�/� ��_�4�4��4�!*�J�J��<�/�/�!*�J�$/�"�O�-�-���%�1�-�1�!�Y�.�.�%1� �,1�F�=�)�)��'�1�J�i�,G�,G�,0�F�=�)��(�(�*�*�K��4�4�6�6�B�*0��w���%+�%7�%B� �%��/�/�.4�Z�.@�F�7�O�O�);�J�7A�F�#3�4���:�*0�/��w��8=�u�u�k�k�k�(J�F�9�%��>�-�!$�\�F�N�%B�!C�!C�J�-7�L�F�=�)��,�,�.�.�0�"�n�4�4�)�+�6�3�/3�F�8�,�,�!'�!6�!6�!8�!8�3�.2�F�7�O��*/��w��%/�Z�%9�%9�&�%9�%9��f�k�"�"� *� $�S��Z�Z�)��u� E� E��u� � ��� � � �#����� �����G�#�#��N�N�5�)�)�)�)�)�$�#��5�G�#�#��N�N�5�)�)�)�)�$���s*�"K7�6L'�7 L�L'�L�L'�'M)r��Modelr�r~rtr|) rHr�rrr�r�r�r�rsr]r�r�r�r�s `` ` @@@@r6�generate_modelszIntrospector.generate_models�s�����������?�?�;�0D�#0�2�2���� %� %� %� %� %� %� %�� %� %� %� �%�%��^ *�^ *�^ *�^ *�^ *�^ *�^ *�^ *�^ *�^ *�B#�8�#7�#=�#=�#?�#?�@�@� -� -�L�E�5��F�"�"�� �e�V�,�,�,��� r5r:)T)FT)NFFT)FNFFF)r1r2r3rdr�� pk_classesrIrW� classmethodrRrUrWrZr]rhrmr�r�r4r5r6rErE�s�������\�*�J�����=�=�=��,�,�,��[�,�",�,�,�/�/�/�5�5�5���� ��������$AF�37�z�z�z�z�x?C�@E�&+�s�s�s�s�s�sr5rEc�b�t�||���}|���S)NrJ)rErRr�)r�r�� introspectors r6r�r�s,���-�-�h�v�-�F�F�L� � "� "� $� $�$r5c �T�t�||���}|jdi|��S)NrJr4)rErRr�)r�r��optionsr�s r6r�r�s3���-�-�h�v�-�F�F�L� '�<� '� 2� 2�'� 2� 2�2r5TFc��t|jj��|jjD]�}d|j�d|j��g}|jr|�d��n;|r9|jr|�d��n|jr|�d��t|t��r/|�d|j j �d|j j����td�|������|�r�|j���}|sdStd ��|D�]U}dg}|jj���}|�d d � ��5|�t)|j����|jr/|�d ��|�|j��|���\}} ddd��n #1swxYwY|t3t5t6| ����z} |�| �dd����|jr|�d��td�|������UdSdS)Nz � z PKz UNIQUEz INDEXz FK: �.r�z index(es)�%sz"")�param�quotez WHERE r[)r(�_metar;� sorted_fields� field_typer?r>rBrAr�rbrEr1� rel_fieldrT�fields_to_indexr��get_sql_context� scope_valuesr�r � _expressions�_where�literal�query�tuple�maprre�_unique) r]r8�inline_indexesr^�parts� index_listrA�ctxr�rh�cleans r6� print_modelr�$s��� �%�+� ������*� � ���#�j�j�j�%�*:�*:�;�<�� � � '� �L�L�� � � � � � '��|� '�� � �Y�'�'�'�'��� '�� � �X�&�&�&� �e�_� -� -� @� �L�L�L���)A�)A�)A�).��)=�)=�?� @� @� @� �b�g�g�e�n�n������"��[�0�0�2�2� �� � �F� �m����� "� "�E��F�E��+�&�6�6�8�8�C��!�!��D�!�9�9� *� *���� �e�&8�9�9�:�:�:��<�*��K�K� �*�*�*��G�G�E�L�)�)�)�!�i�i�k�k� ��V�  *� *� *� *� *� *� *� *� *� *� *���� *� *� *� *��%��$8�&� A� A�B�B�B�E� �L�L����s�B�/�/� 0� 0� 0��}� (�� � �Y�'�'�'� �"�'�'�%�.�.� !� !� !� !�+"�"�  "� "s�&A5G'�'G+ �.G+ c�.�|j������\}}|jjjdkr%|�|jjjd��}tjd|��}|� ��\}}}d� d�|� d��D����}d� |||f��� ��}|ttt|����zS)Nr�z^(.+?\()(.+)(\).*)z, c3� K�|] }d|zV�� dS)z %sNr4)rPr2s r6rRz get_table_sql.<locals>.<genexpr>Ts&����L�L�f�&�6�/�L�L�L�L�L�Lr5rKr\)�_schema� _create_tabler�r�r�r�rer*�match�groupsrTrdrjr�r�r) r]r�rh� match_obj�creater��extra�indentedr�s r6� get_table_sqlr�Ls����-�-�-�/�/�5�5�7�7�K�C�� �{��!�T�)�)��k�k�%�+�.�4�d�;�;����.��4�4�I�&�-�-�/�/��F�G�U��z�z�L�L�� � �d�8K�8K�L�L�L�L�L�H� �I�I�v�x��/� 0� 0� 6� 6� 8� 8�E� �5��1�6�:�:�;�;� ;�;r5c�>�tt|����dSr:)r(r�)r]s r6�print_table_sqlr�Ys�� �-�� � �����r5r:)TF))� collectionsr� ImportError�dictr�inspectrr*r��peeweerrr r r r �pymysql.constantsr �MySQLdb.constants� playhouser�playhouse.cockroachdbrr�rk�objectr0r8r�r�r�r�rr5r:rEr�r�r�r�r�r4r5r6�<module>r�s2���'�'�'�'�'�'�'�������K�K�K�����"�"�"�"�"�"������� � � � ���������������'�'�'�'�'�'� � � � � � �������"�"�"�"�"�"��������,�,�,�,�,�,�,�������0�0�0�0�0�0�0�� ����� � � ����������� �&�&�&�&�&�&�&�������L�L�L������7�7�7�7�7�7�7���������������������� � � � � �6� � � �m�m�m�m�m�V�m�m�m�`@8�@8�@8�@8�@8�v�@8�@8�@8�FbJ�bJ�bJ�bJ�bJ��bJ�bJ�bJ�J?�?�?�?�?�,�?�?�?�6+ �+ �+ �+ �+ �H�+ �+ �+ �\7 �7 �7 �7 �7 �X�7 �7 �7 �t�J�2�5���������(����&t�t�t�t�t�6�t�t�t�n %�%�%�%� 3�3�3�3� %"�%"�%"�%"�P <� <� <� � � � � sf� ���A�A7� A'�&A7�'A1�.A7�0A1�1A7�6A7�;B�B � B �B�B!� B!
Memory