
    z%i%                        d dl Z d dlZd dlZd dlZddlmZmZ ddlmZ ddlm	Z	 ddlm
Z
 g dZej                  dk7  rd	Zd	ZnA eed
d	      Zej                   xr) ej                   j#                         j%                  d      Zd Zd Zer- ee j*                  j-                  ej.                  d             n eej                          d Zd Zd ZddZd Zd Zd Zg Zd Z d Z!d Z"d Z#y)    N   )get_start_methodset_start_method)process)	reduction)util)_mainfreeze_supportset_executableget_executableget_preparation_dataget_command_lineimport_main_pathwin32Ffrozenzpythonservice.exec                     | | a y t        j                  dk(  rt        j                  |       a y t        j
                  |       a y )Nr   )_python_exesysplatformosfsdecodefsencode)exes    I/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/multiprocessing/spawn.pyr   r   $   s4    
{		 kk#&kk#&    c                      t         S N)r    r   r   r   r   -   s    r   z
python.exec                 4    	 t        |       dk\  r	| d   dk(  ryy)N   r   --multiprocessing-forkTF)len)argvs    r   
is_forkingr$   9   s&     4yA~$q'%==r   c                     	 t        t        j                        rgi } t        j                  dd  D ]/  }|j                  d      \  }}|dk(  rd | |<   "t	        |      | |<   1 t        di |  t        j                          y y )Nr    =Noner   )r$   r   r#   splitint
spawn_mainexit)kwdsargnamevalues       r   r
   r
   C   s|     #((88AB< 	(C))C.KD%!T
 ZT
	( 	T
 r   c                  B   	 t        t        dd      r4t        j                  dg| j                         D cg c]  }d|z  	 c}z   S d}|dj	                  d | j                         D              z  }t        j                         }t               }|g|z   d|dgz   S c c}w )	Nr   Fr!   %s=%rz<from multiprocessing.spawn import spawn_main; spawn_main(%s)z, c              3   &   K   | ]	  }d |z    yw)r1   Nr   ).0items     r   	<genexpr>z#get_command_line.<locals>.<genexpr>\   s     BT'D.Bs   z-c)getattrr   
executableitemsjoinr   _args_from_interpreter_flagsr   )r,   r4   progoptsr   s        r   r   r   S   s     sHe$!9:,0JJL9D49: 	; N		BTZZ\BBB002ut|tT+CDDD :s   Bc                    	 t         j                  dk(  rqdd l}dd l}|+|j	                  |j
                  |j                  z  d|      }nd }t        j                  | |      }|j                  |t        j                        }|}n.ddlm}	 ||	j                  _        | }t        j                   |       }t#        ||      }
t        j$                  |
       y )Nr   r   F)source_processr   )resource_tracker)r   r   msvcrt_winapiOpenProcessSYNCHRONIZEPROCESS_DUP_HANDLEr   	duplicateopen_osfhandler   O_RDONLY r?   _resource_tracker_fddupr	   r+   )pipe_handle
parent_pid
tracker_fdr@   rA   r>   
new_handlefdparent_sentinelr?   exitcodes              r   r*   r*   b   s     ||w!$00##g&@&@@z#N "N((8FH
"":r{{;(&1;**.&&-R)HHHXr   c                    t        j                  | dd      5 }dt        j                         _        	 t
        j                  j                  |      }t        |       t
        j                  j                  |      }t        j                         `	 d d d        j                  |      S # t        j                         `w xY w# 1 sw Y   3xY w)NrbT)closefd)
r   fdopenr   current_process_inheritingr   pickleloadprepare
_bootstrap)rP   rQ   from_parentpreparation_dataselfs        r   r	   r	   ~   s    	2tT	* 6k04!-	6(//44[A$%##((5D'')56 ???++ '')56 6s#   CA	B+=C+CCCc                  X    t        t        j                         dd      rt        d      y )NrX   Fa  
        An attempt has been made to start a new process before the
        current process has finished its bootstrapping phase.

        This probably means that you are not using fork to start your
        child processes 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 an executable.

        To fix this issue, refer to the "Safe importing of main module"
        section in https://docs.python.org/3/library/multiprocessing.html
        )r6   r   rW   RuntimeErrorr   r   r   _check_not_importing_mainrb      s/    w&&(-?   	 @r   c           	         	 t                t        t        j                  t	        j
                         j                        }t        j                  !t        j                  j                         |d<   t        j                  j                         }	 |j                  d      }t        j                  ||<   |j                  | |t        j                   t        j                  t#        j$                         t'                      t        j(                  d   }t+        |j,                  dd       }|||d<   |S t        j.                  dk7  st0        st2        st+        |d	d       }|t"        j                  j5                  |      s>t        j                  .t"        j                  j7                  t        j                  |      }t"        j                  j9                  |      |d
<   |S # t        $ r Y ;w xY w)N)log_to_stderrauthkey	log_levelrH   )r.   sys_pathsys_argvorig_dirdirstart_method__main__r.   init_main_from_namer   __file__init_main_from_path)rb   dictr   _log_to_stderrr   rW   re   _loggergetEffectiveLevelr   pathcopyindexORIGINAL_DIR
ValueErrorupdater#   r   getcwdr   modulesr6   __spec__r   WINEXE
WINSERVICEisabsr9   normpath)r.   drg   imain_modulemain_mod_name	main_paths          r   r   r      s    ))'')11	
A
 ||779+XX]]_H+NN2 **HH%%IIK%'  
 ++j)KK00&$?M #0
  H 
	 
KT:	 GGMM),,,8GGLL)=)=yI	')ww'7'7	'BA#$H9  s   G& &	G32G3c                 ,   	 d| v r| d   t        j                         _        d| v r| d   t        j                         _        d| v r| d   rt	        j
                          d| v r&t	        j                         j                  | d          d| v r| d   t        _	        d| v r| d   t        _
        d| v rt        j                  | d          d| v r| d   t         _        d	| v rt        | d	   d
       d| v rt        | d          y d| v rt!        | d          y y )Nr.   re   rd   rf   rg   rh   rj   ri   rk   T)forcerm   ro   )r   rW   r.   re   r   rd   
get_loggersetLevelr   rt   r#   r   chdirrw   r   _fixup_main_from_name_fixup_main_from_path)datas    r   r[   r[      s    ~)-f!&D,0O!)$4#8d""4#45T
#T
#}
eT#J/n-T:$d#89:	$	&d#89: 
'r   c                    t         j                  d   }| dk(  s| j                  d      ry t        |j                  dd       | k(  ry t
        j                  |       t        j                  d      }t        j                  | dd      }|j                  j                  |       |xt         j                  d<   t         j                  d<   y )Nrl   z	.__main__r.   __mp_main__T)run_name	alter_sys)r   r{   endswithr6   r|   old_main_modulesappendtypes
ModuleTyperunpy
run_module__dict__ry   )mod_namecurrent_mainr   main_contents       r   r   r      s    
 ;;z*L:!2!2;!? |$$fd3x?
 L)""=1K##H-:.24L -;FFCKK
ckk-8r   c                    t         j                  d   }t        j                  j	                  t        j                  j                  |             d   }|dk(  ry t        |dd       | k(  ry t        j                  |       t        j                  d      }t        j                  | d      }|j                  j                  |       |xt         j                  d<   t         j                  d<   y )Nrl   r   ipythonrn   r   )r   )r   r{   r   rt   splitextbasenamer6   r   r   r   r   r   run_pathr   ry   )r   r   	main_namer   r   s        r   r   r     s    ;;z*L   !1!1)!<=a@II |Z.);
 L)""=1K>>)+8:L-;FFCKK
ckk-8r   c                     	 t        |        y r   )r   )r   s    r   r   r   /  s     )$r   )NN)$r   r   r   r   rH   r   r   r   contextr   r   __all__r   r}   r~   r6   r7   lowerr   r   r   rt   r9   exec_prefixr$   r
   r   r*   r	   rb   r   r   r[   r   r   r   r   r   r   <module>r      s    
 
   0   K <<7FJS(E*FXCNN$8$8$:$C$CDW$XJ' 277<<>?3>>" E8	,,,d  ";LG2G8%r   