a „oe›ã@s¼ddlZddlZdejvZdd„Zdd„Zdd„Zd d „Zd d „ZGd d„dƒZ Gdd„dƒZ e j D]Z e e de ›�e jƒqde ƒZdd„ZGdd„dƒZdd„Zdd„Zejdkr¸eZdS)éNZ__pypy__cCs6dtjvrdStr tjdkr dSddl}| d¡dS)NÚ distutils)ééraƒDistutils 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.)ÚsysÚmodulesÚis_pypyÚ version_infoÚwarningsÚwarn)r ©r ú9C:\Program Files\Certbot\pkgs\_distutils_hack\__init__.pyÚwarn_distutils_present s ÿr cCsFdtjvrdSddl}| d¡dd„tjDƒ}|D] }tj|=q4dS)Nrrz"Setuptools is replacing distutils.cSs"g|]}|dks| d¡r|‘qS)rz distutils.)Ú startswith)Ú.0Únamer r r Ú "sþz#clear_distutils..)rrr r )r Zmodsrr r r Úclear_distutilss  þrcCstj dd¡}|dkS)z? Allow selection of distutils by environment variable. ZSETUPTOOLS_USE_DISTUTILSÚlocal)ÚosÚenvironÚget)Úwhichr r r Úenabled+srcCsnddl}tƒtƒ�| d¡Wdƒn1s40Y| d¡}d|jvs\J|jƒ‚dtjvsjJ‚dS)Nrrzdistutils.coreZ _distutilszsetuptools._distutils.log)Ú importlibrÚshimÚ import_moduleÚ__file__rr)rZcorer r r Úensure_local_distutils3s( rcCstƒrtƒtƒdS)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@seZdZdd„Zdd„ZdS)Ú _TrivialRecGs ||_dS©N)Ú _patterns)ÚselfÚpatternsr r r Ú__init__Qsz_TrivialRe.__init__cst‡fdd„|jDƒƒS)Nc3s|]}|ˆvVqdSr r )rÚpat©Ústringr r Ú Uóz#_TrivialRe.match..)Úallr!)r"r'r r&r ÚmatchTsz_TrivialRe.matchN)Ú__name__Ú __module__Ú __qualname__r$r+r r r r rPsrc@sjeZdZddd„Zdd„Zedd„ƒZdd „Zed d „ƒZ ed d „ƒZ dd„Z e j dkr`gd¢ndgZdS)ÚDistutilsMetaFinderNcCs>|dur| d¡sdSdjfitƒ¤Ž}t||dd„ƒ}|ƒS)Nztest.zspec_for_{fullname}cSsdSr r r r r r Ú`r)z/DistutilsMetaFinder.find_spec..)rÚformatÚlocalsÚgetattr)r"ÚfullnameÚpathÚtargetZ method_nameÚmethodr r r Ú find_specYs zDistutilsMetaFinder.find_speccsv| ¡r dSddl}ddl}ddl}z| d¡‰WntyFYdS0G‡fdd„d|jjƒ}|jj d|ƒˆj d�S)Nrzsetuptools._distutilscs eZdZ‡fdd„Zdd„ZdS)z?DistutilsMetaFinder.spec_for_distutils..DistutilsLoadercs dˆ_ˆS)Nr)r,)r"Úspec©Úmodr 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.abcÚimportlib.utilrÚ ExceptionÚabcÚLoaderÚutilÚspec_from_loaderr)r"rr?r r:r Úspec_for_distutilscs  ÿz&DistutilsMetaFinder.spec_for_distutilscCs tj d¡S)zj Suppress supplying distutils for CPython (build and tests). Ref #2965 and #3007. zpybuilddir.txt)rr5Úisfiler r r r rA„szDistutilsMetaFinder.is_cpythoncCs*tjdks| ¡rdStƒdd„|_dS)zj Ensure stdlib distutils when running under pip. See pypa/pip#8761 for rationale. ©ré NcSsdSr r r r r r r0”r)z2DistutilsMetaFinder.spec_for_pip..)rrÚpip_imported_during_buildrrI©r"r r r Ú spec_for_pipŒsz DistutilsMetaFinder.spec_for_pipcs$ddl}t‡fdd„| d¡DƒƒS)zO Detect if pip is being imported in a build script. Ref #2355. rNc3s|]\}}ˆ |¡VqdSr )Úframe_file_is_setup)rÚframeÚline©Úclsr r r(�sz@DistutilsMetaFinder.pip_imported_during_build..)Ú tracebackÚanyÚ walk_stack)rTrUr rSr rM–s ÿz-DistutilsMetaFinder.pip_imported_during_buildcCs|j dd¡ d¡S)zN Return True if the indicated frame suggests a setup.py file. rÚzsetup.py)Ú f_globalsrÚendswith)rQr r r rP¡sz'DistutilsMetaFinder.frame_file_is_setupcCstƒdd„|_dS)zp Ensure stdlib distutils when running select tests under CPython. python/cpython#91169 cSsdSr r r r r r r0°r)z>DistutilsMetaFinder.spec_for_sensitive_tests..N)rrIrNr r r Úspec_for_sensitive_tests©sz,DistutilsMetaFinder.spec_for_sensitive_tests)ré )útest.test_distutilsztest.test_peg_generatorztest.test_importlibr])N)r,r-r.r8rIÚ staticmethodrArOÚ classmethodrMrPr[rrÚsensitive_testsr r r r r/Xs !    û ÿùr/Z spec_for_cCsttjvptƒdSr )ÚDISTUTILS_FINDERrÚ meta_pathÚ insert_shimr r r r Úadd_shimÊsrdc@seZdZdd„Zdd„ZdS)rcCs tƒdSr )rcrNr r r Ú __enter__Ïszshim.__enter__cCs tƒdSr )Ú _remove_shim)r"ÚexcÚvalueÚtbr r r Ú__exit__Òsz shim.__exit__N)r,r-r.rerjr r r r rÎsrcCstj dt¡dS)Nr)rrbÚinsertrar r r r rcÖsrccCs(ztj t¡Wnty"Yn0dSr )rrbÚremoveraÚ ValueErrorr r r r rfÚs rfrK)rrÚbuiltin_module_namesrr rrrrrr/r`rÚsetattrr[rardrrcrfrZ remove_shimr r r r Ús,  g ý