
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    SW*                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlT ejZ	zd dl
mZ W n ek
rr   d dlZY nX eeje eeje eeje G dd deZe	dk rd	Zd	Zne Ze ZdS )
    N)ImproperlyConfigured)sqlite3)*dbapi2c                       sF   e Zd Zd fdd	Zdd Zdd Zedd	 Zed
d Z  Z	S )BerkeleyDatabaseNc                    s\   t t| j|f|d|i| |r0| jd |rD| jd|f |rX| jd|f d S )Npragmas)multiversionon	page_size
cache_size)superr   __init___pragmasappend)selfdatabaser   r   r   r	   argskwargs	__class__ G/opt/alt/python38/lib64/python3.8/site-packages/playhouse/berkeleydb.pyr      s    
zBerkeleyDatabase.__init__c                 K   sL   t s*dt }tr|d7 }n|d7 }t|tj|f|}d |_| | |S )NzkYour Python SQLite driver (%s) does not appear to have been compiled against the BerkeleyDB SQLite library.zb However, the libsqlite on your system is the BerkeleyDB implementation. Try recompiling pysqlite.z` Additionally, the libsqlite on your system does not appear to be the BerkeleyDB implementation.)PYSQLITE_BERKELEYDB
berkeleydbLIBSQLITE_BERKELEYDBr   connectisolation_level_add_conn_hooks)r   r   r   messageconnr   r   r   _connect$   s    

zBerkeleyDatabase._connectc              	   C   st   | j rp| }| j D ]R\}}|dkrTz|d||f  W qf tjk
rP   Y qfX q|d||f  q|  d S )Nr	   zPRAGMA %s = %s;)r   cursorexecuter   OperationalErrorclose)r   r    r"   pragmavaluer   r   r   _set_pragmas8   s    zBerkeleyDatabase._set_pragmasc                 C   st   zddl m} W n tk
r,   dd l}Y nX |d}z|d }W 5 |  X |D ]\}|dkrZ dS qZdS )Nr   r   z:memory:zPRAGMA compile_options;BERKELEY_DBTF)	pysqlite2r   ImportErrorr   r   r%   r#   fetchall)clsr   r    resultsoptionr   r   r   check_pysqliteJ   s    


zBerkeleyDatabase.check_pysqlitec                 C   sZ   t jdrd}nt jdkr"d}nd}zt|}W n tk
rJ   Y dS X |ddkS )	Nwinzlibsqlite3.dlldarwinzlibsqlite3.dylibzlibsqlite3.soFr)      )sysplatform
startswithctypesCDLLOSErrorZsqlite3_compileoption_used)r-   ZlibraryZ	libsqliter   r   r   check_libsqliteZ   s    
z BerkeleyDatabase.check_libsqlite)NNNN)
__name__
__module____qualname__r   r!   r(   classmethodr0   r:   __classcell__r   r   r   r   r      s     
r   )         F)r7   datetimedecimalr4   peeweer   r   Zplayhouse.sqlite_extsqlite_version_infoZsqlite3_lib_versionr*   r   r   r+   register_adapterDecimalstrdatetimeZSqliteExtDatabaser   r   r   r0   r:   r   r   r   r   <module>   s(   T