a ˆåÏhà ã@s‚ddlZddlZddlZddlZddlZdejvZdd„Zdd„Zdd„Z d d „Z d d „Z Gd d„dƒZ e ƒZ dd„Zdd„ZdS)éNZ__pypy__cCs.dtjvrdStr tjdkr dSt d¡dS)NÚ distutils)ééaƒ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 údtjvrdSt d¡dd„tjDƒ}|D] }tj|=q,dS)Nrz"Setuptools is replacing distutils.cSsg|]}t d|¡r|‘qS)z distutils\b)ÚreÚmatch)Ú.0Únamer r r Ú óz#clear_distutils..)rrr r )Zmodsrr r r Úclear_distutilss   rcCstj dd¡}|dkS)z? Allow selection of distutils by environment variable. ZSETUPTOOLS_USE_DISTUTILSZstdlibÚlocal)ÚosÚenvironÚget)Úwhichr r r Úenabled$srcCsBtƒt d¡}d|_|tjd<t d¡}d|jvs>J|jƒ‚dS)Núsetuptools._distutilsrzdistutils.coreZ _distutils)rÚ importlibÚ import_moduleÚ__name__rrÚ__file__)rZcorer r r Úensure_local_distutils,s    r cCstƒ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 r r r r r Ú do_override7sr!c@s2eZdZd dd„Zdd„Zdd„Zedd „ƒZdS) ÚDistutilsMetaFinderNcCs4|dur dSdjfitƒ¤Ž}t||dd„ƒ}|ƒS)Nzspec_for_{fullname}cSsdS©Nr r r r r ÚIrz/DistutilsMetaFinder.find_spec..)ÚformatÚlocalsÚgetattr)ÚselfÚfullnameÚpathÚtargetZ method_nameÚmethodr r r Ú find_specDs zDistutilsMetaFinder.find_speccs8ddl‰ddl‰G‡fdd„dˆjjƒ}ˆj d|ƒ¡S)Nrcs eZdZ‡fdd„Zdd„ZdS)z?DistutilsMetaFinder.spec_for_distutils..DistutilsLoadercs ˆ d¡S)Nr)r)r(Úspec©rr r Ú create_moduleRszMDistutilsMetaFinder.spec_for_distutils..DistutilsLoader.create_modulecSsdSr#r )r(Úmoduler r r Ú exec_moduleUszKDistutilsMetaFinder.spec_for_distutils..DistutilsLoader.exec_moduleN)rÚ __module__Ú __qualname__r0r2r r/r r ÚDistutilsLoaderPs r5r)Ú importlib.abcÚimportlib.utilÚabcÚLoaderÚutilÚspec_from_loader)r(r5r r/r Úspec_for_distutilsLsz&DistutilsMetaFinder.spec_for_distutilscCs | ¡r dStƒdd„|_dS)zj Ensure stdlib distutils when running under pip. See pypa/pip#8761 for rationale. NcSsdSr#r r r r r r$brz2DistutilsMetaFinder.spec_for_pip..)Úpip_imported_during_buildrr<)r(r r r Ú spec_for_pipZsz DistutilsMetaFinder.spec_for_pipcCs ddl}tdd„| d¡DƒƒS)zO Detect if pip is being imported in a build script. Ref #2355. rNcss"|]\}}|jd d¡VqdS)rzsetup.pyN)Ú f_globalsÚendswith)rÚframeÚliner r r Ú jsÿz@DistutilsMetaFinder.pip_imported_during_build..)Ú tracebackÚanyÚ walk_stack)rDr r r r=dsþz-DistutilsMetaFinder.pip_imported_during_build)N)rr3r4r-r<r>Ú staticmethodr=r r r r r"Cs   r"cCstj dt¡dS)Nr)rÚ meta_pathÚinsertÚDISTUTILS_FINDERr r r r Úadd_shimssrKcCs(ztj t¡Wnty"Yn0dSr#)rrHÚremoverJÚ ValueErrorr r r r Ú remove_shimws rN)rrrrr Úbuiltin_module_namesrr rrr r!r"rJrKrNr r r r Ús    -