
    3ij                        d Z ddlmZ ddlZddlZddlZddlmZ erddlZddl	m
Z
 ddlmZ ej                  j                  e      ZddZdZ G d	 d
      Zej(                  j+                  d e              y)z?Patches that are applied at runtime to the virtual environment.    )annotationsN)TYPE_CHECKING)Callable)
ModuleSpecc                `    | j                   j                  dfd}|| j                   _        y)a  Distutils allows user to configure some arguments via a configuration file: https://docs.python.org/3/install/index.html#distutils-configuration-files.

    Some of this arguments though don't make sense in context of the virtual environment files, let's fix them up.

    c                     | g|i |}| j                  d      }d|v r6t        t        j                  j	                  t
        j                        f|d<   dD ]  }d| }||v s|j                  |d          |S )Ninstallprefix)purelibplatlibheadersscriptsdatainstall_)get_option_dictVIRTUALENV_PATCH_FILEospathabspathsysr
   pop)selfargskwargsresultr	   basekeyold_parse_config_filess          _/var/www/opsc/venv/lib/python3.12/site-packages/virtualenv/create/via_global_ref/_virtualenv.pyparse_config_filesz&patch_dist.<locals>.parse_config_files   s    '>t>v>&&y1w 5rwwszz7R RGHH 	'DTF#Cg~C&	'     N)r   objectr   r"   returnr"   )Distributionr    )distr    r   s     @r   
patch_distr&      s,     "..AA
 ,>D(r!   )zdistutils.distzsetuptools.distc                  F    e Zd ZdZdZg ZdddZedd       Zed	d       Z	y)
_FinderzGA meta path finder that allows patching the imported distutils modules.Nc           	        	 t         }||v r| j                  	t        | j                        dk(  r/dd l}|j                         }| j                  j                  |       ddlm	} ddl
m} | j                  d   5  || _        	  |||      }	|	t        |	j                  d      }
|
rdnd}t        |	j                  |      }|
r| j                  n| j                   }||ur	 t#        |	j                  | |||             |	d | _        cd d d        S 	 d | _        	 d d d        y y # t        $ r Y y w xY w# t$        $ r Y ?w xY w# d | _        w xY w# 1 sw Y   y xY w)Nr   )partial)	find_specexec_moduleload_module)_DISTUTILS_PATCH	NameErrorfullnamelenlock	threadingLockappend	functoolsr*   importlib.utilr+   hasattrloadergetattrr,   r-   setattrAttributeError)r   r0   r   targetdistutils_patchr3   r2   r*   r+   spec
is_new_api	func_nameoldfuncs                 r   r+   z_Finder.find_spec:   sR   	.O &4==+@499~"  ~~' 		  &)01 ) ()$Xt4D'%,T[[-%H
5?M]	%dkk9=3=t//4CSCSd?% 'Yc@R S  $$(DM#) ) ( %)DM#)$ I  		> $2 % $% %)DM#)$ s`   D$ <EAE!D3?E EE$	D0/D03	D?<E>D??E	EEEc                     | |       	 t         }|j                  |v r.t        j                  t              5  t        |       d d d        y y # t        $ r Y y w xY w# 1 sw Y   y xY wNr.   r/   __name__
contextlibsuppressr&   )rB   moduler>   s      r   r,   z_Finder.exec_modulef   sj    F	.O ??o-$$Y/ #6"# # .  		# #s   A A	AAA%c                     | |      }	 t         }|j                  |v r/t        j                  t              5  t        |       d d d        |S |S # t        $ r |cY S w xY w# 1 sw Y   |S xY wrE   rF   )rB   namerJ   r>   s       r   r-   z_Finder.load_moduler   sm    T	.O ??o-$$Y/ #6"#v  	M	#s   A A AA A*rE   )r0   strr   r"   r=   r"   r#   zModuleSpec | None)rB   zCallable[..., object]rJ   types.ModuleTyper#   None)rB   zCallable[..., types.ModuleType]rL   rM   r#   rN   )
rG   
__module____qualname____doc__r0   r2   r+   staticmethodr,   r-    r!   r   r(   r(   0   s?    QH
 D*X 	# 	# 
 
r!   r(   )r%   rN   r#   rO   )rR   
__future__r   rH   r   r   typingr   typescollections.abcr   importlib.machineryr   r   r   __file__r   r&   r.   r(   	meta_pathinsertrT   r!   r   <module>r]      sh    E "  	 
  (.1 >4 7 M M`   Q	 "r!   