%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python2.7/site-packages/salt/utils/
Upload File :
Create Path :
Current File : //lib/python2.7/site-packages/salt/utils/atomicfile.pyc

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlZeZejdkrXd�Zd�ZyddlZdZd	ZejjjZd
�ZejjjZejjjZ ejjj!Z"ejjj#Z$e%Zd�ZWne&k
rKnXd�Z'nej(Z'e%Zd
e)fd��YZ*dd�Z+dS(uY
A module written originally by Armin Ronacher to manage file transfers in an
atomic way
i(tabsolute_importtprint_functiontunicode_literalsN(tsixuntcC@stS(N(tFalse(tsrctdst((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt<lambda>scC@stS(N(R(RR((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyRsiicC@s�t|tj�s-tj|tj��}nt|tj�sZtj|tj��}nt||�rmtSd}t}xM|r�|dkr�t||t	t
B�}|s|tjd�|d7}q|q|W|S(Niidg����MbP?i(
t
isinstanceRt	text_typetsystgetfilesystemencodingt_rename_atomictTrueRt_MoveFileExt_MOVEFILE_REPLACE_EXISTINGt_MOVEFILE_WRITE_THROUGHttimetsleep(RRtretrytrval((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt_rename"s

cC@s�tddddddd�}|dkr.tSzzd}t}xc|r�|dkr�t||ddttB|�}|r�t|�}Pq@tjd�|d7}q@W|SWdt	|�XdS(Nii�u
Atomic renamei����idg����MbP?i(
t_CreateTransactiontNoneRt_MoveFileTransactedRRt_CommitTransactionRRt_CloseHandle(RRttraRR((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyR<s"

cC@s�t||�rdSytj||�Wn�tk
r�}|jtjkrQ�ndj|tjdt	j
��}tj||�tj||�ytj|�Wq�tk
r�q�XnXdS(Nu{0}-{1:08x}i(
RtostrenametOSErrorterrnotEEXISTtformattrandomtrandintR
tmaxinttunlinkt	Exception(RRterrtold((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt
atomic_renameSs!
t_AtomicWFilecB@sDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(u/
    Helper class for :func:`atomic_open`.
    cC@s||_||_||_dS(N(t_fht
_tmp_filenamet	_filename(tselftfhanlettmp_filenametfilename((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt__init__ms		cC@st|j|�S(N(tgetattrR+(R.tattr((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt__getattr__rscC@s|S(N((R.((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt	__enter__uscC@s�|jjrdS|jj�tjj|j�r�tjj	j
rftjj	jd|jd|j�q�t
j|j|j�tj|j�}tj|j|j|j�nt|j|j�dS(Ntsourcettarget(R+tclosedtcloseRtpathtisfileR-tsalttutilstwin_daclt	HAS_WIN32t
copy_securityR,tshutiltcopymodetstattchowntst_uidtst_gidR)(R.tst((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyR:xs
cC@sR|dkr|j�n5|jj�ytj|j�Wntk
rMnXdS(N(RR:R+RtremoveR,R(R.texc_typet	exc_valuet	traceback((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt__exit__�s


cC@s7dj|jj|jjr!dp$d|j|jj�S(Nu<{0} {1}{2}, mode {3}>uclosed u(R!t	__class__t__name__R+R9R-tmode(R.((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt__repr__�s
	(	ROt
__module__t__doc__R2R5R6R:RMRQ(((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyR*is					
uwcC@s�|dkrtd��nidd	6tjj|�d
6td6}tjrdd|krdd
|d<ntj||�}t	||j
|�S(u�
    Works like a regular `open()` but writes updates into a temporary
    file instead of the given file and moves it over when the file is
    closed.  The file returned behaves as if it was a regular Python
    ururbur+urb+uauabu0Read or append modes don't work with atomic_openu.___atomic_writeuprefixudirudeleteubuunewline(ururbur+urb+uauab(t	TypeErrorRR;tdirnameRRtPY3ttempfiletNamedTemporaryFileR*tname(R1RPtkwargstntf((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pytatomic_open�s

(,RSt
__future__RRRRRWR
RRR"RBtsalt.extRtsalt.utils.win_daclR=RtCAN_RENAME_OPEN_FILERYRRtctypesRRtwindlltkernel32tMoveFileExWRtktmw32tCreateTransactionRtCommitTransactionRtMoveFileTransactedWRtCloseHandleRR
R&R)RtobjectR*R\(((s9/usr/lib/python2.7/site-packages/salt/utils/atomicfile.pyt<module>sB			

	0

Zerion Mini Shell 1.0