ó
,§xTc           @   sÓ   d  d l  Z  d  d l Z d  d l Z d a d a e  j j e  j j e	 ƒ ƒ Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿNc         C   sØ   t  |  d ƒ a t j d ƒ t ƒ  a t d ƒ t d t j ƒ  ƒ t d t	 j
 d ƒ t t	 j
 ƒ d k r¤ t j d ƒ x) t	 j
 d D] } t j d	 | ƒ q† Wn  t d
 | ƒ t d t j d d ƒ ƒ t j ƒ  d  S(   Nt   ws5   # workflow log (compatible with Python ConfigParser)
t   workflowt   cwdt   progi    i   s   args:
s    %s
t
   output_dirt   CCP4t    (   t   opent   _logfilet   writet   sett   _logfile_sectionst   log_sectiont	   log_valuet   ost   getcwdt   syst   argvt   lent   getenvt   flush(   t   filenameR   t   arg(    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt	   start_log   s    	
c         C   sI   t  rE t  j d ƒ t  j |  j d ƒ j d d ƒ ƒ t  j d ƒ n  d  S(   Ns   # s   
s   
# (   R   R	   t   rstript   replace(   t   text(    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   _log_comment&   s    "c         C   s�   t  r} |  t k rR d } x$ d |  | f t k r> | d 7} q Wd |  | f }  n  t j |  ƒ t  j d |  ƒ t  j ƒ  n  d  S(   Ni   s   %s %di   s   
[%s]
(   R   R   t   addR	   R   (   t   namet   counter(    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyR   -   s    c         C   sB   t  r> t | ƒ j ƒ  j d d ƒ } t  j d |  | f ƒ n  d  S(   Ns   
s   
 s   %s: %s
(   R   t   strR   R   R	   (   t   keyt   value(    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyR   :   s    c         C   s&   t  |  t j d t j | ƒ ƒ ƒ d  S(   Ns   %Y-%m-%d %H:%M:%S(   R   t   timet   strftimet	   localtime(   R    t	   timestamp(    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   log_time@   s    c         C   s   t  j j |  ƒ d  S(   N(   R   t   stdoutR	   (   R   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   putD   s    c         C   s\   t  t j d ƒ rN t j j ƒ  rN t j d k rA t d |  ƒ qX t |  ƒ n
 t |  ƒ d  S(   Nt   isattyt   nts   [92m%s[0m(   t   hasattrR   R'   R)   R   R   R(   (   R   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt	   put_greenG   s
    !c         C   s   t  |  ƒ t |  ƒ d  S(   N(   R(   R   (   R   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   commentP   s    
c           C   sD   t  t j d ƒ r@ t j j ƒ  r@ t j d k r@ t d ƒ q@ n  d  S(   NR)   R*   s   [0m(   R+   R   R'   R)   R   R   R(   (    (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   reset_colorT   s    !c         C   s“   t  d |  ƒ t t j d ƒ rN t j j ƒ  rN t j d k rN d |  }  qN n  t j j d |  ƒ | d  k	 r� t  | ƒ t j j | d ƒ n  d  S(   Ns	   Error: %sR)   R*   s   [91m%s[0ms   Error: %s.
s   
(	   R   R+   R   t   stderrR)   R   R   R	   t   None(   t   errR-   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt	   put_errorY   s    !
c         C   sN   t  j d k r d n d } t  j j |  | ƒ } t  j j | | ƒ rJ | Sd S(   s@   If prog(.exe) is in dirname return the path (without extension).R*   s   .exeR   N(   R   R   t   patht   joint   exists(   t   dirnameR   t   exeR3   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt
   check_progd   s    c         C   sD   t  j j d ƒ s t ‚ t t |  ƒ pC t  j j t  j d d |  ƒ S(   sv   If prog/prog.exe is not in c4/ then $CCP4/bin is assumed.
    Return value: path with filename without extension.
    R   t   bin(   R   t   environt   gett   AssertionErrorR8   t   _c4_dirR3   R4   (   R   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   cbinl   s    c         C   s\   t  g t j d j t j ƒ } x' | D] } t | |  ƒ } | r' | Sq' Wt d |  ƒ d S(   s|   If prog/prog.exe is not in c4/ then search in the system $PATH.
    Return value: path with filename without extension.
    t   PATHs   Program not found: %sN(   R=   R   R:   t   splitt   pathsepR8   R2   (   R   t   dirst   dR3   (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   syspathu   s     c         C   s   t  j j |  ƒ s$ t  j j | ƒ r4 t  j j |  ƒ St  j j | ƒ t  j j | ƒ k rh t  j j |  ƒ St  j j |  | ƒ Sd  S(   N(   R   R3   t   isabst   abspatht   realpatht   relpath(   R3   t   relative_to(    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   adjust_pathƒ   s
    $$(   R   R   R"   R0   R   R   R3   RF   R6   t   __file__R=   R   R   R   R   R&   R(   R,   R-   R.   R2   R8   R>   RD   RJ   (    (    (    s6   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/c4/utils.pyt   <module>   s&   														