https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/trac/db/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/trac/db/__pycache__/sqlite_backend.cpython-310.pyc
o

�k�`�C�@s�ddlZddlZddlZddlZddlmZddlmZmZddl	m
Z
mZmZddl
mZmZddlmZmZmZddlmZmZddlmZmZmZdd	lmZdd
lmZmZe� d�Z!e� d�Z"zddl#m$Z%Wn
e&yyddl'Z%Ynwe%j(Z)e%j)Z*e%j+Z,ee%��-d
de,�Z.dZ/dZ0Gdd�de%j1�Z2Gdd�de2�Z3ddd�Z4dd�Z5Gdd�de
�Z6Gdd�dee�Z7dd�Z8dd �Z9d!d"�Z:dS)#�N)�closing)�ConfigurationError�
ListOption)�	Component�	TracError�
implements)�ConnectionBase�IDatabaseConnector)�Table�Column�Index)�ConnectionWrapper�IterableCursor)�get_pkginfo�getuser�lazy)�tag)�_�tag_z([/_%])z[*?\[]�versionz%d.%d.%s)�rr)��rc@s&eZdZdd�Zddd�Zdd�ZdS)	�PyFormatCursorcOs6z||g|�Ri|��WStjy|j���w�N)�sqlite�
DatabaseError�cnx�rollback)�self�function�args�kwargs�r#�8/usr/lib/python3/dist-packages/trac/db/sqlite_backend.py�_rollback_on_error4s
�z!PyFormatCursor._rollback_on_errorNcCs*|r
|dt|�}|�tjj||pg�S)N��?)�lenr%r�Cursor�execute�r�sqlr!r#r#r$r*;s
�zPyFormatCursor.executecCs.|sdS|dt|d�}|�tjj||�S)Nr&r)r(r%rr)�executemanyr+r#r#r$r-As�zPyFormatCursor.executemanyr)�__name__�
__module__�__qualname__r%r*r-r#r#r#r$r3s
rc@s6eZdZdd�Zdd�Zdd�Zddd	�Zd
d�ZdS)
�EagerCursorcCst�||�g|_d|_dS�Nr)r�__init__�rows�pos)r�conr#r#r$r3Qs
zEagerCursor.__init__cGs(tj|g|�R�}t�|�|_d|_|Sr2)rr*�fetchallr4r5)rr!�resultr#r#r$r*VszEagerCursor.executecCs8z|j|j}Wn
tyYdSw|jd7_|S)N�)r4r5�
IndexError)r�rowr#r#r$�fetchone\s�zEagerCursor.fetchoneNcCs6|dur|j}|j|j|j|�}|j|7_|Sr)�	arraysizer4r5)r�numr8r#r#r$�	fetchmanyes
zEagerCursor.fetchmanycCs |j|jd�}t|j�|_|Sr)r4r5r()rr8r#r#r$r7mszEagerCursor.fetchallr)r.r/r0r3r*r<r?r7r#r#r#r$r1Ps
	r1�integer)�int�int64c	cs�d|jg}g}|jD].}|j��}t�||�}|jrd}nt|j�dkr0|j|jvr0|d7}|�	d|j|f�qt|j�dkrM|�	dd�
|j��|�	d�
|�d	�d
�
|�V|jD]}|jrgdnd}d
||jd�
|j�|jd�
|j�fVq`dS)NzCREATE TABLE %s (zinteger PRIMARY KEYr9z PRIMARY KEYz	    %s %sz    UNIQUE (%s)�,z,
z
);�
�UNIQUE�z%CREATE %s INDEX %s_%s_idx ON %s (%s);r)
�name�columns�type�lower�	_type_map�get�auto_incrementr(�key�append�join�indices�unique)�tabler,�coldefs�column�ctype�indexrRr#r#r$�_to_sqlzs*�



��rXc@s�eZdZdZee�dZedddd�ZdZ	dd	�Z
d
d�Zdifdd
�Zdd�Z
ddifdd�Zdifdd�Zdifdd�Zdd�Zdd�Zdd�Zdd�Zedd��ZdS) �SQLiteConnectorzxDatabase connector for SQLite.

    Database URLs should be of the form:
    {{{
    sqlite:path/to/trac.db
    }}}
    Fr�
extensionsz�Paths to [https://sqlite.org/loadext.html sqlite extensions].
        The paths may be absolute or relative to the Trac environment.
        )�docNcCs
d|_dSr)�error�rr#r#r$r3��
zSQLiteConnector.__init__ccsR�ttkrtdtdtd�|_n
ttkrtddtd�|_d|jr#dndfVdS)	NzKSQLite version is %(version)s. Minimum required version is %(min_version)s.z%d.%d.%d)r�min_versionz,Need at least PySqlite %(version)s or higher�rr���r9)�sqlite_version�min_sqlite_versionr�sqlite_version_stringr\�pysqlite_version�min_pysqlite_versionr]r#r#r$�get_supported_schemes�s�
��z%SQLiteConnector.get_supported_schemesc	Csbd|_|j|d<|dkr+z	|j��W|jSttjfy*t|||�|_Y|jSwt|||�S)NTrZ�:memory:)�required�_extensions�
memory_cnx�cursor�AttributeErrorrr�SQLiteConnection�r�path�log�paramsr#r#r$�get_connection�s
��zSQLiteConnector.get_connectioncCstSr)rr]r#r#r$�get_exceptions��zSQLiteConnector.get_exceptionsc	s�fdd�}|dkre��|�rttd|d���tj�|�}tj�|�s(t�|�tj	|dt
|�dd��d�}t|�
���}t||�d	��t||�d
��|||�Wd�n1s\wYd|_n"��|||�}t|�
���
}|||�Wd�n1s�wY|��dS)Ncs<|dur
ddlm}|D]}��|�D]}|�|�qqdS)Nr)�schema)�trac.db_defaultrv�to_sqlr*)rlrvrS�stmtr]r#r$�
insert_schema�s��z.SQLiteConnector.init_db.<locals>.insert_schemarhz#Database already exists at %(path)s�rp�timeouti')�isolation_levelr|�journal_mode�synchronous�DEFERRED)�	db_existsrr�osrp�dirname�exists�makedirsr�connectrArLrrl�_set_journal_mode�set_synchronousr}rs�commit)	rrprvrqrrrz�dirrrlr#r]r$�init_db�s.
�
���zSQLiteConnector.init_dbc
Csp|dkr6tj�|�stj�|jj|�}zt�|�WdSty5}z|jtjkr*�WYd}~dSd}~wwdS)Nrh)	r�rp�isabsrP�env�remove�OSError�errno�ENOENT)rrprqrr�er#r#r$�
destroy_db�s����zSQLiteConnector.destroy_dbcCstj�|�Sr)r�rpr�ror#r#r$r��szSQLiteConnector.db_existscC�t|�Sr)rX�rrSr#r#r$rx��zSQLiteConnector.to_sqlcCsFt|���D]\}\}}t�||�t�||�kr td||f��qdS)z�Yield SQL statements altering the type of one or more columns of
        a table.

        Type changes are specified as a `columns` dict mapping column names
        to `(from, to)` SQL type tuples.
        z+Conversion from %s to %s is not implementedr#)�sorted�itemsrKrL�NotImplementedError)rrSrHrG�from_�tor#r#r$�alter_column_types�s��z"SQLiteConnector.alter_column_typescCs�ddl}|j�dd�}z|d|�d��}Wn	tyYnwtj�|jj|dd��}|�	||�tj�
|�s?ttd���|S)zlSimple SQLite-specific backup of the database.

        :param dest_file: Destination file basename
        rN�trac�databaser'�zNo destination file created)
�shutil�configrLrW�
ValueErrorr�rprPr��copyr�rr)r�	dest_filer��db_str�db_namer#r#r$�backup�s�zSQLiteConnector.backupccs�dtfVdtfVdS)N�SQLite�pysqlite)rd�pysqlite_version_stringr]r#r#r$�get_system_infos�
zSQLiteConnector.get_system_infocCs<g}|jD]}tj�|�stj�|jj|�}|�|�q|Sr)rZr�rpr�rPr�rO)rrj�extpathr#r#r$rjs
zSQLiteConnector._extensions)r.r/r0�__doc__rr	rirrZrkr3rgrsrtr�r�r�rxr�r�r�rrjr#r#r#r$rY�s*�


rYc@s�eZdZdZddgZedkZdifdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zd1dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd1d+d,�Zd-d.�Zd/d0�ZdS)2rnzConnection wrapper for SQLite.�_active_cursors�_eager)rr�Nc
Csjd|_|dkr@t�|tj�sttd|d���tj�|�}t�|tjtj	�r0t�|tjtj	�s@tt
dt�t
��t�|�d���t��|_t|�dd��}|�dd	�d	k|_tj|tjdtd
k|d�}|�dg�}t|�d
kr�|�d�|D]}|�|�qv|�d�t|����}	t|	|�d��t|	|�d��Wd�n1s�wYd|_t �!|||�dS)NrhzDatabase "%(path)s" not found.r{zyThe user %(user)s requires read _and_ write permissions to the database file %(path)s and the directory it is located in.)�userrpr|g$@rl�eager)rrr9)�detect_typesr}�check_same_threadr|rZrTFr~rr�)"rr��access�F_OKrrrpr��R_OK�W_OKrr�coder�weakref�WeakKeyDictionaryr�rArLr�rr��PARSE_DECLTYPESrbr(�enable_load_extension�load_extensionrrlr�r�r}r
r3)
rrprqrr�dbdirr|rrZ�extrlr#r#r$r3$sF��
�

�

�zSQLiteConnection.__init__cCs2|j�ttf|j�}d|j|<||_t||j�S)NT)rrlrr1r�r�rrq�rrlr#r#r$rlJs
zSQLiteConnection.cursorcCs"|jD]}|��q|j��dSr)r��closerrr�r#r#r$rPs

zSQLiteConnection.rollbackcCs0tdkrd|t�||�fS|dkrd|S|S)N)rrrzCAST(%s AS %s)rAz1*)rbrKrL)rrUrIr#r#r$�castUs
zSQLiteConnection.castcGs
d�|�S)Nz||)rP)rr!r#r#r$�concat^r^zSQLiteConnection.concatcs���|�}||vrc��|�}|�|g�|d}��|�}��|�}|�|�d��fdd�|D��}���}	|	�d||f���|�t	|�D]}
|	�|
�qI|	�d||||f���|�dSdS)N�_oldrCc3s�|]}��|�VqdSr)�quote)�.0�colr]r#r$�	<genexpr>js�z/SQLiteConnection.drop_column.<locals>.<genexpr>zO
                CREATE TEMPORARY TABLE %s AS SELECT * FROM %s
                zG
                INSERT INTO %s (%s) SELECT %s FROM %s
                )
�get_column_names�_get_table_schema�remove_columnsr�r�rPrlr*�
drop_tablerX)rrSrU�column_names�table_schema�
temp_table�
table_name�temp_table_name�cols_to_copyrlr,r#r]r$�drop_columnas.




�
���zSQLiteConnection.drop_columncCsZ|��}tdkr!z
|�d|�|��WdStjy YdSw|�d|�|��dS)N)rr�rzDROP TABLE zDROP TABLE IF EXISTS )rlrbr*r�r�OperationalError�rrSrlr#r#r$r�xs�zSQLiteConnection.drop_tablecCsdd�|�|�D�S)NcS�g|]}|d�qS)r9r#�r�r;r#r#r$�
<listcomp>��z5SQLiteConnection.get_column_names.<locals>.<listcomp>)�_get_table_infor�r#r#r$r���z!SQLiteConnection.get_column_names�idcCs|jSr)�	lastrowid�rrlrSrUr#r#r$�get_last_id�szSQLiteConnection.get_last_idcCsgSrr#r]r#r#r$�get_sequence_names�ruz#SQLiteConnection.get_sequence_namescCs|�d�}dd�|D�S)NzK
            SELECT name FROM sqlite_master WHERE type='table'
            cSr�)rr#r�r#r#r$r��r�z4SQLiteConnection.get_table_names.<locals>.<listcomp>)r*)rr4r#r#r$�get_table_names�s
z SQLiteConnection.get_table_namescCst|�|��Sr)�boolr�r�r#r#r$�	has_table�szSQLiteConnection.has_tablecCstdkrdSdS)N�rr9rzLIKE %s ESCAPE '/'zLIKE %s)rbr]r#r#r$�like�szSQLiteConnection.likecCstdkr
t�d|�S|S)Nr�z/\1)rb�_like_escape_re�sub)r�textr#r#r$�like_escape�szSQLiteConnection.like_escapecCsdS)NzGLOB %sr#r]r#r#r$�prefix_match�ruzSQLiteConnection.prefix_matchcCst�dd�|�dS)NcSsd|�d�S)Nz[%s]r)�group)�mr#r#r$�<lambda>�sz5SQLiteConnection.prefix_match_value.<locals>.<lambda>�*)�_glob_escape_rer�)r�prefixr#r#r$�prefix_match_value�r�z#SQLiteConnection.prefix_match_valuecCr�r)�_quote)r�
identifierr#r#r$r��r�zSQLiteConnection.quotecCs,|��}|��}|D]	}|�d|�q
|S)NzDELETE FROM %s)rlr�r*)rrl�table_namesrGr#r#r$�reset_tables�s
zSQLiteConnection.reset_tablescCsdSrr#r�r#r#r$�update_sequence�sz SQLiteConnection.update_sequencecCs$|��}|�d|�|��t|�S)NzPRAGMA table_info(%s))rlr*r��listr�r#r#r$r��sz SQLiteConnection._get_table_infoc
Csd}g}|�|�D](}|d}|d}|d}|dkr%|dkr%|g}d}nd}|�t|||d��q	|��}	|	�d|�|��|	��D]2}|d}
|d}|	�d	|�|
��d
d�|	D�}|durk|
�d�rk|}qD|�t|t	|�d
��qDt
||p|gd�|S)Nr9r�r@TF)rIrMzPRAGMA index_list(%s)zPRAGMA index_info(%s)cSr�)rr#r�r#r#r$r��r�z6SQLiteConnection._get_table_schema.<locals>.<listcomp>�sqlite_autoindex_)rR)rN)r�rOrrlr*r�r7�
startswithrr�r
)
rrSrNr�r;rU�type_�pkrMrlrWrRrHr#r#r$r��s0

�z"SQLiteConnection._get_table_schema)r�)r.r/r0r��	__slots__rb�poolabler3rlrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r#r#r#r$rns2&	

rncCsd|�dd�S)Nz`%s`�`z``)�replace)r�r#r#r$r��sr�cCs�|sdS|��}|dkrttd|d���|�dt|��|��}|s+ttdtd���|dp0d��|kr>ttd	|td
���dS)N�OFFz8PRAGMA journal_mode `%(value)s` cannot be used in SQLite)�valuezPRAGMA journal_mode = %sz9PRAGMA journal_mode isn't supported by SQLite %(version)sr`rrFzEPRAGMA journal_mode `%(value)s` isn't supported by SQLite %(version)s)rr)�upperrrr*r�r<rd)rlrr;r#r#r$r��s$����r�cCs2|sdS|��rtt|��}|�dt|��dS)NzPRAGMA synchronous = %s)�isdigit�strrAr*r�)rlrr#r#r$r��s
r�);r�r��rer��
contextlibr�trac.configrr�	trac.corerrr�trac.db.apirr	�trac.db.schemar
rr�trac.db.utilr
r�	trac.utilrrr�trac.util.htmlr�trac.util.translationrr�compiler�r��pysqlite2.dbapi2�dbapi2r�ImportError�sqlite3�sqlite_version_inforbrd�version_inforerLr�rcrfr)rr1rKrXrYrnr�r�r�r#r#r#r$�<module>sV

�
��%�<

https://t.me/RX1948 - 2025