B
    d                 @   s   d dl mZmZmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ dd	d
ZdddZdd Zdd Zedkre  dS )    )absolute_importdivisionprint_functionN)escape_sh_double_quoted	gzip_openbz2_open)easy_run)show_string)	cStringIOrrbc          
   C   s   |dkst |dkst tj| } | dr:t| |dS | drdttjdt	|  dd
 jS | d	rzt| |dS y
t| |S  tk
r } z td
t|  d t| W d d }~X Y nX d S )N)r   r   )r   r   rtz.gz)	file_namemodez.Zzgunzip -c "%s"F)commandZstdout_splitlinesz.bz2z!Cannot open file for reading: %s
z  )AssertionErrorospath
expanduserendswithr   StringIOr   fully_bufferedr   raise_if_errorsZstdout_bufferr   openIOErrorr	   str)r   r   	gzip_modee r   p/mnt/filia/a/genomebrowser/www/genomebrowser/fleming/tools/molprobity/modules/cctbx_project/libtbx/smart_open.pyfor_reading
   s     




r    wwbc          
   C   s   |dkst |dkst tj| } | dr:t| |dS | drPt| |dS y
t| |S  tk
r } z tdt	|  d t
| W d d }~X Y nX d S )N)r!   r"   aab)r!   r"   wtr#   r$   z.gz)r   r   z.bz2z!Cannot open file for writing: %s
z  )r   r   r   r   r   r   r   r   r   r	   r   )r   r   r   r   r   r   r   for_writing   s    


r&   c             C   s<   |dkst tj| } |d dkr0t| |dS t| |dS )N)r   r   r!   r"   r#   r$   r   )r   r   )r   r   )r   r   r   r   r    r&   )r   r   r   r   r   file,   s
    r'   c              C   s   dd l } xJ| jdd  D ]8}d}|dr.d}t||d  ddd	gkstqW tdtd
dd tdtdddd td d S )Nr      r   z.gzr   )r   r   zline 1zline 2zthe endZ	tmp_plain)r   )r'   ztmp.gzr%   OK)	sysargvr   r    read
splitlinesr   printr&   )r*   r   r   r   r   r   exercise3   s    
r/   __main__)r   r   )r!   r"   )
__future__r   r   r   r   libtbx.utilsr   r   r   libtbxr   libtbx.str_utilsr	   	six.movesr
   r   r    r&   r'   r/   __name__r   r   r   r   <module>   s   

