� c��j���dZddlZddlZddlmZddlmZddlmZd d�Z Gd�de�Z d �Z e d k(re ejd d�yy) z�A simple SQLite CLI for the sqlite3 module. Apart from using 'argparse' for the command-line interface, this module implements the REPL as a thin wrapper around the InteractiveConsole class from the 'code' stdlib module. �N)�ArgumentParser)�InteractiveConsole)�dedentc�� |j|�D] }t|��y#tj$r�}t |�j } t|�d|j �d|��tj��n/#t$r#t|�d|��tj��YnwxYw|stjd�Yd}~yYd}~yd}~wwxYw)z�Helper that wraps execution of SQL code. This is used both by the REPL and by direct execution from the CLI. 'c' may be a cursor or a connection. 'sql' is the SQL string to execute. z (z): )�filez: �N) �execute�print�sqlite3�Error�type�__name__�sqlite_errorname�sys�stderr�AttributeError�exit)�c�sql�suppress_errors�row�e�tps �)/usr/lib64/python3.12/sqlite3/__main__.pyr r s��� ��9�9�S�>�C� �#�J�"�� �=�=�� �!�W� � �� 1� �R�D��1�-�-�.�c�!��5�C�J�J� G��� 1� �R�D��1�#�,�S�Z�Z� 0� 1��� �H�H�Q�K�K��� �s8�!$�C�C � -A;�:C �;)B'�$C �&B'�'C � Cc�*��eZdZdZ�fd�Zdd�Z�xZS)�SqliteInteractiveConsolezA simple SQLite REPL.c�Z��t�|��||_|j�|_y)N)�super�__init__�_con�cursor�_cur)�self� connection� __class__s �rrz!SqliteInteractiveConsole.__init__(s%��� ������ ��%�%�'�� �c���|xdk(rttj��yxdk(r td�ydk(rtjd�y tj |�syt |j|�y)z�Override runsource, the core of the InteractiveConsole REPL. Return True if more input is needed; buffering is done automatically. Return False is input is a complete statement ready for execution. z.versionz.helpzEnter SQL code and press enter.z.quitrTF)r r �sqlite_versionrr�complete_statementr r")r#�source�filename�symbols r� runsourcez"SqliteInteractiveConsole.runsource-so�� ����/�/�0�2����7�8�� ����� � � ��1�1�&�9���� � �6�*�r&)z�single)r� __module__� __qualname__�__doc__rr-� __classcell__)r%s@rrr%s����(� r&rc �^�tdd��}|jdtddd��|jd tdd � �|jd d ddtj��d��|j |�}|j dk(rd}nt|j �}tjdk(rdtjvrd}nd}tdtj�d|�d|�d��j�}dt_ dt_tj|j d��} |j rt#||j d��nt%|�}|j'|d �!�|j)�tj*d"�y#|j)�wxYw)#NzPython sqlite3 CLIzpython -m sqlite3)� description�progr+z:memory:�?zrSQLite database to open (defaults to ':memory:'). A new database is created if the file does not previously exist.)r �default�nargs�helprzAAn SQL query to execute. Any returned rows are printed to stdout.)r r8r9z-vz --version�versionzSQLite version z'Print underlying SQLite library version)�actionr:r9za transient in-memory database�win32z idlelib.runzCTRL-ZzCTRL-Dz2 sqlite3 shell, running on SQLite version z Connected to z} Each command will be run using execute() on the cursor. Type ".help" for more information; type ".quit" or z to quit. zsqlite> z ... )�isolation_levelF)r�)�exitmsgr)r� add_argument�strr r(� parse_argsr+�reprr�platform�modulesr�strip�ps1�ps2�connectrr r�interact�closer)�args�parser�db_name�eofkey�banner�con�consoles r�mainrSAs��� �(� ��F� �����j�� O��� ��� �C�s� 7��� ��� �k�)�!�'�"8�"8�!9�:� 6��� �6� � �d� #�D� �}�}� �"�2���t�}�}�%�� �|�|�w��=�� � �#C����� �2�29�2H�2H�1I�J��Y�<�=C�8�D� � � ���  ��C�G��C�G� �/�/�$�-�-�� >�C� � �8�8� �C����5� 9�/�s�3�G� � � �V�R� � 0� � � � ��H�H�Q�K�� � � � �s �1AF�F,�__main__r)T)r1r r�argparser�coder�textwraprr rrSr�argv�r&r�rZsT��� � �#�#���,�1��8:�z �z������!�"���r&