� =��g���4�dZddlZddlTddlmZddlmZddlmZddlmZ ddlm Z dd lm Z dd lm Zdd lmZdd lmZGd �de��Zd�ZGd�de��ZGd�de��ZGd�de��Z Gd�de ��ZGd�de ��Z dS)an Peewee integration with APSW, "another python sqlite wrapper". Project page: https://rogerbinns.github.io/apsw/ APSW is a really neat library that provides a thin wrapper on top of SQLite's C interface. Here are just a few reasons to use APSW, taken from the documentation: * APSW gives all functionality of SQLite, including virtual tables, virtual file system, blob i/o, backups and file control. * Connections can be shared across threads without any additional locking. * Transactions are managed explicitly by your code. * APSW can handle nested transactions. * Unicode is handled correctly. * APSW is faster. �N)�*)�__exception_wrapper__)� BooleanField)� DateField)� DateTimeField)� DecimalField)�Insert)� TimeField)�logger)�SqliteExtDatabasec����eZdZed�ej���d��D����Z�fd�Zd�Z d�Z d�Z �fd�Z d�Z d �Zd �Zd �Zd �Zd �Zdd�Zd�Zdd�Zd�Zd�Zdd�Z�xZS)� APSWDatabasec#�4K�|]}t|��V��dS�N)�int)�.0�is �b/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/playhouse/apsw_ext.py� <genexpr>zAPSWDatabase.<genexpr>"s(����N�N�a�3�q�6�6�N�N�N�N�N�N��.c �X��i|_tt|��j|fi|��dSr)�_modules�superr�__init__)�self�database�kwargs� __class__s �rrzAPSWDatabase.__init__$s5����� �*��l�D�!�!�*�8�>�>�v�>�>�>�>�>rc��||j|<|���s*|����||��dSdSr)r� is_closed� connection� createmodule)r�mod_name�mod_insts r�register_modulezAPSWDatabase.register_module(sP��"*�� �h���~�~��� ?� �O�O� � � *� *�8�X� >� >� >� >� >� ?� ?rc��|j|=dSr)r)rr$s r�unregister_modulezAPSWDatabase.unregister_module-s�� �M�(� #� #� #rc���tj|jfi|j��}|j�|�|jdz�� |�|��n#|����xYw|S)Ni�)�apsw� Connectionr�connect_params�_timeout�setbusytimeout�_add_conn_hooks�close)r�conns r�_connectzAPSWDatabase._connect0s{����t�}�D�D��0C�D�D�� �=� $� � � �� �� 4� 5� 5� 5� � � � �� &� &� &� &�� � �J�J�L�L�L� ����� s �A�A/c���tt|���|��|�|��dSr)rrr/� _load_modules)rr1rs �rr/zAPSWDatabase._add_conn_hooks;s;��� �l�D�!�!�1�1�$�7�7�7� ���4� � � � � rc�p�|j���D]\}}|�||���|Sr)r�itemsr#)rr1r$r%s rr4zAPSWDatabase._load_modules?sB��"&�-�"5�"5�"7�"7� 2� 2� �H�h� � � �h�� 1� 1� 1� 1�� rc���|j���D]#\}\�}�fd�}|�||���$dS)Nc�2������j�jfSr)�step�finalize)�klasss�r�make_aggregatez5APSWDatabase._load_aggregates.<locals>.make_aggregateFs���������U�^�<�<r)� _aggregatesr6�createaggregatefunction)rr1�name� num_paramsr<r;s @r�_load_aggregateszAPSWDatabase._load_aggregatesDsg���)-�)9�)?�)?�)A�)A� ?� ?� %�D�%�5�*� =� =� =� =� =� � (� (��~� >� >� >� >� ?� ?rc�p�|j���D]\}}|�||���dSr)� _collationsr6�createcollation)rr1r?�fns r�_load_collationszAPSWDatabase._load_collationsJsG���(�.�.�0�0� +� +�H�D�"� � � ��r� *� *� *� *� +� +rc�z�|j���D] \}\}}}|r|fnd}|j|||g|�R��!dS�N�)� _functionsr6�createscalarfunction)rr1r?rEr@� deterministic�argss r�_load_functionszAPSWDatabase._load_functionsNsm��59�_�5J�5J�5L�5L� C� C� 1�D�1�2�z�=�'4�<�M�#�#�"�D� %�D� %�d�B� � B�T� B� B� B� B� B� C� Crc�n�|�d��|jD]}|�|���dS�NT)�enableloadextension� _extensions� loadextension)rr1� extensions r�_load_extensionszAPSWDatabase._load_extensionsSsI�� � � ��&�&�&��)� *� *�I� � � �y� )� )� )� )� *� *rc���|j�|��|���s@|���}|�d��|�|��dSdSrP)rR�addr!r"rQrS)rrTr1s r�load_extensionzAPSWDatabase.load_extensionXsr�� ����Y�'�'�'��~�~��� *��?�?�$�$�D� � $� $�T� *� *� *� � � �y� )� )� )� )� )� *� *rNc���|js&|������S|tjkr, |ddS#t t tf$rYnwxYw|S)Nr)�returning_clause� getconnection�last_insert_rowidr �SIMPLE�AttributeError� IndexError� TypeError)r�cursor� query_types r�last_insert_idzAPSWDatabase.last_insert_id_sw���$� ��'�'�)�)�;�;�=�=� =� �6�=� (� (� ��a�y��|�#��"�J� �:� � � ��� ����� s� A � A'�&A'c��� |������S#t$r.|j������cYSwxYwr)r[�changesr^ra)rras r� rows_affectedzAPSWDatabase.rows_affectedisf�� ;��'�'�)�)�1�1�3�3� 3��� ;� ;� ;��=�.�.�0�0�8�8�:�:� :� :� :� ;���s�%(�5A �A �deferredc�Z�|����d|z��dS)Nz begin %s;)ra�execute)r� lock_types r�beginzAPSWDatabase.beginos)�� � � � � ���k�I�5�6�6�6�6�6rc���t5|���}|������r ddd��dS|�d��ddd��n #1swxYwYdS)NFzcommit;T�rrar[� getautocommitri�r�curss r�commitzAPSWDatabase.commitrs��� "� $� $��;�;�=�=�D��!�!�#�#�1�1�3�3� �� $� $� $� $� $� $� $� $� �L�L�� #� #� #�  $� $� $� $� $� $� $� $� $� $� $���� $� $� $� $� �t��<A2�A2�2A6�9A6c���t5|���}|������r ddd��dS|�d��ddd��n #1swxYwYdS)NFz rollback;Trmros r�rollbackzAPSWDatabase.rollbackzs��� "� &� &��;�;�=�=�D��!�!�#�#�1�1�3�3� �� &� &� &� &� &� &� &� &� �L�L�� %� %� %�  &� &� &� &� &� &� &� &� &� &� &���� &� &� &� &� �trrc���tj||f��t5|���}|�||pd��ddd��n #1swxYwY|SrH)r �debugrrari)r�sql�paramsras r� execute_sqlzAPSWDatabase.execute_sql�s���� �c�6�]�#�#�#� "� .� .��[�[�]�]�F� �N�N�3�� �"� -� -� -� .� .� .� .� .� .� .� .� .� .� .���� .� .� .� .�� s�-A�A�Ar)rg)�__name__� __module__� __qualname__�tupler*�sqlitelibversion�split�server_versionrr&r(r2r/r4rArFrNrUrXrcrfrkrqrtry� __classcell__�rs@rrr!s|��������U�N�N�+@�4�+@�+B�+B�+H�+H��+M�+M�N�N�N�N�N�N�?�?�?�?�?�?�?�?� %�%�%� � � �!�!�!�!�!���� ?�?�?� +�+�+�C�C�C� *�*�*� *�*�*�����;�;�;� 7�7�7�7��������������rrc�(�|�t|��SdSr)�str)�s�vs r�nhr��s���}��1�v�v� ��}rc���eZdZ�fd�Z�xZS)rc�h��tt|���|��}|�|rdpdSdS)N�r)rr�db_value)rr�rs �rr�zBooleanField.db_value�s:��� �,�� %� %� .� .�q� 1� 1�� �=��7��<�a� � �=r)rzr{r|r�r�r�s@rrr�s8������� � � � � � � � � rrc��eZdZeZdS)rN�rzr{r|r�r�rIrrrr���������H�H�Hrrc��eZdZeZdS)r Nr�rIrrr r �r�rr c��eZdZeZdS)rNr�rIrrrr�r�rrc��eZdZeZdS)rNr�rIrrrr�r�rr)�__doc__r*�peeweerr� _BooleanFieldr� _DateFieldr�_DateTimeFieldr� _DecimalFieldr r � _TimeFieldr �playhouse.sqlite_extr rr�rIrr�<module>r�s�����$ � � � �����(�(�(�(�(�(�0�0�0�0�0�0�*�*�*�*�*�*�2�2�2�2�2�2�0�0�0�0�0�0�������*�*�*�*�*�*�������2�2�2�2�2�2�f�f�f�f�f�$�f�f�f�R��� � � � � �=� � � � ����� ��������� ���������N���������=�����r
Memory