o _a: @s4ddlZddlZGdddZdZeeedS)Nc@sXeZdZdZdddZeddZdd Zd d Zd d Z ddZ dddZ ddZ dS)VendorImporterz A PEP 302 meta path importer for finding optionally-vendored or otherwise naturally-installed packages from root_name. NcCs&||_t||_|p|dd|_dS)Nextern_vendor) root_namesetvendored_namesreplace vendor_pkg)selfrrr rr?/usr/lib/python3/dist-packages/pkg_resources/extern/__init__.py__init__ s zVendorImporter.__init__ccs|jdVdVdS)zL Search first the vendor package then as a natural package. .N)r r rrr search_paths  zVendorImporter.search_pathcCs.||jd\}}}| ott|j|jS)z,Figure out if the target module is vendored.r) partitionranymap startswithr)r fullnamerootbasetargetrrr _module_matches_namespacesz(VendorImporter._module_matches_namespacec Csx||jd\}}}|jD]"}z||}t|tj|}|tj|<|WSty0Yqwtdjdit)zK Iterate over the search path to locate and load fullname. rzThe '{target}' package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution.Nr) rrr __import__sysmodules ImportErrorformatlocals)r rrrrprefixextantmodrrr load_modules$     zVendorImporter.load_modulecCs ||jSN)r$name)r specrrr create_module3s zVendorImporter.create_modulecCsdSr%r)r modulerrr exec_module6szVendorImporter.exec_modulecCs||r tj||SdS)z(Return a module spec for vendored names.N)r importlibutilspec_from_loader)r rpathrrrr find_spec9s zVendorImporter.find_speccCs|tjvr tj|dSdS)zR Install this importer into sys.meta_path if not already present. N)r meta_pathappendrrrr install@s zVendorImporter.install)rN)NN) __name__ __module__ __qualname____doc__r propertyrrr$r(r*r/r2rrrr rs    r) packaging pyparsingappdirs)importlib.utilr+rrnamesr3r2rrrr s C