ϪfdZddlZddlZddlZddlmZmZddlmZddl m Z m Z GddeZ ee Gdd Z e ZGd d ejZd Zd ZdZgdZy)z` Save and load Small OBjects to and from files, using various formats. Maintainer: Moshe Zadka N) Interface implementer)styles)logruntimeceZdZdZdZddZy) IPersistablez9An object which can be saved in several formats to a filecyzWSet desired format. @type style: string (one of 'pickle' or 'source') Nstyles 7/usr/lib/python3/dist-packages/twisted/persisted/sob.pysetStylezIPersistable.setStyleNcy)xSave object to file. @type tag: string @type filename: string @type passphrase: string Nr )tagfilename passphrases rsavezIPersistable.save!rrNNN)__name__ __module__ __qualname____doc__rrr rrr r sC  rr c6eZdZdZdZdZdZdZdZd dZ y) Persistentpicklec ||_||_yN)originalname)selfr#r$s r__init__zPersistent.__init__.s   rc||_yr r )r%rs rrzPersistent.setStyle2s  rc|r |}|dz}||fS|r,|jd|d|}|jd|d|}||fS|jd|}|jd|}||fS)Nz-2-z-2..)r$)r%rextr finalnames r _getFilenamezPersistent._getFilename9s  I 4'H("" ))AcU#cU3H99+Qse1SE2I(""))Cu-H99+Qse,I(""rclt|d5}||j|dddy#1swYyxYw)Nwb)openr#)r%rdumpFuncfs r _saveTempzPersistent._saveTempEs1 (D ! 'Q T]]A & ' ' 's*3cL|jdk(r ddlm}d}||fSdd}d}||fS)Nsourcer) jellyToSourcetasc2tj||dy)N)r dump)objfiles rr1z&Persistent._getStyle..dumpFuncPs Cq)rtapr")rtwisted.persisted.aotr6)r%r1r+s r _getStylezPersistent._getStyleIs8 :: ! GCH}  *CH}rNc|j\}}| td|j|||\}}tjd|j zdz|zdz|j ||tjdk(r4tjj|rtj|tj||tjdy)rNzpassphrase must be NonezSaving z application to z...win32zSaved.)r? TypeErrorr-rmsgr$r3r platformTypeospathisfileremoverename)r%rrrr+r1r,s rrzPersistent.saveVs( X  !56 6"//#sC 8  DII%(::YFNO x*   7 *rww~~i/H IIi  (I& rr) rrrrr&rr-r3r?rr rrrr*s% E #' rrceZdZdZdZdZy)_EverythingEphemeralrc||_y)zS @param mainMod: The '__main__' module that this class will proxy. N)mainMod)r%rMs rr&z_EverythingEphemeral.__init__ps  rc t|j|S#t$r<|jrt j d|zt jcYSwxYw)Nz#Warning! Loading from __main__: %s)getattrrMAttributeErrorinitRunrrCr Ephemeral)r%keys r __getattr__z _EverythingEphemeral.__getattr__vsR *4<<- - *||=CD''))  *sAAAN)rrrrQr&rTr rrrKrKmsG *rrKcd}|dk(rddlm}ntjd}}t ||}t t jd}|t jd<d|_|5 ||}|jt jd< dddtjd|_td}||j||S#|jt jd<wxYw#1swYgxYw) 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') rr5r)unjellyFromSourcerb__main__N)r>rWr loadr0rKsysmodulesrQrMr doUpgrader r)rrmode_loadfpeevalue persistables rr[r[s D Dkk4t h B ckk*5 6B CKK BJ 1 1"IE')jjCKK # 1 BJud+KU# L')jjCKK # 11s$%C3'C/C3C00C33C<ct|5}|j}dddd|i}t|d}t|||||}|S#1swY.xYw)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)r0readcompileeval)rvariablefileObjdatadcodeObjrcs rloadValueFromFilerps_ h7||~ XAdHf-G!Q hKE L s A  Ac`tjj|d}dddddddd|S)NrZpythonr r5)z.tacz.etacz.pyz.tapz.etapz.tasz.etas)rErFsplitext)rr+s r guessTypertsD ''  8 $Q 'C    r)rpr[r Persistantr rt)rrEr r\zope.interfacerrtwisted.persistedrtwisted.pythonrrr rrurRrKr[rprt__all__r rrrzsy  1$' 9 & \;;;~ *6++*(B$   r