File: //usr/lib/python3.7/__pycache__/pkgutil.cpython-37.pyc
B
îÇ{aÕS ã @ sx d Z ddlmZ ddlmZ ddlZddlZddlZddl Z ddl
Z ddlZddlm
Z
ddlZdddd d
ddd
ddddgZeddƒZde_ dd„ Zdd„ Zd+dd
„Zd,dd„Zed-dd„ƒZd.dd„Ze ejje¡ dd„ ZG d d
„ d
ƒZG d!d„ dƒZy.ddlZdd"lmZ d/d#d$„Ze ee¡ W n e k
r@ Y nX d%d„ Z!d0d&d„Z"d'd„ Z#d(d „ Z$d)d„ Z%d*d„ Z&dS )1zUtilities to support packages.é )Ú
namedtuple)ÚsingledispatchN)Ú
ModuleTypeÚget_importerÚiter_importersÚ
get_loaderÚfind_loaderÚ
walk_packagesÚiter_modulesÚget_dataÚImpImporterÚ ImpLoaderÚ read_codeÚextend_pathÚ
ModuleInfozmodule_finder name ispkgz.A namedtuple with minimal info about a module.c C sL y
| j }W n4 tk
r> | |¡}|dkr0dS tj ||¡S X ||ƒS dS )z'Return the finder-specific module spec.N)Ú find_specÚAttributeErrorÚfind_moduleÚ importlibÚutilÚspec_from_loader)ÚfinderÚnamer Úloader© r ú/usr/lib/python3.7/pkgutil.pyÚ _get_spec s
r c C s6 dd l }| d¡}|tjjkr"d S | d¡ | | ¡S )Nr é é )ÚmarshalÚreadr r ÚMAGIC_NUMBERÚload)Ústreamr Úmagicr r r r ( s
Ú c # sÐ i fdd„‰ x¾t | |ƒD ]°}|V |jryt|jƒ W nN tk
r\ |dk rX||jƒ Y q tk
r„ |dk r~||jƒ n‚ Y qX ttj|j ddƒpœg } ‡ fdd„| D ƒ} t | |jd |ƒE dH qW dS )a« Yields ModuleInfo for all modules recursively
on path, or, if path is None, all accessible modules.
'path' should be either None or a list of paths to look for
modules in.
'prefix' is a string to output on the front of every module name
on output.
Note that this function must import all *packages* (NOT all
modules!) on the given path, in order to access the __path__
attribute to find submodules.
'onerror' is a function which gets called with one argument (the
name of the package which was being imported) if any exception
occurs while trying to import a package. If no onerror function is
supplied, ImportErrors are caught and ignored, while all other
exceptions are propagated, terminating the search.
Examples:
# list all modules python can access
walk_packages()
# list all submodules of ctypes
walk_packages(ctypes.__path__, ctypes.__name__+'.')
c S s | |krdS d|| <