o b@sdZddlZddlZddlZddlmZmZddlmZddl m Z m Z GdddeZ ee Gdd d Z e ZGd d d ejZd d ZddZddZgdZdS)z` Save and load Small OBjects to and from files, using various formats. Maintainer: Moshe Zadka N) Interface implementer)styles)logruntimec@s"eZdZdZddZdddZdS) IPersistablez9An object which can be saved in several formats to a filecCdSzWSet desired format. @type style: string (one of 'pickle' or 'source') Nstyler r 7/usr/lib/python3/dist-packages/twisted/persisted/sob.pysetStylezIPersistable.setStyleNcCr)xSave object to file. @type tag: string @type filename: string @type passphrase: string Nr )tagfilename passphraser r r save!rzIPersistable.saveNNN)__name__ __module__ __qualname____doc__rrr r r r rsrc@sBeZdZdZddZddZddZdd Zd d Zdd dZ d S) PersistentpicklecCs||_||_dSN)originalname)selfrrr r r __init__/s zPersistent.__init__cC ||_dSr r )rr r r r r3s zPersistent.setStylecCsx|r |}|d}||fS|r(|jd|d|}|jd|d|}||fS|jd|}|jd|}||fS)Nz-2-z-2..)r)rrextr finalnamer r r _getFilename:szPersistent._getFilenamecCs<t|d}||j|WddS1swYdS)Nwb)openr)rrdumpFuncfr r r _saveTempFs "zPersistent._saveTempcCs8|jdkrddlm}d}||fSddd}d}||fS) Nsourcer) jellyToSourcetascSst||ddS)N)rdump)objfiler r r r)Qsz&Persistent._getStyle..dumpFunctapr)r twisted.persisted.aotr-)rr)r$r r r _getStyleJs   zPersistent._getStyleNcCs|\}}|durtd||||\}}td|jd|d|||tjdkr;t j |r;t |t ||tddS)rNzpassphrase must be NonezSaving z application to z...win32zSaved.)r5 TypeErrorr&rmsgrr+r platformTypeospathisfileremoverename)rrrrr$r)r%r r r rWs    zPersistent.saver) rrrr r rr&r+r5rr r r r r*s  rc@s eZdZdZddZddZdS)_EverythingEphemeralrcCr!)zS @param mainMod: The '__main__' module that this class will proxy. N)mainMod)rr@r r r r rs z_EverythingEphemeral.__init__cCs@zt|j|WSty|jrtd|tYSw)Nz#Warning! Loading from __main__: %s)getattrr@AttributeErrorinitRunrr8r Ephemeral)rkeyr r r __getattr__xs  z _EverythingEphemeral.__getattr__N)rrrrCr rFr r r r r?ns r?c Csd}|dkr ddlm}ntjd}}t||}ttjd}|tjd<d|_|z ||}W|j tjd<n|j tjd<wWdn1sHwYt d|_t |d}|durb| ||S) zLoad an object from a file. Deserialize an object from a file. The file can be encrypted. @param filename: string @param style: string (one of 'pickle' or 'source') rr,r)unjellyFromSourcerb__main__N)r4rHrloadr(r?sysmodulesrCr@r doUpgraderr)rr mode_loadfpeevalue persistabler r r rLs&      rLcCs\t| }|}Wdn1swYd|i}t||d}t|||||}|S)zLoad the value of a variable in a Python file. Run the contents of the file in a namespace and return the result of the variable named C{variable}. @param filename: string @param variable: string N__file__exec)r(readcompileeval)rvariablefileObjdatadcodeObjrTr r r loadValueFromFiles   r`cCs(tj|d}dddddddd|S)NrKpythonrr,)z.tacz.etacz.pyz.tapz.etapz.tasz.etas)r:r;splitext)rr$r r r guessTypesrc)r`rLr Persistantrrc)rr:rrMzope.interfacerrtwisted.persistedrtwisted.pythonrrrrrdrDr?rLr`rc__all__r r r r s  @!