%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib/python3.7/site-packages/beaker/ext/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib/python3.7/site-packages/beaker/ext/__pycache__/database.cpython-37.pyc

B

��[��@s�ddlmZddlZddlZddlmZddlmZmZddlmZm	Z	ddl
mZmZddl
mZmZe�e�ZdadadaGdd	�d	e�ZGd
d�de�ZdS)�)�pickleN)�datetime)�OpenResourceNamespaceManager�	Container)�InvalidCacheBackendError�MissingCacheParameter)�file_synchronizer�null_synchronizer)�verify_directory�SyncDictc@s~eZdZe�Ze�Zedd��Zddd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)�DatabaseNamespaceManagercCsRtdk	rdSy$ddladdlmaddlmaWntk
rLtd��YnXdS)Nr)�typesz8Database cache backend requires the 'sqlalchemy' library)�sa�
sqlalchemyZsqlalchemy.pool�poolr
�ImportErrorr)�cls�r�D/opt/alt/python37/lib/python3.7/site-packages/beaker/ext/database.py�_init_dependenciessz+DatabaseNamespaceManager._init_dependenciesNF�beaker_cachec	s�t�||��dkri�d|_|r*||_n|r8|d|_|jrHt|j��pR�d���}
����fdd�}i|_d|_d|_tj�	|
|�|_
dS)aTCreates a database namespace manager

        ``url``
            SQLAlchemy compliant db url
        ``sa_opts``
            A dictionary of SQLAlchemy keyword options to initialize the engine
            with.
        ``optimistic``
            Use optimistic session locking, note that this will result in an
            additional select when updating a cache value to compare version
            numbers.
        ``table_name``
            The table name to use in the database for the cache.
        ``schema_name``
            The schema name to use in the database for the cache.
        Nz/container_db_lockzsa.urlcs���}��fdd�}tj�||�}tj�|tjdtjdd�tjdt�d�dd	�tjd
tj	dd	�tjdtj	dd	�tjdtj
dd	�t�d��r��n|jd
�	}|j
dd�|S)Ncs&��d<t��d�}t��}||_|S)Nzsa.urlzsa.)rZengine_from_configZMetaData�bind)Zengine�meta)�sa_opts�urlrr�	make_metaMs
zHDatabaseNamespaceManager.__init__.<locals>.make_cache.<locals>.make_meta�idT)Zprimary_key�	namespace�F)Znullable�accessed�created�data)�schema)Z
checkfirst)r�	metadatas�getrZTableZColumnr
ZInteger�StringZDateTimeZ
PickleTypeZUniqueConstraintr"�create)Zmeta_keyrr�cache)r�schema_name�
table_namerrr�
make_cacheIsz5DatabaseNamespaceManager.__init__.<locals>.make_cacheF)r�__init__�lock_dirr
�hash�_is_new�loadedr�tablesr$r')�selfrrrZ
optimisticr)Zdata_dirr,r(�paramsZ	table_keyr*r)rr(r)rrr+$s"

z!DatabaseNamespaceManager.__init__cCst�S)N)r	)r1rrr�get_access_lockgsz(DatabaseNamespaceManager.get_access_lockcCstd|j|f|jd�S)Nz databasecontainer/funclock/%s/%s)�
identifierr,)rrr,)r1�keyrrr�get_creation_lockjs
z*DatabaseNamespaceManager.get_creation_lockcCs�|jr||_dS|j}t�|jjg|jj|jk���}|�	�}|�
�|sXd|_i|_nNd|_y|d|_Wn8t
tttjtjfk
r�t�d�i|_d|_YnX||_d|_dS)NTFr!z.Couln't load pickle data, creating new storage)r/�flagsr'r�select�cr!r�execute�fetchone�closer.r-�IOError�OSError�EOFErrorrZPickleError�log�debug)r1r7�replacer'Zresult_proxy�resultrrr�do_openqs*
z DatabaseNamespaceManager.do_opencCs�|jdk	rx|jdks|jdkrx|j}|jrT|��j|j|jt��t��d�d|_n$|�	|j
j|jk�j|jt��d�d|_dS)Nr9�w)rr!rr F)r!r)r7r'r.�insertr:rr-r�now�updater9)r1r'rrr�do_close�sz!DatabaseNamespaceManager.do_closecCs.|j}|�|jj|jk���i|_d|_dS)NT)r'�deleter9rr:r-r.)r1r'rrr�	do_remove�sz"DatabaseNamespaceManager.do_removecCs
|j|S)N)r-)r1r5rrr�__getitem__�sz$DatabaseNamespaceManager.__getitem__cCs
||jkS)N)r-)r1r5rrr�__contains__�sz%DatabaseNamespaceManager.__contains__cCs||j|<dS)N)r-)r1r5�valuerrr�__setitem__�sz$DatabaseNamespaceManager.__setitem__cCs|j|=dS)N)r-)r1r5rrr�__delitem__�sz$DatabaseNamespaceManager.__delitem__cCs
|j��S)N)r-�keys)r1rrrrQ�szDatabaseNamespaceManager.keys)NNFrNNN)�__name__�
__module__�__qualname__rr#r0�classmethodrr+r3r6rDrIrKrLrMrOrPrQrrrrrs 

A
	rc@seZdZeZdS)�DatabaseContainerN)rRrSrTrZnamespace_managerrrrrrV�srV)Zbeaker._compatrZloggingrZbeaker.containerrrZbeaker.exceptionsrrZbeaker.synchronizationrr	Zbeaker.utilr
rZ	getLoggerrRr@rrr
rrVrrrr�<module>s
!

Zerion Mini Shell 1.0