o {nh@sdZddlZddlZejeZddZdZej dkr?ddl m Z ddl m Z dd lmZGd d d e ZejdedSdd lmZdd lmZmZGdddeeZGdddeeZejedS)z>Patches that are applied at runtime to the virtual environmentNcs |jjfdd}||j_dS)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. csj|g|Ri|}|d}d|vrttjtjf|d<dD]}d|}||vr2||dq!|S)Ninstallprefix)purelibplatlibheadersscriptsdataz install_{}) get_option_dictVIRTUALENV_PATCH_FILEospathabspathsysrformatpop)selfargskwargsresultrbasekeyold_parse_config_filesC/usr/local/bin/dhwp/env/lib/python3.10/site-packages/_virtualenv.pyparse_config_filess   z&patch_dist..parse_config_filesN) Distributionr)distrrrr patch_dist s  r)zdistutils.distzsetuptools.dist))partial)MetaPathFinder) find_specc@s:eZdZdZdZgZd ddZeddZeddZ dS) _FinderzFA meta path finder that allows patching the imported distutils modulesNc Cs"|tvr|jdurt|jdkrddl}|}|j||jd`||_zOt||}|durrt|j d}|r;dnd}t |j |} |rH|j n|j } | | urez t |j |t| | Wn tydYnw|Wd|_WdSWd|_nd|_wWddS1swYdSdSdS)Nr exec_module load_module)_DISTUTILS_PATCHfullnamelenlock threadingLockappendr#hasattrloadergetattrr%r&setattrr!AttributeError) rr(r targetr+r*spec is_new_api func_nameoldfuncrrrr#6s6        "z_Finder.find_speccCs"|||jtvrt|dSdSN__name__r'r)r7modulerrrr%Ws  z_Finder.exec_modulecCs||}|jtvr t||Sr9r:)r7namer<rrrr&]s z_Finder.load_moduler9) r; __module__ __qualname____doc__r(r*r# staticmethodr%r&rrrrr$,s ! r$) find_module) ImpImporter ImpLoaderc@s eZdZdddZdddZdS)_VirtualenvImporterNcCst|t||dSr9)object__init__rC)rr rrrrGks z_VirtualenvImporter.__init__cCsD|tvr zt|gt|dd|RWStyYdSwdS)N.)r'_VirtualenvLoaderrBsplit ImportError)rr(r rrrrBos" z_VirtualenvImporter.find_moduler9)r;r>r?rGrBrrrrrEjs rEcs$eZdZddZfddZZS)rJcCs t|t|||||dSr9)rFrGrD)rr(filefilenameetcrrrrGxs z_VirtualenvLoader.__init__cs"tt||}t|d|_|Sr9)superrJr&r __loader__)rr(r< __class__rrr&|sz_VirtualenvLoader.load_module)r;r>r?rGr& __classcell__rrrRrrJwsrJ)r@r rr join__file__r rr' version_info functoolsr! importlib.abcr"importlib.utilr#r$ meta_pathinsertimprBpkgutilrCrDrFrErJr-rrrrs"     8