
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
\¼meÉ	  ã               @   s†   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ dZej	e
ƒZdd„ Zdd„ Zedd	fd
d„Zdd„ Zdd„ Zefdd„ZdS )é    N)Ú	b64decodeÚ	b64encodei¤  c             C   s,   t | ƒ}y
|jdƒS  tk
r&   |S X d S )Nzutf-8)r   ÚdecodeÚUnicodeDecodeError)ÚsourceZdecoded© r   ú#/usr/lib/python3.6/atomic_helper.pyÚb64d   s
    
r	   c             C   s"   t | tƒs| jdƒ} t| ƒjdƒS )Nzutf-8)Ú
isinstanceÚbytesÚencoder   r   )r   r   r   r   Úb64e   s    

r   ÚwbFc             C   sÜ   |r4yt j| ƒ}tj|jƒ}W n tk
r2   Y nX d }ydtjt jj| ƒd|d�}t	j
d| |j||t|ƒƒ |j|ƒ |jƒ  t j|j|ƒ t j|j| ƒ W n: tk
rÖ } z|d k	rÂt j|jƒ |‚W Y d d }~X nX d S )NF)ÚdirÚdeleteÚmodezOAtomically writing to file %s (via temporary file %s) - %s: [%o] %d bytes/chars)ÚosÚstatÚS_IMODEÚst_modeÚOSErrorÚtempfileZNamedTemporaryFileÚpathÚdirnameÚLOGÚdebugÚnameÚlenÚwriteÚcloseÚchmodÚrenameÚ	ExceptionÚunlink)ÚfilenameZcontentr   ÚomodeZpreserve_modeZ	file_statZtfÚer   r   r   Ú
write_file    s2    


r'   c             C   s2   ydj t| ƒƒS  tk
r,   dj t| ƒƒS X dS )z1Handler for types which aren't json serializable.z
ci-b64:{0}z)Warning: redacted unserializable type {0}N)Úformatr   ÚAttributeErrorÚtype)Z_objr   r   r   Újson_serialize_defaultD   s    r+   c             C   s   t j| dddtd�S )z%Return data in nicely formatted json.é   Tú,ú: )ÚindentZ	sort_keysZ
separatorsÚdefault)r-   r.   )ÚjsonÚdumpsr+   )Údatar   r   r   Ú
json_dumpsL   s    r4   c             C   s   t | t|ƒd d|d�S )NÚ
Úw)r%   r   )r'   r4   )r$   r3   r   r   r   r   Ú
write_jsonW   s
    
r7   )r1   Zloggingr   r   r   Úbase64r   r   Z
_DEF_PERMSZ	getLoggerÚ__name__r   r	   r   r'   r+   r4   r7   r   r   r   r   Ú<module>   s   

	#