;
Òâ"Ic               @   s  d  d l  Z  d  d l Z d  d l Z d  d l m Z m Z d d d d d d g Z d	 „  Z d  d
 l m	 Z
 Gd „  d e
 ƒ Z d „  Z Gd „  d ƒ Z e j e e ƒ  j ƒ e ƒ d „  Z e j e e j ƒ e ƒ e j e e j ƒ e ƒ y d  d l m Z Wn e k
 o Yn$ Xd „  Z d „  Z e j e e ƒ e j d k o> d  d l Z e  j Z e  j Z  e  j! Z! Gd „  d e" ƒ Z# nxd  d l$ Z$ d  d l% Z% d  d l& Z& d  d l Z d d l' m( Z( m) Z) m* Z* d d l m+ Z+ d  d l m, Z, m- Z- d d „ Z/ d Z0 e j d k o e1 e d d( ƒ Z3 e( j4 Z e( j5 Z! e j6 j7 ƒ  j8 d ƒ o e  j9 j: e j; d ƒ a< n
 e j6 a< d „  Z= d d( d „ Z  Gd  „  d e" ƒ Z# d! „  Z> d" „  Z? d# „  Z@ d$ „  ZA d% „  ZB d& „  ZC e j e) eC ƒ e j e* eC ƒ g  ZD d' „  ZE d S()   i    N(   u   utilu   processu   Popenu   assert_spawningu   exitu	   duplicateu   closeu   ForkingPicklerc             C   s.   t  j ƒ  p t d t |  ƒ j ƒ ‚ n d  S(   NuF   %s objects should only be shared between processes through inheritance(   u   Popenu   thread_is_spawningu   RuntimeErroru   typeu   __name__(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   assert_spawning   s    (   u   _Picklerc             B   s,   |  Ee  Z e j j ƒ  Z e d  „  ƒ Z d S(   c                s    ‡  f d †  } | |  j  | <d  S(   Nc                sG   ˆ  | ƒ } t  | t ƒ o |  j | | ƒ n |  j d | | Œ d  S(   Nu   obj(   u
   isinstanceu   stru   save_globalu   save_reduce(   u   selfu   obju   rv(   u   reduce(    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu
   dispatcher%   s    (   u   dispatch(   u   clsu   typeu   reduceu
   dispatcher(    (   u   reduceu4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   register#   s    N(   u   __name__u
   __module__u   Pickleru   dispatchu   copyu   classmethodu   register(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   ForkingPickler!   s   
c             C   sG   |  j  d  k o t |  j |  j j f f St |  j  |  j j f f Sd  S(   N(   u   __self__u   Noneu   getattru	   __class__u   __func__u   __name__(   u   m(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   _reduce_method-   s    c             B   s   |  Ee  Z d  „  Z d S(   c             C   s   d  S(   N(    (   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   f3   s    N(   u   __name__u
   __module__u   f(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   _C2   s   
u   _Cc             C   s   t  |  j |  j f f S(   N(   u   getattru   __objclass__u   __name__(   u   m(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   _reduce_method_descriptor8   s    (   u   partialc             C   s#   t  |  j |  j |  j p i  f f S(   N(   u   _rebuild_partialu   funcu   argsu   keywords(   u   p(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   _reduce_partialB   s    c             C   s   t  |  | | Ž S(   N(   u   partial(   u   funcu   argsu   keywords(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   _rebuild_partialD   s    u   win32c             B   sJ   |  Ee  Z d  „  Z e j d „ Z d d „ Z d „  Z e	 d „  ƒ Z
 d S(   c             C   s§   t  j j ƒ  t  j j ƒ  d  |  _ t j ƒ  |  _ |  j d k oa d t  j	 k o d d  l
 } | j ƒ  n | j ƒ  } t  j j ƒ  t  j j ƒ  t j | ƒ n d  S(   Ni    u   random(   u   sysu   stdoutu   flushu   stderru   Noneu
   returncodeu   osu   forku   pidu   modulesu   randomu   seedu
   _bootstrapu   _exit(   u   selfu   process_obju   randomu   code(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   __init__Z   s    	c             C   sƒ   |  j  d  k ol t j |  j | ƒ \ } } | |  j k o= t j | ƒ o t j | ƒ |  _  qx t j | ƒ |  _  q| n |  j  S(   N(   u
   returncodeu   Noneu   osu   waitpidu   pidu   WIFSIGNALEDu   WTERMSIGu   WEXITSTATUS(   u   selfu   flagu   pidu   sts(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   polli   s    c             C   sž   | d  k o |  j d ƒ St j ƒ  | } d } xf |  j ƒ  } | d  k	 o Pn | t j ƒ  } | d k o Pn t | d | d ƒ } t j | ƒ q4 | S(   Ni    gü©ñÒMb@?i   gš™™™™™©?(   u   Noneu   pollu   timeu   minu   sleep(   u   selfu   timeoutu   deadlineu   delayu   resu	   remaining(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   waitt   s    c             C   s|   |  j  d  k oh y t j |  j t j ƒ Wqx t k
 o; } z% |  j d d ƒ d  k o ‚  n WYd  d  } ~ Xqx Xn d  S(   Nu   timeoutgš™™™™™¹?(	   u
   returncodeu   Noneu   osu   killu   pidu   signalu   SIGTERMu   OSErroru   wait(   u   selfu   e(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu	   terminate„   s    c               C   s   d S(   NF(   u   False(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   thread_is_spawningŒ   s    N(   u   __name__u
   __module__u   __init__u   osu   WNOHANGu   pollu   Noneu   waitu	   terminateu   staticmethodu   thread_is_spawning(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   PopenX   s
   
		i   (   u   win32u
   Connectionu   PipeConnection(   u   Finalize(   u   loadu   HIGHEST_PROTOCOLc             C   s   t  | | ƒ j |  ƒ d  S(   N(   u   ForkingPickleru   dump(   u   obju   fileu   protocol(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   dump¢   s    i   u   frozenu   pythonservice.exeu
   python.exec             C   s
   |  a  d  S(   N(   u   _python_exe(   u   exe(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   set_executable¹   s    c             C   sH   | d  k o t j ƒ  } n t j t j ƒ  |  | d | t j ƒ j ƒ  S(   Ni    (   u   Noneu   _subprocessu   GetCurrentProcessu   DuplicateHandleu   DUPLICATE_SAME_ACCESSu   Detach(   u   handleu   target_processu   inheritable(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu	   duplicateÁ   s
    c             B   se   |  Ee  Z d  Z e j ƒ  Z d „  Z e d „  ƒ Z e d „  ƒ Z	 d d „ Z d „  Z d „  Z d S(   uH   
        Start a subprocess to run the code of a process object
        c          
   C   s7  t  j ƒ  \ } } t t j | ƒ d d ƒ} t  j | ƒ t ƒ  | g } d j d „  | Dƒ ƒ } t	 j
 t | d  d  d d d  d  d  ƒ	 \ } } } }	 | j ƒ  t | ƒ | |  _ d  |  _ | |  _ t | j ƒ }
 t  j | d ƒ } t | ƒ t j _ z$ t |
 | t ƒ t | | t ƒ Wd  t j ` | j ƒ  Xd  S(   Nu   inheritableu    c             s   s   |  ] } d  | Vq d S(   u   "%s"N(    (   u   .0u   x(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu	   <genexpr>Þ   s    i   i    u   wbT(   u   osu   pipeu	   duplicateu   msvcrtu   get_osfhandleu   Trueu   closeu   get_command_lineu   joinu   _subprocessu   CreateProcessu   _python_exeu   Noneu   Closeu   pidu
   returncodeu   _handleu   get_preparation_datau   _nameu   fdopenu   intu   Popenu   _tlsu   process_handleu   dumpu   HIGHEST_PROTOCOL(   u   selfu   process_obju   rfdu   wfdu   rhandleu   cmdu   hpu   htu   pidu   tidu	   prep_datau   to_child(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   __init__Ô   s(    -

				c               C   s   t  t j d d  ƒ d  k	 S(   Nu   process_handle(   u   getattru   Popenu   _tlsu   None(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   thread_is_spawningõ   s    c             C   s   t  |  t j j ƒ S(   N(   u	   duplicateu   Popenu   _tlsu   process_handle(   u   handle(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   duplicate_for_childù   s    c             C   s·   |  j  d  k o  | d  k o t j } n t d t | d d ƒ ƒ } t j t |  j ƒ | ƒ } | t j k o: t j	 |  j ƒ } | t
 k o t j } n | |  _  q° n |  j  S(   Ni    iè  g      à?(   u
   returncodeu   Noneu   _subprocessu   INFINITEu   maxu   intu   WaitForSingleObjectu   _handleu   WAIT_OBJECT_0u   GetExitCodeProcessu	   TERMINATEu   signalu   SIGTERM(   u   selfu   timeoutu   msecsu   resu   code(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   waitý   s    c             C   s   |  j  d d ƒ S(   Nu   timeouti    (   u   wait(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   poll  s    c          	   C   sl   |  j  d  k oX y t j t |  j ƒ t ƒ Wqh t k
 o( |  j d d ƒ d  k o ‚  n Yqh Xn d  S(   Nu   timeoutgš™™™™™¹?(	   u
   returncodeu   Noneu   _subprocessu   TerminateProcessu   intu   _handleu	   TERMINATEu   WindowsErroru   wait(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu	   terminate  s    N(   u   __name__u
   __module__u   __doc__u   _threadu   _localu   _tlsu   __init__u   staticmethodu   thread_is_spawningu   duplicate_for_childu   Noneu   waitu   pollu	   terminate(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   PopenÎ   s   
	!	c             C   s1   t  |  ƒ d k o |  d d k o d Sd Sd S(   uE   
        Return whether commandline indicates we are forking
        i   i   u   --multiprocessing-forkNTF(   u   lenu   Trueu   False(   u   argv(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu
   is_forking  s    $c               C   s)   t  t j ƒ o t ƒ  t j ƒ  n d S(   uM   
        Run code for process object if this in not the main process
        N(   u
   is_forkingu   sysu   argvu   mainu   exit(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   freeze_support'  s    c              C   sq   t  j ƒ  j d k o  t t j ƒ o t d ƒ ‚ n t t d d ƒ o t j	 d g Sd }  t
 d |  d g Sd S(	   uR   
        Returns prefix of command line used for spawning a child process
        u÷  
            Attempt to start a new process before the current process
            has finished its bootstrapping phase.

            This probably means that you are on Windows and you have
            forgotten to use the proper idiom in the main module:

                if __name__ == '__main__':
                    freeze_support()
                    ...

            The "freeze_support()" line can be omitted if the program
            is not going to be frozen to produce a Windows executable.u   frozenu   --multiprocessing-forku0   from multiprocessing.forking import main; main()u   -cN(    F(   u   processu   current_processu	   _identityu
   is_forkingu   sysu   argvu   RuntimeErroru   getattru   Falseu
   executableu   _python_exe(   u   prog(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   get_command_line0  s    &c              C   sž   t  t j d ƒ }  t j |  t j ƒ } t j | d ƒ } d t	 j
 ƒ  _ t | ƒ } t | ƒ t | ƒ } d t	 j
 ƒ  _ | j ƒ  | j ƒ  } t | ƒ d S(   u>   
        Run code specifed by data received over pipe
        iÿÿÿÿu   rbNTF(   u   intu   sysu   argvu   msvcrtu   open_osfhandleu   osu   O_RDONLYu   fdopenu   Trueu   processu   current_processu   _inheritingu   loadu   prepareu   Falseu   closeu
   _bootstrapu   exit(   u   handleu   fdu   from_parentu   preparation_datau   selfu   exitcode(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   mainJ  s    

c             C   s2  d d l  m } m } t d |  d t j d t j d | d t j d t j	 ƒ  j
 ƒ } | d k	 o | j ƒ  | d	 <n t p± t t j d
 d d ƒ } | o% t j d d k o t j d } n | d k	 oZ t j j | ƒ o, t j d k	 o t j j t j | ƒ } n t j j | ƒ | d <q.n | S(   uU   
        Return info about parent needed by child to unpickle process object
        i   (   u   _loggeru   _log_to_stderru   nameu   sys_pathu   sys_argvu   log_to_stderru   orig_diru   authkeyu	   log_levelu   __main__u   __file__i    u    u   -cu	   main_pathN(   u    u   -c(   u   utilu   _loggeru   _log_to_stderru   dictu   sysu   pathu   argvu   processu   ORIGINAL_DIRu   current_processu   authkeyu   Noneu   getEffectiveLevelu   WINEXEu   getattru   modulesu   osu   isabsu   joinu   normpath(   u   nameu   _loggeru   _log_to_stderru   du	   main_path(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   get_preparation_data`  s(    			c             C   sX   t  j ƒ  p t d t |  ƒ j ƒ ‚ n t |  ƒ t  j |  j ƒ  ƒ |  j |  j f f S(   NuL   By default %s objects can only be shared between processes
using inheritance(	   u   Popenu   thread_is_spawningu   RuntimeErroru   typeu   __name__u   duplicate_for_childu   filenou   readableu   writable(   u   conn(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   reduce_connection‚  s    c       
      C   sÞ  t  j t j d ƒ d |  k o |  d t j ƒ  _ n d |  k o |  d t j ƒ  _ n d |  k o |  d o t j	 ƒ  n d |  k o t j
 ƒ  j |  d ƒ n d |  k o |  d t _ n d |  k o |  d t _ n d |  k o t j |  d ƒ n d	 |  k o |  d	 t _ n d
 |  k o§|  d
 } t j j t j j | ƒ ƒ d } | d k o" t j j t j j | ƒ ƒ } n | d k o;d d l } | d k o
 d } nW t j j | ƒ j d ƒ o% t j j t j j | ƒ ƒ g } n t j j | ƒ g } | j | | ƒ \ } } } z | j d | | | ƒ } Wd | o | j ƒ  n X| t j d <d | _ xY t | j j ƒ  ƒ D]> }	 y! |	 j d k o d |	 _ n Wqt k
 o YqXqWqÚn d S(   uE   
    Try to get current process ready to unpickle process object
    u   __main__u   nameu   authkeyu   log_to_stderru	   log_levelu   sys_pathu   sys_argvu   diru   orig_diru	   main_pathi    u   __init__u   ipythonNu   __init__.pyu   __parents_main__(    u   old_main_modulesu   appendu   sysu   modulesu   processu   current_processu   nameu   _authkeyu   utilu   log_to_stderru
   get_loggeru   setLevelu   pathu   argvu   osu   chdiru   ORIGINAL_DIRu   splitextu   basenameu   dirnameu   impu   Noneu
   startswithu   find_moduleu   load_moduleu   closeu   __name__u   listu   __dict__u   valuesu
   __module__u	   Exception(
   u   datau	   main_pathu	   main_nameu   impu   dirsu   fileu	   path_nameu   etcu   main_moduleu   obj(    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   prepare”  sX    
""
%	 F(F   u   osu   sysu   signalu   multiprocessingu   utilu   processu   __all__u   assert_spawningu   pickleu   _Pickleru   Pickleru   ForkingPickleru   _reduce_methodu   _Cu   registeru   typeu   fu   _reduce_method_descriptoru   listu   appendu   intu   __add__u	   functoolsu   partialu   ImportErroru   _reduce_partialu   _rebuild_partialu   platformu   timeu   _exitu   exitu   dupu	   duplicateu   closeu   objectu   Popenu   _threadu   msvcrtu   _subprocessu   _multiprocessingu   win32u
   Connectionu   PipeConnectionu   Finalizeu   loadu   HIGHEST_PROTOCOLu   Noneu   dumpu	   TERMINATEu   getattru   Falseu   WINEXEu   ExitProcessu   CloseHandleu
   executableu   loweru   endswithu   pathu   joinu   exec_prefixu   _python_exeu   set_executableu
   is_forkingu   freeze_supportu   get_command_lineu   mainu   get_preparation_datau   reduce_connectionu   old_main_modulesu   prepare(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/forking.pyu   <module>	   sl   								="				N						"		