ó
^›&Zc           @   s£   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d e f d „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ	 d „  Z
 d	 „  Z d
 „  Z d S(   iÿÿÿÿNt   TerminalErrorc           B   s   e  Z d d  „ Z d „  Z RS(   c         C   sK   t  j |  ƒ x. | j d ƒ d k r: | j d d ƒ } q Pq | |  _ d  S(   Ns     iÿÿÿÿt    (   t	   Exceptiont   __init__t   findt   replacet   e(   t   selfR   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR      s    	c         C   s   d t  j |  j d ƒ S(   Ns   Progress Error: %siP   (   t   textwrapt   fillR   (   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   __str__   s    N(   t   __name__t
   __module__t   NoneR   R
   (    (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR       s   	t   Progressc           B   s\   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(	   c         C   sD   d  |  _ | |  _ d  |  _ |  j ƒ  d |  _ d |  _ d  |  _ d  S(   Ns   [0;30m[46ms   [0m(   R   t   pidt   verboset   terminal_widtht   get_terminal_widtht   color_prefixt   color_postfixt   currently_shown(   R   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR   #   s    			
		c         C   s+   y t  ƒ  d |  _ Wn d |  _ n Xd  S(   Ni    iP   (   t   get_terminal_sizeR   (   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR   /   s    c         C   s\   |  j  r" t d |  j  | f ‚ n  |  j s/ d  Sd t ƒ  | f |  _  |  j ƒ  d  |  _ d  S(   Ns`   Progress.new() can't be called before ending the previous one (Existing: '%s', Competing: '%s').s   %s %s(   R   R    R   t   get_dateR   R   R   (   R   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   new6   s    		
c         C   s‹   |  j  t | ƒ } | d k  r9 | d | d !d } n | |  _ | d | } |  j r‡ t j j |  j | |  j ƒ t j j	 ƒ  n  d  S(   Ni    i   s    (...)R   (
   R   t   lenR   R   t   syst   stderrt   writeR   R   t   flush(   R   t   ct   surpass(    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR   B   s    		c         C   s   |  j  ƒ  d  S(   N(   t   clear(   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   resetP   s    c         C   sX   |  j  s d  Sd d |  j } t j j | ƒ t j j d ƒ t j j ƒ  d  |  _ d  S(   Ns   R   (   R   R   R   R   R   R   R   R   (   R   t   null(    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR    S   s    	c         C   s+   |  j  s d  S|  j d |  j | f ƒ d  S(   Ns   %s%s(   R   R   R   (   R   t   msg(    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   append]   s    	c         C   s5   |  j  s d  S|  j ƒ  |  j d |  j | f ƒ d  S(   Ns   [%s] %s(   R   R    R   R   (   R   R#   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   updatec   s    	
c         C   s$   d  |  _ |  j s d  S|  j ƒ  d  S(   N(   R   R   R   R    (   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   endj   s    		(   R   R   t   TrueR   R   R   R   R!   R    R$   R%   R&   (    (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR   "   s   					
		t   Runc           B   s/   e  Z e d  d „ Z e e d „ Z d „  Z RS(   i-   c         C   s   i  |  _  | |  _ | |  _ d  S(   N(   t	   info_dictR   t   width(   R   R   R*   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR   r   s    		c         C   s¦   | |  j  | <| r t St | ƒ t k r8 t | ƒ } n  | r\ d | d |  j d f } n* d | d |  j t | ƒ t | ƒ f } |  j r¢ t	 j
 j | ƒ n  d  S(   Ns   
%s
%s
t   =i   s
   %s %s: %s
t   .(   R)   R'   t   typet   intt   pretty_printR*   R   t   strR   R   R   R   (   R   t   keyt   valuet   quiett   headert	   info_line(    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   infox   s    *	c         C   s   d  S(   N(    (   R   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   quitŠ   s    (   R   R   R'   R   t   FalseR6   R7   (    (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR(   q   s   c         C   sÂ   t  |  ƒ t k r |  Sg  } t |  ƒ }  x_ t t |  ƒ d d d ƒ D]A } | j |  | ƒ t |  ƒ | d d k rE | j d ƒ qE qE W| j ƒ  | d d k rµ d j | d ƒ Sd j | ƒ S(   s+   Pretty print function for very big integersi   iÿÿÿÿi   i    t   ,t    (   R-   R.   R0   t   rangeR   R$   t   reverset   join(   t   nt   rett   i(    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR/   Ž   s    #
c           C   s   t  j d t  j ƒ  ƒ S(   Ns   %d %b %y %H:%M:%S(   t   timet   strftimet	   localtime(    (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR      s    c          C   sÍ   d „  }  |  d ƒ p* |  d ƒ p* |  d ƒ } | sx y8 t  j t  j ƒ  t  j ƒ } |  | ƒ } t  j | ƒ Wqx qx Xn  | s¯ y t  j d t  j d f } Wq¯ d	 } q¯ Xn  t | d ƒ t | d ƒ f S(
   s9   function was taken from http://stackoverflow.com/a/566752c         S   s7   y( t  j d t j |  t j d ƒ ƒ } Wn d  SX| S(   Nt   hht   1234(   t   structt   unpackt   fcntlt   ioctlt   termiost
   TIOCGWINSZR   (   t   fdt   cr(    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   ioctl_GWINSZ£   s    i    i   i   t   LINESt   COLUMNSi   iP   (   i   iP   (   t   ost   opent   ctermidt   O_RDONLYt   closet   environR.   (   RN   RM   RL   (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyR   ¡   s    	$(    (    (   R   RA   RH   RF   RJ   R   R   R    R   R(   R/   R   R   (    (    (    sJ   /mnt/data/azomer/reads-for-assembly/trainingsets2/Vibrio/utils/terminal.pyt   <module>   s   O		