%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/opt/alt/python27/lib/python2.7/site-packages/beaker/
Upload File :
Create Path :
Current File : //proc/self/root/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyo

�
��Wc@s
dZddlZddlZddlZddlZddlZddljZddlm	Z	m
Z
ddlmZm
Z
mZmZmZddddd	d
ddd
dddgZejd�Zejej�r�ejZn	d�Zd
efd��YZdefd��YZdefd��YZdefd��YZdefd��YZdefd��YZdefd��YZiZe Z!de"fd��YZ#defd��YZ$d
e$fd��YZ%de$fd��YZ&d	e$fd ��YZ'e'Z(dS(!sContainer and Namespace classesi����N(tCreationAbortedErrortMissingCacheParameter(t
_threadingtfile_synchronizertmutex_synchronizertNameLocktnull_synchronizertValuet	ContainertContainerContexttMemoryContainertDBMContainertNamespaceManagertMemoryNamespaceManagertDBMNamespaceManagert
FileContainertOpenResourceNamespaceManagertFileNamespaceManagerRsbeaker.containercGsdS(N((tmessagetargs((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytdebugscBs�eZdZed��Zd�Zd�Zd�Zd�Zd�Z	e
d�Zd�Zd	�Z
d
�Zd�Zdd�Zd
�Zd�Zd�Zd�ZRS(s�Handles dictionary operations and locking for a namespace of
    values.
    
    The implementation for setting and retrieving the namespace data is
    handled by subclasses.
    
    NamespaceManager may be used alone, or may be privately accessed by
    one or more Container objects.  Container objects provide per-key
    services like expiration times and automatic recreation of values.
    
    Multiple NamespaceManagers created with a particular name will all
    share access to the same underlying datasource and will attempt to
    synchronize against a common mutex object.  The scope of this
    sharing may be within a single process or across multiple
    processes, depending on the type of NamespaceManager used.
    
    The NamespaceManager itself is generally threadsafe, except in the
    case of the DBMNamespaceManager in conjunction with the gdbm dbm
    implementation.

    cCsdS(N((tcls((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt_init_dependencies4scCs|j�||_dS(N(Rt	namespace(tselfR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt__init__8s
cCs
t��dS(N(tNotImplementedError(Rtkey((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytget_creation_lock<scCs
t��dS(N(R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt	do_remove?scCsdS(N((R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytacquire_read_lockBscCsdS(N((R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytrelease_read_lockEscCstS(N(tTrue(Rtwait((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytacquire_write_lockHscCsdS(N((R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytrelease_write_lockKscCs
|j|�S(N(t__contains__(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pythas_keyNscCs
t��dS(N(R(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt__getitem__QscCs
t��dS(N(R(RRtvalue((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt__setitem__TscCs|||<dS(s�Optional set_value() method called by Value.
        
        Allows an expiretime to be passed, for namespace
        implementations which can prune their collections
        using expiretime.
        
        N((RRR't
expiretime((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt	set_valueWscCs
t��dS(N(R(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR$ascCs
t��dS(N(R(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt__delitem__dscCs
t��dS(N(R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytkeysgscCs|j�dS(N(R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytremovejsN(t__name__t
__module__t__doc__tclassmethodRRRRRRR R"R#R%R&R(tNoneR*R$R+R,R-(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRs"									
			cBszeZdZd�Zd�Zd�Zd�Zd�Zd�Ze	d�Z
d�Zed	�Z
ed
�Zd�ZRS(s~A NamespaceManager where read/write operations require opening/
    closing of a resource which is possibly mutexed.
    
    cCs;tj||�|j�|_d|_tj�|_dS(Ni(RRtget_access_locktaccess_locktopenersRtLocktmutex(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRss	cCs
t��dS(N(R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR3yscCs
t��dS(N(R(Rtflags((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytdo_open|scCs
t��dS(N(R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytdo_closescCsB|jj�y|jddt�Wn|jj��nXdS(Ntrt
checkcount(R4RtopenR R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s

cCs)z|jdt�Wd|jj�XdS(NR<(tcloseR R4R(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�scCsZ|jj|�}y*|s!|r7|jddt�n|SWn|jj��nXdS(NtcR<(R4R"R=R R#(RR!R;((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR"�s
cCs)z|jdt�Wd|jj�XdS(NR<(R>R R4R#(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR#�scCss|jj�zQ|rG|jdkr5|j|�n|jd7_n|j|�d|_Wd|jj�XdS(Nii(R7tacquireR5R9trelease(RR8R<((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR=�s


cCs|jj�z]|rD|jd8_|jdkri|j�qin%|jdkr`|j�nd|_Wd|jj�XdS(Nii(R7R@R5R:RA(RR<((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR>�s


cCs@|jj�z|jdt�|j�Wd|jj�XdS(NR<(R4R"R>tFalseRR#(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR-�s

(R.R/R0RR3R9R:RRR R"R#RBR=R>R-(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRns						
	
cBskeZdZdddd�Zd�Zd	�Zd
�Zd�Zd�Z	d
�Z
dd�Zd�ZRS(Rt
createfuncR)texpire_argumentt	starttimet
storedtimeRcCs:||_||_||_||_d|_||_dS(Ni����(RRCRDRERFR(RRRRCR)RE((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s					cCs9|jj�z|jj|j�SWd|jj�XdS(srreturn true if the container has a value stored.

        This is regardless of it being expired or not.

        N(RRR%RR(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt	has_value�s
cCs|j�p|jdk	S(N(thas_current_valueRCR2(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytcan_have_value�scCs�|jj�zd|jj|j�}|rly*|j�\}}}|j||�SWqltk
rhqlXntSWd|jj�XdS(N(	RRR%Rt
_get_valuet_is_expiredtKeyErrorRBR(RRGtstoredtexpiredR'((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRH�s

cCs>|jdk	r||jkp=|dk	o=tj�||kS(s1Return true if this container's value is expired.N(RER2ttime(RRFR)((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRK�scCs�|jj�z}|j�}|rny/|j�\}}}|j||�sP|SWqntk
rjt}qnXn|js�t|j��nWd|jj	�Xt}|jj
|j�}|r�|jdt�s�td�|Std�t
}n|std�|j�td�nz�|jj�zV|j�r{y/|j�\}}}|j||�sc|SWq{tk
rwq{XnWd|jj	�Xtd�|j�}|j|�|SWd|j�td�XdS(NR!s6get_value returning old value while new one is createdslock_creatfunc (didnt wait)slock_createfunc (waiting)slock_createfunc (waited)sget_value creating new valuesreleased create lock(RRRGRJRKRLRBRCRRRR@RR R*RA(RRGRMRNR'thas_createlockt
creation_locktv((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt	get_value�sT


	

	







cCs�|j|j}y|\}}}Wn�tk
r�t|�dksK�n|\}}|j}td||j�|jj�|j||�|jj�n t	k
r�t
|j��nX|||fS(Nis*get_value upgrading time %r expire time %r(RRt
ValueErrortlenRDRRR*Rt	TypeErrorRL(RR'RMRN((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRJ2s
	

cCsv|jj�zT|dkr+tj�}ntd||j�|jj|j||j|f�Wd|jj�XdS(Ns'set_value stored time %r expire time %r(	RR"R2RORRDR*RR#(RR'RF((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR*Gs
&cCsv|jj�zTtd�|jj|j�rWy|j|j=WqWtk
rSqWXnd|_Wd|jj�XdS(Ntclear_valuei����(RR"RR%RRLRFR#(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRWQs



(skeys
createfuncs
expiretimesexpire_arguments	starttimes
storedtimes	namespaceN(
R.R/t	__slots__R2RRGRIRHRKRSRJR*RW(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s					8	
tAbstractDictionaryNSManagercBsVeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
RS(	s�A subclassable NamespaceManager that places data in a dictionary.
    
    Subclasses should provide a "dictionary" attribute or descriptor
    which returns a dict-like object.   The dictionary will store keys
    that are local to the "namespace" attribute of this manager, so
    ensure that the dictionary will not be used by any other namespace.

    e.g.::
    
        import collections
        cached_data = collections.defaultdict(dict)
        
        class MyDictionaryManager(AbstractDictionaryNSManager):
            def __init__(self, namespace):
                AbstractDictionaryNSManager.__init__(self, namespace)
                self.dictionary = cached_data[self.namespace]
                
    The above stores data in a global dictionary called "cached_data",
    which is structured as a dictionary of dictionaries, keyed
    first on namespace name to a sub-dictionary, then on actual
    cache key to value.
    
    cCs tdd|j|fdt�S(Nt
identifiersmemorynamespace/funclock/%s/%st	reentrant(RRR (RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRxscCs|j|S(N(t
dictionary(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR&~scCs|jj|�S(N(R\R$(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR$�scCs|jj|�S(N(R\R$(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR%�scCs||j|<dS(N(R\(RRR'((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR(�scCs|j|=dS(N(R\(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR+�scCs|jj�dS(N(R\tclear(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�scCs
|jj�S(N(R\R,(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR,�s(R.R/R0RR&R$R%R(R+RR,(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRY_s							cBseZej�Zd�ZRS(cKs/tj||�tjj|jt�|_dS(N(RYRR
t
namespacestgetRtdictR\(RRtkwargs((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s(R.R/tutiltSyncDictR^R(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR
�scBs�eZdddded�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�ZRS(cKs||_|r&|r&td��n|r8||_n
|d|_tj|j�|rr|rrtd��n|r�||_n
|d|_tj|j�|p�t|_d|_	t
j||�tjd|jd|j
gddd	|j�|_td
|j�|j�dS(Nsdata_dir or dbm_dir is requireds/container_dbms data_dir or lock_dir is requireds/container_dbm_locktroottidentifierst	extensions.dbmtdigest_filenamessdata file %s(RgRtdbm_dirRbtverify_directorytlock_dirtanydbmt	dbmmoduleR2tdbmRRtencoded_pathRtfileRt
_checkfile(RRRltdata_dirRhRjRgRa((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s,	

	cCstd|jd|j�S(NRZRj(RRRj(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR3�scCstdd|jd|j�S(NRZsdbmcontainer/funclock/%sRj(RRRj(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s
cCsRtj|tj�rtSx2dD]*}tj|tj|tj�r tSq WtS(Ntdbtdattpagtdir(RrRsRtsdir(tostaccesstF_OKR textsepRB(RRotext((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pytfile_exists�s
 cCs;|j|j�s7|jj|jd�}|j�ndS(NR?(R{RoRlR=R>(Rtg((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRp�scCs�g}tj|jtj�r1|j|j�nxOdD]G}tj|jtj|tj�r8|j|jtj|�q8q8W|S(NRtRuRrRs(spagsdirsdbsdat(RvRwRoRxtappendRy(RtlistRz((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt
get_filenames�s
#"cCsbtd|j�y|jj|j|�|_Wn,|j�|jj|j|�|_nXdS(Nsopening dbm file %s(RRoRlR=RmRp(RR8((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR9�s
cCs3|jdk	r/td|j�|jj�ndS(Nsclosing dbm file %s(RmR2RRoR>(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR:�scCs(x!|j�D]}tj|�q
WdS(N(RRvR-(Rtf((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�scCstj|j|�S(N(tcPickletloadsRm(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR&�scCs|jj|�S(N(RmR%(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR$�scCstj|�|j|<dS(N(R�tdumpsRm(RRR'((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR(�scCs|j|=dS(N(Rm(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR+�scCs
|jj�S(N(RmR,(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR,�sN(R.R/R2R RR3RR{RpRR9R:RR&R$R(R+R,(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�s 			
		
							cBs�eZddded�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�ZRS(
cKs||_|r&|r&td��n|r8||_n
|d|_tj|j�|rr|rrtd��n|r�||_n
|d|_tj|j�tj||�tjd|jd|j	gddd	|j�|_
i|_td
|j
�dS(Ns data_dir or file_dir is requireds/container_files data_dir or lock_dir is requireds/container_file_lockRdReRfs.cacheRgsdata file %s(
RgRtfile_dirRbRiRjRRRnRRothashR(RRRqR�RjRgRa((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRs(	

	cCstd|jd|j�S(NRZRj(RRRj(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR3scCstdd|jd|j�S(NRZsfilecontainer/funclock/%sRj(RRRj(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR#s
cCstj|tj�S(N(RvRwRx(RRo((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR{)sc	Csz|j|j�rmt|jd�}ytj|�|_Wn#ttttj	t
fk
r_nX|j�n||_dS(Ntrb(
R{RoR=R�tloadR�tIOErrortOSErrortEOFErrortPickleErrorRTR>R8(RR8tfh((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR9,s
cCsf|jdks|jdkrPt|jd�}tj|j|�|j�ni|_d|_dS(NR?twtwb(R8R=RoR�tdumpR�R>R2(RR�((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR:7s
	cCs7ytj|j�Wntk
r)}nXi|_dS(N(RvR-RoR�R�(Rterr((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR@s
cCs|j|S(N(R�(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR&IscCs|jj|�S(N(R�R%(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR$LscCs||j|<dS(N(R�(RRR'((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR(OscCs|j|=dS(N(R�(RR((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR+RscCs
|jj�S(N(R�R,(R((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR,UsN(R.R/R2R RR3RR{R9R:RR&R$R(R+R,(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRs													t
ContainerMetacBs#eZd�Zdddd�ZRS(cCs#|jt|<tj||||�S(N(tnamespace_classtnamespace_classesttypeR(Rt	classnametbasestdict_((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR`s
c
	KsY||kr||}n!t|}	|	||�||<}t||d|d|d|�S(NRCR)RE(R�R(
RRtcontextRRCR)RERatnstnscls((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt__call__cs

N(R.R/RR2R�(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR�_s	cBseZeZeZRS((R.R/R�t
__metaclass__RR�(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRmscBseZeZRS((R.R/RR�(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRqscBseZeZRS((R.R/R
R�(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyR
tscBseZeZRS((R.R/RR�(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyRws()R0RkR�tloggingRvROtbeaker.utilRbtbeaker.exceptionsRRtbeaker.synchronizationRRRRRt__all__t	getLoggertloggertisEnabledFortDEBUGRtobjectRRRRYR
RRR�R`R	R�R�RRR
RtDbmContainer(((sA/opt/alt/python27/lib/python2.7/site-packages/beaker/container.pyt<module>s@(				QU�4fZ

Zerion Mini Shell 1.0