Your IP : 3.22.42.25
U
i�f�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�Zz.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 sR z
| j }W n: tk
rD | �|�}|dkr2Y dS tj�||� Y 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 �,/opt/alt/python38/lib64/python3.8/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�� t | |�D ]�}|V |jrzt|j� W nN tk
rZ |dk rV||j� Y q tk
r� |dk r|||j� n� Y qX ttj|j dd�p�g } � fdd�| D �} t | |jd |�E dH qdS )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|| <