/usr/lib/python3/dist-packages/landscape/lib/__pycache__
Edit: /usr/lib/python3/dist-packages/landscape/lib/__pycache__/persist.cpython-310.pyc (17787B)
o
cR @ s d dl Z d dlZd dlZd dlZd dlmZ g dZe ZG dd de Z
G dd de
ZG dd d eZG d
d deZ
edjZd
d Zdd ZG dd deZG dd deZG dd deZdS ) N)
StringType)Persist
PickleBackendBPickleBackendpath_string_to_tuplepath_tuple_to_string
RootedPersistPersistErrorPersistReadOnlyErrorc @ e Zd ZdS )r N__name__
__module____qualname__ r r 7/usr/lib/python3/dist-packages/landscape/lib/persist.pyr % r c @ r )r
Nr r r r r r
) r r
c @ s e Zd ZdZd(ddZdd Zdd Zd d
ZeeeZ eeZ
dd Zd
d Zdd Z
d)ddZeefddZd*ddZedddfddZd*ddZd+ddZd,ddZd*d d!Zeddfd"d#Zd,d$d%Zd&d' ZdS )-r a Persist a hierarchical database of key=>value pairs.
There are three different kinds of option maps, regarding the
persistence and priority that maps are queried.
- hard - Options are persistent.
- soft - Options are not persistent, and have a higher priority
than persistent options.
- weak - Options are not persistent, and have a lower priority
than persistent options.
@ivar filename: The name of the file where persist data is saved
or None if no filename is available.
Nc C sl |du rt }|| _| | _i | _i | _d| _d| _| | _|| _ |dur2t
j|r4|
| dS dS dS )a
@param backend: The backend to use. If none is specified,
L{BPickleBackend} will be used.
@param filename: The default filename to save to and load from. If
specified, and the file exists, it will be immediately
loaded. Specifying this will also allow L{save} to be called
without any arguments to save the persist.
NF)r _backendnew_hardmap_softmap_weakmap _readonly _modified_configfilenameospathexistsload)selfbackendr r r r __init__? s
zPersist.__init__c C | j S N)r r r r r
_get_readonlyU zPersist._get_readonlyc C s t || _d S r$ )boolr )r flagr r r
_set_readonlyX zPersist._set_readonlyc C r# r$ r r% r r r
_get_modified[ r' zPersist._get_modifiedc C s
d| _ dS )z(Set the database status as non-modified.FNr, r% r r r reset_modifieda s
zPersist.reset_modifiedc C s | j rtddS )zRAssert if the object is writable
@raise: L{PersistReadOnlyError}
z"Configuration is in readonly mode.N)r r
r% r r r assert_writablee s zPersist.assert_writablec s fdd}t j t j s| rdS td t j dkr+| dS z
j _W dS t yH | rBY dS td w )zLoad a persisted database.c sX d } t j| r*t j| dkr*z
j| _W dS ty) td| w dS )N.oldr Broken configuration file at %sTF) r r isfilegetsizer r r Exceptionr )filepatholdfilepathr r r load_oldp s zPersist.load.
.load_oldNzFile not found: %sr r1 )
r r
expanduserr2 r r3 r r r r4 )r r7 r8 r r6 r r m s zPersist.loadc C s |du r| j du r
td| j }tj|}tj|r$t||d tj|}|r7tj|s7t | | j
|| j dS )zSave the persist to the given C{filepath}.
If None is specified, then the filename passed during construction will
be used.
If the destination file already exists, it will be renamed
to C{.old}.
NzNeed a filename!r0 )
r r r r r9 r2 renamedirnameisdirmakedirsr saver )r r7 r; r r r r> s
zPersist.savec
C s: |t ur
| j|}t|}t }|}|rG|}|d}| j||}|tu r@|r1|d t| }tdt |t
|t|f ||u rEn|s||urY||urW| j|||}|S ||u ra|}|S t|dkrvt |d t
u rsg } ni } n|} | j||| }|tu rtdt |t |f |s |S |}|d}qb)Nr zCan't traverse %r (%r): %rTzCan't traverse %r with %r)NOTHINGr copylistpopgetNotImplementedlenr typer strsetint)
r objr defaultsetvaluequeuemarkernewobjelemnewvaluer r r _traverse sX
zPersist._traverseFc C s t |tr t|}t}|r| | j||}|S |r#| | j||}|S |r/| | j||}|S | | j||}||u rO| | j||}||u rO| | j||}|S r$ )
isinstancer r r? rR r r r )r r softhardweakrN valuer r r _getvalue s$
zPersist._getvaluec C sV | ||||}t}||u rdS ||u rdS | j||}|tu r)tdt| |S )NFTzCan't check %r for containment)rX r? r hasrD r rF ) r r rW rT rU rV rJ rN resultr r r rY s zPersist.hasc C sD | ||||}|tu rg S | j|}|tu r tdt| |S )NzCan't return keys for %s)rX r? r keysrD r rF )r r rT rU rV rJ rZ r r r r[ s zPersist.keysc C s( | ||||}|tu r|S | j|S r$ )rX r? r r@ )r r rK rT rU rV rW r r r rC s zPersist.getc C sZ |sJ t |tr
t|}|r| j}n|r| j}n
| d| _| j}| j|||d d S NT)rL ) rS r r r r r/ r r rR )r r rW rT rV mapr r r rH s
zPersist.setc C s |sJ t |tr
t|}|r| j}n|r| j}n
| d| _| j}|r7| ||}t |t
u r7||v r7d S |tjf }| j|||d d S r\ )
rS r r r r r/ r r rR rF rA sysmaxsize)r r rW uniquerT rV r] currentr r r add
s
zPersist.addc C s |sJ t |tr
t|}|r| j}n|r| j}n
| d| _| j}t}|r{||u r<| ||d d }|d }d} n
| ||}|}d} d}
||urb| j
||| }
|
tu rbt
d|t|f | j
|rv||uro|}n
|d d }n |
S |s'|
S )NTFzCan't remove %r from %r)rS r r r r r/ r r r? rR r removerD r rF empty)r r rW rT rV r] rN rJ rP isvaluerZ r r r rd sD
zPersist.removec C s |s|s| t|trt|}t|trt|}d}t}| |||p%| |}||ur?| j|||d | |||| d}|S )NF)rT rV T)r/ rS r r r? rX rd rH )r oldpathnewpathrT rV rZ rN rW r r r moveB s
zPersist.movec C s
t | |S )zv
Rebase the database hierarchy.
@return: A L{RootedPersist} using this L{Persist} as parent.
)r r r r r r root_atR s
zPersist.root_at)NNr$ FFFNFFFFF)r
r r __doc__r" r&