o
    éT•jÉ  ã                   @   sT  d Z g d¢ZddlZddlZzddlZW n ey)   ddlmZ e ee¡ Y nw de_	de_
z	e dd	¡e_W n	 eyB   Y nw eejd< zddlZW n eye   dd
lmZ e e¡ ee_Y nw de_	de_
z	e dd¡e_W n	 ey~   Y nw eejd< ejZejZddlZddlmZ dd„ Zddd„Zddd„Zi Zdd„ ZdS )z'A pure Python implementation of import.)Ú
__import__Úimport_moduleÚinvalidate_cachesÚreloadé    Né   )Ú
_bootstrapzimportlib._bootstrapÚ	importlibz__init__.pyz_bootstrap.py)Ú_bootstrap_externalzimportlib._bootstrap_externalz_bootstrap_external.py)r   c                  C   s"   t jD ]} t| dƒr|  ¡  qdS )zmCall the invalidate_caches() method on all meta path finders stored in
    sys.meta_path (where implemented).r   N)ÚsysÚ	meta_pathÚhasattrr   )Úfinder© r   ú)/usr/lib/python3.10/importlib/__init__.pyr   A   s
   

€þr   c                 C   s¸   t jdtdd� ztj|  j}|du rtd | ¡ƒ‚|W S  ty%   Y n t	y3   td | ¡ƒd‚w t
 | |¡}|du r@dS |jdu rY|jdu rStd | ¡| d�‚td	| d�‚|jS )
z¹Return the loader for the specified module.

    This is a backward-compatible wrapper around find_spec().

    This function is deprecated in favor of importlib.util.find_spec().

    ziDeprecated since Python 3.4 and slated for removal in Python 3.12; use importlib.util.find_spec() insteadé   )Ú
stacklevelNz{}.__loader__ is Nonez{}.__loader__ is not setzspec for {} missing loader©Únamez&namespace packages do not have loaders)ÚwarningsÚwarnÚDeprecationWarningr
   ÚmodulesÚ
__loader__Ú
ValueErrorÚformatÚKeyErrorÚAttributeErrorr   Ú
_find_specÚloaderÚsubmodule_search_locationsÚImportError)r   Úpathr   Úspecr   r   r   Úfind_loaderI   s2   þÿ


ÿÿr#   c                 C   sX   d}|   d¡r!|sd}t| | ¡ƒ‚| D ]}|dkr n|d7 }qt | |d… ||¡S )zÞImport a module.

    The 'package' argument is required when performing a relative import. It
    specifies the package to use as the anchor point from which to resolve the
    relative import to an absolute import.

    r   Ú.zHthe 'package' argument is required to perform a relative import for {!r}r   N)Ú
startswithÚ	TypeErrorr   r   Ú_gcd_import)r   ÚpackageÚlevelÚmsgÚ	characterr   r   r   r   l   s   

r   c                 C   sZ  z| j j}W n ty    z| j}W n ty   tdƒ‚w Y nw tj |¡| ur4d}t| 	|¡|d�‚|t
v r<t
| S | t
|< z]| d¡d }|riztj| }W n tyd   d}t| 	|¡|d�d‚w |j}nd}| }t |||¡ }| _ |du r„td|›�|d�‚t || ¡ tj| W zt
|= W S  ty�   Y S w zt
|= W w  ty¬   Y w w )	zcReload the module and return it.

    The module must have been successfully imported before.

    z"reload() argument must be a modulezmodule {} not in sys.modulesr   r$   r   zparent {!r} not in sys.modulesNzspec not found for the module )Ú__spec__r   r   Ú__name__r&   r
   r   Úgetr    r   Ú
_RELOADINGÚ
rpartitionr   Ú__path__r   r   ÚModuleNotFoundErrorÚ_exec)Úmoduler   r*   Úparent_nameÚparentÚpkgpathÚtargetr"   r   r   r   r   „   s^   
ÿÿþ
ÿÿþ

ÿþ
ÿr   )N)Ú__doc__Ú__all__Ú_impr
   Ú_frozen_importlibr   r    Ú Ú_setupr-   Ú__package__Ú__file__ÚreplaceÚ	NameErrorr   Ú_frozen_importlib_externalr	   Ú_set_bootstrap_moduleÚ_pack_uint32Ú_unpack_uint32r   r   r   r#   r   r/   r   r   r   r   r   Ú<module>   sT    
þý


ýý


#