File: //lib/python3.12/sqlite3/__pycache__/__main__.cpython-312.pyc
�
    )!�h  �                   �   � d Z ddlZddlZddlmZ ddlmZ ddlmZ dd�Z	 G d� de�      Z
d	� Zed
k(  r eej                  dd �       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# t        j                  $ r�}t	        |�      j
                  }	 t        |� d|j                  � d|� �t        j                  ��       n/# t        $ r# t        |� d|� �t        j                  ��       Y nw xY w|st        j                  d�       Y d}~yY d}~yd}~ww xY w)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/lib/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                   �*   � � e Zd ZdZ� fd�Zdd�Z� xZS )�SqliteInteractiveConsolezA simple SQLite REPL.c                 �Z   �� t         �| �  �        || _        |j                  �       | _        y )N)�super�__init__�_con�cursor�_cur)�self�
connection�	__class__s     �r   r   z!SqliteInteractiveConsole.__init__(   s%   �� �
������	��%�%�'��	�    c                 �   � |xdk(  r t        t        j                  � �       yxdk(  r
 t        d�       ydk(  rt        j                  d�       y	 t        j
                  |�      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.quitr   TF)r
   r   �sqlite_versionr   r   �complete_statementr	   r"