U :er@sddlZddlZddZddZddZdd Zd d ZGd d d ZGdddZej D]Z e ede ej qZeZ ddZGdddZddZddZejdkreZdS)NcCs$dtjkrdSddl}|ddS)N distutilsraDistutils 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.sysmoduleswarningswarn)rrK/usr/local/python38/lib/python3.8/site-packages/_distutils_hack/__init__.pywarn_distutils_presents  r cCsFdtjkrdSddl}|dddtjD}|D] }tj|=q4dS)Nrrz"Setuptools is replacing distutils.cSs"g|]}|dks|dr|qS)rz distutils.) startswith).0namerrr s z#clear_distutils..r)rZmodsr rrr clear_distutilss  rcCstjdd}|dkS)z? Allow selection of distutils by environment variable. ZSETUPTOOLS_USE_DISTUTILSlocal)osenvironget)whichrrr enabled$src CsZddl}tt|dW5QRX|d}d|jksHt|jdtjksVtdS)Nrrzdistutils.core _distutilszsetuptools._distutils.log) importlibrshim import_module__file__AssertionErrorrr)rcorerrr ensure_local_distutils,s 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 rrrrr do_override=src@seZdZddZddZdS) _TrivialRecGs ||_dSN) _patterns)selfpatternsrrr __init__Jsz_TrivialRe.__init__cstfdd|jDS)Nc3s|]}|kVqdSr r)r patstringrr Nsz#_TrivialRe.match..)allr!)r"r'rr&r matchMsz_TrivialRe.matchN)__name__ __module__ __qualname__r$r*rrrr rIsrc@sleZdZdddZddZeddZdd Zed d Z ed d Z ddZ e j dkrbdddgndgZdS)DistutilsMetaFinderNcCs:|dk r|dsdSdjft}t||dd}|S)Nztest.zspec_for_{fullname}cSsdSr rrrrr Yz/DistutilsMetaFinder.find_spec..)r formatlocalsgetattr)r"fullnamepathtarget method_namemethodrrr find_specRs zDistutilsMetaFinder.find_speccsx|r dSddl}ddl}ddl}z|dWntk rHYdSXGfddd|jj}|jj d|j dS)Nrzsetuptools._distutilscs eZdZfddZddZdS)z?DistutilsMetaFinder.spec_for_distutils..DistutilsLoadercs d_S)Nr)r+)r"specmodrr create_modulerszMDistutilsMetaFinder.spec_for_distutils..DistutilsLoader.create_modulecSsdSr r)r"modulerrr exec_modulevszKDistutilsMetaFinder.spec_for_distutils..DistutilsLoader.exec_moduleN)r+r,r-r=r?rr;rr DistutilsLoaderqs r@r)origin) is_cpythonr importlib.abcimportlib.utilr ExceptionabcLoaderutilspec_from_loaderr)r"rr@rr;r spec_for_distutils\s z&DistutilsMetaFinder.spec_for_distutilscCs tjdS)zj Suppress supplying distutils for CPython (build and tests). Ref #2965 and #3007. zpybuilddir.txt)rr5isfilerrrr rB}szDistutilsMetaFinder.is_cpythoncCs*tjdks|rdStdd|_dS)zj Ensure stdlib distutils when running under pip. See pypa/pip#8761 for rationale.  NcSsdSr rrrrr r/r0z2DistutilsMetaFinder.spec_for_pip..)r version_infopip_imported_during_buildrrJr"rrr 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)r framelineclsrr r(sz@DistutilsMetaFinder.pip_imported_during_build..) tracebackany walk_stack)rWrXrrVr rPs z-DistutilsMetaFinder.pip_imported_during_buildcCs|jdddS)zN Return True if the indicated frame suggests a setup.py file. rzsetup.py) f_globalsrendswith)rTrrr rSsz'DistutilsMetaFinder.frame_file_is_setupcCstdd|_dS)zp Ensure stdlib distutils when running select tests under CPython. python/cpython#91169 cSsdSr rrrrr r/r0z>DistutilsMetaFinder.spec_for_sensitive_tests..N)rrJrQrrr spec_for_sensitive_testssz,DistutilsMetaFinder.spec_for_sensitive_tests)rM ztest.test_distutilsztest.test_peg_generatorztest.test_importlib)N)r+r,r-r9rJ staticmethodrBrR classmethodrPrSr^rrOsensitive_testsrrrr r.Qs& !    r.Z spec_for_cCsttjkptdSr )DISTUTILS_FINDERr meta_path insert_shimrrrr add_shimsrfc@seZdZddZddZdS)rcCs tdSr )rerQrrr __enter__szshim.__enter__cCs tdSr ) _remove_shim)r"excvaluetbrrr __exit__sz shim.__exit__N)r+r,r-rgrlrrrr rsrcCstjdtdS)Nr)rrdinsertrcrrrr resrecCs*ztjtWntk r$YnXdSr )rrdremoverc ValueErrorrrrr rhsrhrL)rrr rrrrrr.rbr setattrr^rcrfrrerhrOZ remove_shimrrrr s* g