ó
ęxTc           @   sO   d  d l  m Z d  d l m Z d  d l Z d e f d     YZ d   Z d S(   i˙˙˙˙(   t   division(   t   AutoNt   chunk_managerc           B   sD   e  Z d    Z e e d  Z d   Z d   Z e e e d  Z RS(   c         C   sU   | d k s t   | d k s$ t   | | k  s6 t   | |  _ | |  _ d  |  _ d  S(   Ni    (   t   AssertionErrort   nt   it   Nonet   queuing_system_info(   t   OR   R   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyt   __init__   s    		c         C   s$   |  j    |  j d | d |  |  S(   Nt
   log_formatt   out(   t   queuing_system_overrides_chunkt    redirect_chunk_stdout_and_stderr(   R   R
   R   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyt   easy_all   s    
c         C   s   | |  j  |  j k S(   N(   R   R   (   R   R   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyt   skip_iteration   s    c         C   sŰ   d d l  m } m } | j   } | j   } | | g j d   d k sO t  | j   r | |  _	 | j
   \ } } t |  j |  |  _ | |  _ n@ | j   r× | |  _	 t |  j | j  |  _ | j d |  _ n  |  S(   Ni˙˙˙˙(   t	   pbs_utilst	   sge_utilsi   (   t   libtbx.queuing_system_utilsR   R   t
   chunk_infot   infot   countR   R   t
   have_arrayR   t   as_n_i_pairt   maxR   R   t   lastt   id(   R   R   R   t   pbs_infot   sge_infoR   R   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyR      s    !		c   	      C   sS  |  j  d k r d  Sd  } | sL |  j } | d  k	 rL | j   rL t } qL n  | rź | t k rg d } n  | t d t d |  j  d   } | |  j } t	 | d  } | t
 _ | t
 _ n  d d l m } | t k rä t
 j } n  | d  k	 rO|   j d |  | d	 I|  j  IJ| d
 I|  j IJ| d  k	 rH| d I| IJn  | Jn  |  S(   Ni   s	   log%%0%ddi   s   %dt   wi˙˙˙˙(   t   host_and_userR   s   chunk.n:s   chunk.i:s	   log_name:(   R   R   R   R   t   TrueR   R   t   lenR   t   opent   syst   stdoutt   stderrt   libtbx.utilsR   t   show(	   R   R
   R   R   t   log_nameR   t   fmtt   logR   (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyR   '   s4     	 	$	 (	   t   __name__t
   __module__R	   R   R   R   R   t   FalseR   (    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyR      s   			c         C   sç   d d l  m } | d k s" t  d } | d k rA d	 |  } n2 | d k rZ d
 |  } n | d k rs d |  } n  | d k	 s t  | j d |  j   j } d j |  GHx2 | D]* } d | k rľ t d j |    qľ qľ Wt	 S(   sx   
  Stop a queue job.  Supports the same platforms as 'processing' sub-module,
  but primarily used by the Phenix GUI.
  i˙˙˙˙(   t   easy_runt   sget   lsft   pbst   condort   pbsprot   slurms   qdel %ss   bkill %ss   condor_rm %st   commands   
t   denied(   R.   R/   R0   R1   R2   R3   N(   R.   R0   R2   R3   (
   t   libtbxR-   R   R   t   fully_bufferedt   raise_if_errorst   stdout_linest   joint   RuntimeErrorR   (   t   job_idt   platformR-   t   cmdt   qdel_outt   line(    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyt   qdelD   s"    	(   t
   __future__R    R6   R   R"   t   objectR   RA   (    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/queuing_system_utils/__init__.pyt   <module>   s   ?