a oe@sddlZddlZdejvZddZddZddZd d Zd d ZGd ddZ GdddZ e j D]Z e e de e jqde ZddZGdddZddZddZejdkreZdS)NZ__pypy__cCs6dtjvrdStr tjdkr dSddl}|ddS)N distutils)raDistutils was imported before Setuptools, but importing Setuptools also replaces the `distutils` module in `sys.modules`. This may lead to undesirable behaviors or errors. To avoid these issues, avoid using distutils directly, ensure that setuptools is installed in the traditional way (e.g. not an editable install), and/or make sure that setuptools is always imported before distutils.)sysmodulesis_pypy version_infowarningswarn)r r 9C:\Program Files\Certbot\pkgs\_distutils_hack\__init__.pywarn_distutils_present s r cCsFdtjvrdSddl}|dddtjD}|D] }tj|=q4dS)Nrrz"Setuptools is replacing distutils.cSs"g|]}|dks|dr|qS)rz distutils.) startswith).0namer r r "sz#clear_distutils..)rrr r )r Zmodsrr r r clear_distutilss  rcCstjdd}|dkS)z? Allow selection of distutils by environment variable. ZSETUPTOOLS_USE_DISTUTILSlocal)osenvironget)whichr r r enabled+srcCsnddl}tt|dWdn1s40Y|d}d|jvs\J|jdtjvsjJdS)Nrrzdistutils.coreZ _distutilszsetuptools._distutils.log) importlibrshim import_module__file__rr)rZcorer r r ensure_local_distutils3s( rcCstrttdS)z Ensure that the local copy of distutils is preferred over stdlib. See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401 for more motivation. N)rr rr r r r do_overrideDsrc@seZdZddZddZdS) _TrivialRecGs ||_dSN) _patterns)selfpatternsr r r __init__Qsz_TrivialRe.__init__cstfdd|jDS)Nc3s|]}|vVqdSr r )rpatstringr r Uz#_TrivialRe.match..)allr!)r"r'r r&r matchTsz_TrivialRe.matchN)__name__ __module__ __qualname__r$r+r r r r rPsrc@sjeZdZdddZddZeddZdd Zed d Z ed d Z ddZ e j dkr`gdndgZdS)DistutilsMetaFinderNcCs>|dur|dsdSdjfit}t||dd}|S)Nztest.zspec_for_{fullname}cSsdSr r r r r r `r)z/DistutilsMetaFinder.find_spec..)rformatlocalsgetattr)r"fullnamepathtargetZ method_namemethodr r r find_specYs zDistutilsMetaFinder.find_speccsv|r dSddl}ddl}ddl}z|dWntyFYdS0Gfddd|jj}|jj d|j dS)Nrzsetuptools._distutilscs eZdZfddZddZdS)z?DistutilsMetaFinder.spec_for_distutils..DistutilsLoadercs d_S)Nr)r,)r"specmodr r create_moduleyszMDistutilsMetaFinder.spec_for_distutils..DistutilsLoader.create_modulecSsdSr r )r"moduler r r exec_module}szKDistutilsMetaFinder.spec_for_distutils..DistutilsLoader.exec_moduleN)r,r-r.r<r>r r:r r DistutilsLoaderxs r?r)origin) is_cpythonr importlib.abcimportlib.utilr ExceptionabcLoaderutilspec_from_loaderr)r"rr?r r:r spec_for_distutilscs  z&DistutilsMetaFinder.spec_for_distutilscCs tjdS)zj Suppress supplying distutils for CPython (build and tests). Ref #2965 and #3007. zpybuilddir.txt)rr5isfiler r r r rAszDistutilsMetaFinder.is_cpythoncCs*tjdks|rdStdd|_dS)zj Ensure stdlib distutils when running under pip. See pypa/pip#8761 for rationale. r NcSsdSr r r r r r r0r)z2DistutilsMetaFinder.spec_for_pip..)rrpip_imported_during_buildrrIr"r r r spec_for_pipsz DistutilsMetaFinder.spec_for_pipcs$ddl}tfdd|dDS)zO Detect if pip is being imported in a build script. Ref #2355. rNc3s|]\}}|VqdSr )frame_file_is_setup)rframelineclsr r r(sz@DistutilsMetaFinder.pip_imported_during_build..) tracebackany walk_stack)rTrUr rSr rMs z-DistutilsMetaFinder.pip_imported_during_buildcCs|jdddS)zN Return True if the indicated frame suggests a setup.py file. rzsetup.py) f_globalsrendswith)rQr r r rPsz'DistutilsMetaFinder.frame_file_is_setupcCstdd|_dS)zp Ensure stdlib distutils when running select tests under CPython. python/cpython#91169 cSsdSr r r r r r r0r)z>DistutilsMetaFinder.spec_for_sensitive_tests..N)rrIrNr r r spec_for_sensitive_testssz,DistutilsMetaFinder.spec_for_sensitive_tests)r )test.test_distutilsztest.test_peg_generatorztest.test_importlibr])N)r,r-r.r8rI staticmethodrArO classmethodrMrPr[rrsensitive_testsr r r r r/Xs !     r/Z spec_for_cCsttjvptdSr )DISTUTILS_FINDERr meta_path insert_shimr r r r add_shimsrdc@seZdZddZddZdS)rcCs tdSr )rcrNr r r __enter__szshim.__enter__cCs tdSr ) _remove_shim)r"excvaluetbr r r __exit__sz shim.__exit__N)r,r-r.rerjr r r r rsrcCstjdtdS)Nr)rrbinsertrar r r r rcsrccCs(ztjtWnty"Yn0dSr )rrbremovera ValueErrorr r r r rfs rfrK)rrbuiltin_module_namesrr rrrrrr/r`rsetattrr[rardrrcrfrZ remove_shimr r r r s,  g