ó
§xxTc           @   s2  d  d d g Z  d d l Z d d l Z d d l Z d d l Z y e j j e j    Z Wn e	 k
 rt d Z n Xd   Z d   Z d   Z d  e f d     YZ d	 e f d
     YZ d e f d     YZ e   a [ i  Z xG e j j   D]6 \ Z Z e d  d k rō d e k rō e e e <qō qō Wd S(   t   Processt   current_processt   active_childreni’’’’Nc           C   s   t  S(   s@   
    Return process object representing the current process
    (   t   _current_process(    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR   ;   s    c           C   s   t    t t j  S(   sN   
    Return list of process objects corresponding to live child processes
    (   t   _cleanupt   listR   t	   _children(    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR   A   s    c          C   sF   x? t  t j  D]. }  |  j j   d  k	 r t j j |   q q Wd  S(   N(   R   R   R   t   _popent   pollt   Nonet   discard(   t   p(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR   L   s    c           B   sõ   e  Z d  Z d Z d d d d i  d  Z d   Z d   Z d   Z d d  Z	 d   Z
 e d    Z e j d    Z e d	    Z e j d
    Z e d    Z e j d    Z e d    Z e d    Z e Z d   Z d   Z RS(   s   
    Process objects represent activity that is run in a separate process

    The class is analagous to `threading.Thread`
    c         C   sæ   t  j j   } t  j | f |  _ t  j |  _ t  j |  _ t  j |  _ t j   |  _	 d  |  _ | |  _ t |  |  _ t |  |  _ | pµ t |   j d d j d   |  j D  |  _ d  S(   Nt   -t   :c         s   s   |  ] } t  |  Vq d  S(   N(   t   str(   t   .0t   i(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pys	   <genexpr>k   s    (   R   t   _countert   nextt	   _identityt   _authkeyt	   _daemonict   _tempdirt   ost   getpidt   _parent_pidR	   R   t   _targett   tuplet   _argst   dictt   _kwargst   typet   __name__t   joint   _name(   t   selft   groupt   targett   namet   argst   kwargst   count(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   __init__^   s    		c         C   s&   |  j  r" |  j  |  j |  j   n  d S(   sQ   
        Method to be run in sub-process; can be overridden in sub-class
        N(   R   R   R   (   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   runm   s    	c         C   sU   t    |  j d k	 r" |  j } n d d l m } | |   |  _ t j j |   d S(   s%   
        Start child process
        i   (   t   PopenN(	   R   t   _PopenR	   t   forkingR,   R   R   R   t   add(   R#   R,   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   startt   s    	c         C   s   |  j  j   d S(   sT   
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N(   R   t	   terminate(   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR1      s    c         C   s5   |  j  j |  } | d k	 r1 t j j |   n  d S(   s5   
        Wait until child process terminates
        N(   R   t   waitR	   R   R   R
   (   R#   t   timeoutt   res(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR!      s    c         C   s@   |  t  k r t S|  j d k r# t S|  j j   |  j j d k S(   s1   
        Return whether process is alive
        N(   R   t   TrueR   R	   t   FalseR   t
   returncode(   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   is_alive   s    c         C   s   |  j  S(   N(   R"   (   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR&   ”   s    c         C   s   | |  _  d  S(   N(   R"   (   R#   R&   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR&   „   s    c         C   s   |  j  S(   s4   
        Return whether process is a daemon
        (   R   (   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   daemonŖ   s    c         C   s   | |  _  d S(   s1   
        Set whether process is a daemon
        N(   R   (   R#   t   daemonic(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR9   ±   s    c         C   s   |  j  S(   N(   R   (   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   authkey¹   s    c         C   s   t  |  |  _ d S(   s2   
        Set authorization key of process
        N(   t   AuthenticationStringR   (   R#   R;   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR;   ½   s    c         C   s#   |  j  d k r |  j  S|  j  j   S(   sM   
        Return exit code of process or `None` if it has yet to stop
        N(   R   R	   R   (   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   exitcodeÄ   s    c         C   s-   |  t  k r t j   S|  j o( |  j j Sd S(   sU   
        Return identifier (PID) of process or `None` if it has yet to start
        N(   R   R   R   R   t   pid(   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   identĶ   s    
c         C   sį   |  t  k r d } n] |  j t j   k r3 d } n? |  j d  k rK d } n' |  j j   d  k	 rl |  j } n d } t |  t	 k r² | d k r d } q² d t
 j | |  } n  d t |   j |  j | |  j rŁ d pÜ d	 f S(
   Nt   startedt   unknownt   initiali    t   stoppeds   stopped[%s]s   <%s(%s, %s%s)>s    daemont    (   R   R   R   R   R   R	   R   R=   R   t   intt   _exitcode_to_namet   getR    R"   R   (   R#   t   status(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   __repr__Ł   s    				c         C   s  d d l  m } y« t   |  _ t j d  |  _ y# t j j	   t
 t j  t _ Wn t t f k
 rm n X|  a | j j   | j   | j d  z |  j   d } Wd  | j   XWnÅ t k
 r<} | j sß d } qt | j d t  r| j d } qt j j t | j d  d  t j j   d } nG d } d d  l } t j j d |  j  t j j   | j    n X| j d |  | S(	   Ni   (   t   utils    child process calling self.run()i    s   
i’’’’s   Process %s:
s    process exiting with exitcode %d(!   RD   RJ   t   setR   t	   itertoolsR)   R   t   syst   stdint   closet   openR   t   devnullt   OSErrort
   ValueErrorR   t   _finalizer_registryt   cleart   _run_after_forkerst   infoR+   t   _exit_functiont
   SystemExitR'   t
   isinstanceRE   t   stderrt   writeR   t   flusht	   tracebackR&   t	   print_exc(   R#   RJ   R=   t   eR^   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt
   _bootstrapń   sB    


		!	N(    (   R    t
   __module__t   __doc__R	   R-   R*   R+   R0   R1   R!   R8   t   propertyR&   t   setterR9   R;   R=   R?   R>   RI   Ra   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR    V   s&   			
		
	R<   c           B   s   e  Z d    Z RS(   c         C   s>   d d l  m } | j   s+ t d   n  t t |   f f S(   Ni   (   R,   sJ   Pickling an AuthenticationString object is disallowed for security reasons(   R.   R,   t   thread_is_spawningt	   TypeErrorR<   t   bytes(   R#   R,   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt
   __reduce__  s
    (   R    Rb   Ri   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR<     s   t   _MainProcessc           B   s   e  Z d    Z RS(   c         C   sp   d |  _  t |  _ d |  _ d  |  _ d  |  _ t j d  |  _	 t
   |  _ t t j d   |  _ d  |  _ d  S(   Nt   MainProcessi   i    (    (   R   R6   R   R"   R	   R   R   RL   R)   R   RK   R   R<   R   t   urandomR   R   (   R#   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyR*   -  s    					(   R    Rb   R*   (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyRj   +  s   i   t   SIGt   _(   t   __all__R   RM   t   signalRL   t   patht   abspatht   getcwdt   ORIGINAL_DIRRR   R	   R   R   R   t   objectR    Rh   R<   Rj   R   RF   t   __dict__t   itemsR&   t   signum(    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/multiprocessing/process.pyt   <module>#   s(   
			
Ē	