
    yIf@                    (   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ dd	lmZ  G d
 de          Z G d dej                  Zej        ej         ej        dZ!de"d<   ddhZ#de"d<    G d de          Z$ G d d          Z% G d de%          Z& G d de&          Z' G d de%          Z( G d d e%          Z)e&e(e)e'fZ*d8d%Z+d9d'Z,d:d+Z-d;d5Z.d<d=d7Z/dS )>    )annotationsN)IteratorSequence)Path)AnyLiteral
NamedTupleProtocol)
PY310_PLUS)EXT_LIB_DIRS   )utilc                      e Zd Z	 ddd
ZdS )_MetaPathFinder.fullnamestrpathSequence[str] | Nonetargettypes.ModuleType | Nonereturn%importlib.machinery.ModuleSpec | Nonec                    d S N )selfr   r   r   s       T/var/www/piapp/venv/lib/python3.11/site-packages/astroid/interpreter/_import/spec.py	find_specz_MetaPathFinder.find_spec   s	    
 14    N).)r   r   r   r   r   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r      s2        
 +.	4 4 4 4 4 4 4r   r   c                  >   e Zd ZdZ ej                    Z ej                    Z ej                    Z ej                    Z	 ej                    Z
 ej                    Z ej                    Z ej                    Z ej                    Z ej                    ZdS )
ModuleTypez(Python module types used for ModuleSpec.N)r    r!   r"   __doc__enumauto	C_BUILTINC_EXTENSIONPKG_DIRECTORYPY_CODERESOURCEPY_COMPILED	PY_FROZENPY_RESOURCE	PY_SOURCEPY_ZIPMODULEPY_NAMESPACEr   r   r   r$   r$   '   s        22	I$)++KDIKKMdikkO$)++K	I$)++K	I49;;L49;;LLLr   r$   )_EditableFinder_EditableNamespaceFinder_SixMetaPathImporterzdict[str, ModuleType]_MetaPathFinderModuleTypesr2   r3   zset[str]_EditableFinderClassesc                  R    e Zd ZU dZded<   ded<   dZded<   dZded	<   dZd
ed<   dS )
ModuleSpeczDefines a class similar to PEP 420's ModuleSpec.

    A module spec defines a name of a module, its type, location
    and where submodules can be found, if the module is a package.
    r   namezModuleType | NonetypeNz
str | Nonelocationoriginr   submodule_search_locations)r    r!   r"   r%   __annotations__r;   r<   r=   r   r   r   r8   r8   D   sg           IIIHF7;;;;;;;r   r8   c                  F    e Zd ZdZdddZej        dd            ZddZdS )Finderz@A finder is a class which knows how to find a particular module.Nr   r   r   Nonec                ,    |pt           j        | _        d S r   )sysr   _path)r   r   s     r   __init__zFinder.__init__U   s    %SX


r   modnamer   module_partsSequence[str]	processed	list[str]submodule_pathModuleSpec | Nonec                    dS )a  Find the given module.

        Each finder is responsible for each protocol of finding, as long as
        they all return a ModuleSpec.

        :param modname: The module which needs to be searched.
        :param module_parts: It should be a list of strings,
                                  where each part contributes to the module's
                                  namespace.
        :param processed: What parts from the module parts were processed
                               so far.
        :param submodule_path: A list of paths where the module
                                    can be looked into.
        :returns: A ModuleSpec, describing how and where the module was found,
                  None, otherwise.
        Nr   r   rF   rG   rI   rK   s        r   find_modulezFinder.find_moduleX         r   specr8   c                    dS )z7Get a list of extra paths where this finder can search.Nr   r   rQ   rI   s      r   contribute_to_pathzFinder.contribute_to_pathq   rP   r   r   )r   r   r   rA   
rF   r   rG   rH   rI   rJ   rK   r   r   rL   rQ   r8   rI   rJ   r   r   )	r    r!   r"   r%   rE   abcabstractmethodrO   rT   r   r   r   r@   r@   R   sq        JJ& & & & & 	   0F F F F F Fr   r@   c                      e Zd ZU dZd ej        j        D             d ej        j        D             z   d ej        j        D             z   Z	de
d<   ddZddZdS )ImportlibFinderz'A finder based on the importlib module.c                *    g | ]}|t           j        fS r   )r$   r)   .0ss     r   
<listcomp>zImportlibFinder.<listcomp>{   s     UUU!Z#	$UUUr   c                *    g | ]}|t           j        fS r   )r$   r/   r\   s     r   r_   zImportlibFinder.<listcomp>|   s     
R
R
RAz#$
R
R
Rr   c                *    g | ]}|t           j        fS r   )r$   r,   r\   s     r   r_   zImportlibFinder.<listcomp>}   s     
V
V
V1Az%&
V
V
Vr   z Sequence[tuple[str, ModuleType]]	_SUFFIXESrF   r   rG   rH   rI   rJ   rK   r   r   rL   c                @   |t          |          }n|t          j        v rt          |d t          j                  S 	 t          j                    5  t          j        dt                     t          j                            |          }d d d            n# 1 swxY w Y   |rH|j        t          j        j        u r0t          |t!          |j        dd           t          j                  S n# t&          $ r Y nw xY wt          j        }|D ]}t*          j                            ||          }ddt          j        j        d         fD ]f}d|z   }	t*          j                            ||	          }
t*          j                            |
          r t          ||t          j                  c c S gt4          j        D ]_\  }}||z   }t*          j                            ||          }
t*          j                            |
          rt          ||
|          c c S `d S )	N)r9   r;   r:   ignore)categoryfilenamez.pyz.pyir   rE   )listrC   builtin_module_namesr8   r$   r(   warningscatch_warningsfilterwarningsUserWarning	importlibr   r   loader	machineryFrozenImportergetattrloader_stater-   
ValueErrorr   osjoinBYTECODE_SUFFIXESisfiler*   rZ   rb   )r   rF   rG   rI   rK   rQ   entrypackage_directorysuffixpackage_file_name	file_pathtype_	file_names                r   rO   zImportlibFinder.find_module   s    %!.11NN000)   ,.. = =+H{KKKK$>33G<<D= = = = = = = = = = = = = = = 
 *9: : &$!():J!M!M'1   
     XN# 	T 	TE "UG < < &)*=*OPQ*RS  $.$7!GLL):<MNN	7>>),, %$!2'5        "1!: T T#f,	GLL	::	7>>),, T%7YUSSSSSSSSTT
 ts6   C. ;BC. BC. B AC. .
C;:C;rQ   r8   c                   j         d S t          t          j                             rfdt          j        D             }nj        dk    r{t          fdt          D                       s[t          j	        
                    d          }|r1|j        r*t          |j                  }t          |j                  g}nj         g}nj         g}|S )Nc                    g | ]M}t           j                            t          j        j        |gR            6t          j        j        |gR  NS r   )rt   r   isdirru   )r]   prI   s     r   r_   z6ImportlibFinder.contribute_to_path.<locals>.<listcomp>   se       7==a!<)!<!<!<==Q++++  r   	distutilsc              3     K   | ]B}j                                                             |                                          V  Cd S r   )r;   lower
startswith)r]   ext_lib_dirrQ   s     r   	<genexpr>z5ImportlibFinder.contribute_to_path.<locals>.<genexpr>   s_       2
 2
 M!!,,[->->-@-@AA2
 2
 2
 2
 2
 2
r   )r;   _is_setuptools_namespacer   rC   r   r9   anyr   rm   r   r   r<   r   parent)r   rQ   rI   r   distutils_specorigin_paths    ``   r   rT   z"ImportlibFinder.contribute_to_path   s    = 4#D$7$788 	#     DD
 Y+%%c 2
 2
 2
 2
+2
 2
 2
 /
 /
% '^55kBBN '."7 '"")  K.//0M?Dr   NrU   rV   )r    r!   r"   r%   rm   ro   EXTENSION_SUFFIXESSOURCE_SUFFIXESrv   rb   r>   rO   rT   r   r   r   rZ   rZ   w   s         11 	VUi.A.TUUU
R
Ri.A.Q
R
R
R	S
V
V	0C0U
V
V
V	W     3 3 3 3j# # # # # #r   rZ   c                  "    e Zd ZdZddZddZdS )ExplicitNamespacePackageFinderz-A finder for the explicit namespace packages.rF   r   rG   rH   rI   rJ   rK   r   r   rL   c                    |rd                     g ||          }t          j        |          rC|t          j        v r5t          j        |         j        }t          |ddt          j        |          S d S )N. 	namespacer9   r;   r<   r:   r=   )	ru   r   is_namespacerC   modules__path__r8   r$   r1   rN   s        r   rO   z*ExplicitNamespacePackageFinder.find_module   s      	6hh44G455GW%% 	'S[*@*@ [1:N",+9    tr   rQ   r8   c                    |j         S r   r=   rS   s      r   rT   z1ExplicitNamespacePackageFinder.contribute_to_path   s     ..r   NrU   rV   r    r!   r"   r%   rO   rT   r   r   r   r   r      sB        77   (/ / / / / /r   r   c                  ,     e Zd ZdZd fdZddZ xZS )	ZipFinderz8Finder that knows how to find a module inside zip files.r   rH   r   rA   c                    t                                          |           |D ]H}|t          j        vr8	 t	          j        |          t          j        |<   3# t          j        $ r Y Dw xY wId S r   )superrE   rC   path_importer_cache	zipimportzipimporterZipImportError)r   r   
entry_path	__class__s      r   rE   zZipFinder.__init__   s     	 	J!888:C:O"; ;C+J77 !/   H 9	 	s   !AA*)A*rF   r   rG   rI   rJ   rK   r   rL   c                v    	 t          |          \  }}}n# t          $ r Y d S w xY wt          ||d||          S )Neggr   )_search_zipImportErrorr8   )r   rF   rG   rI   rK   	file_typerf   r   s           r   rO   zZipFinder.find_module  sg    	(3L(A(A%Ix 	 	 	44	 '+
 
 
 	
s    
$$)r   rH   r   rA   rU   )r    r!   r"   r%   rE   rO   __classcell__)r   s   @r   r   r      sW        BB	 	 	 	 	 	
 
 
 
 
 
 
 
r   r   c                  "    e Zd ZdZddZddZdS )PathSpecFinderz/Finder based on importlib.machinery.PathFinder.rF   r   rG   rH   rI   rJ   rK   r   r   rL   c           	        t           j        j                            ||          }|V|j        d u }|s|j        nd }|rt
          j        nd }t          |j        ||j        |t          |j
        pg                     S |S )N)r   r   )rm   ro   
PathFinderr   r<   r$   r1   r8   r9   rg   r=   )	r   rF   rG   rI   rK   rQ   is_namespace_pkgr;   module_types	            r   rO   zPathSpecFinder.find_module  s     "-77n7UU#{d2*:Dt{{H5EO*114KY!{ +/0O0USU+V+V    r   rQ   r8   c                >    |j         t          j        k    r|j        S d S r   )r:   r$   r1   r=   rS   s      r   rT   z!PathSpecFinder.contribute_to_path3  s"     9
///22tr   NrU   rV   r   r   r   r   r   r     sB        99   *     r   r   r;   pathlib.Pathr   boolc                    	 t          | dz  d          5 }|                    d          }d d d            n# 1 swxY w Y   n# t          $ r Y dS w xY wd|v od|v }d|v od|v }|p|S )	Nz__init__.pyrbi   Fs   pkgutils   extend_paths   pkg_resourcess   declare_namespace(__name__))openreadOSError)r;   streamdataextend_pathdeclare_namespaces        r   r   r   C  s    (]*D11 	%V;;t$$D	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   uu$?4)?KD K%Ct%K  +++s,   A 7A ;A ;A 
AA+Iterator[tuple[str, zipimport.zipimporter]]c               #     K   t           j                                        D ]%\  } }t          |t          j                  r| |fV  &d S r   )rC   r   items
isinstancer   r   )filepathimporters     r   _get_zipimportersr   P  sZ      !5;;== % %(h	 566 	%H$$$$% %r   modpathrH   1tuple[Literal[ModuleType.PY_ZIPMODULE], str, str]c           	     |   t                      D ]\  }}t          r|                    | d                   }n|                    | d                   }|rAt          rk|                    t          j        j                            |                     s3t          dd                    | dd                    d|d|           nj|                    t          j        j                            |                     s3t          dd                    | dd                    d|d|           t          j
        t          j                            |          t          j        j        z   t          j        j                            |           z   |fc S t          dd                    |                      )Nr   No module named r   r   z in /)r   r   r   rO   rt   r   sepru   r   r$   r0   abspath)r   r   r   founds       r   r   r   V  s    011  ( 	5!++GAJ77EE((44E 	 
))"'+*:*:7*C*CDD %+88GABBK0000(((GGE  
 ))"'+*:*:7*C*CDD !kxx,,,,hhhA  
 '))BGK7"'+:J:J7:S:SS   	" <'):):<<
=
==r   search_pathrF   r   rG   rJ   rI   rK   r   +tuple[Finder | _MetaPathFinder, ModuleSpec]c           	        t           D ]-} ||           }|                    ||||          }|(||fc S t          j        D ]}|j        j        }	|	t          vr#	 |j        }	n# t          $ r Y ,w xY w|	t          vr:t          |	         }
t          |d          sX|	                    ||          }|r+|t          |j        |
|j        |j        |j                  fc S t          dd                    |                     )Nr   r   r   )_SPEC_FINDERSrO   rC   	meta_pathr   r    r5   AttributeErrorhasattrr   r8   r9   r<   r=   r   ru   )r   rF   rG   rI   rK   finderfinder_instancerQ   meta_findermeta_finder_namer   s              r   _find_spec_with_pathr   r  sk      % % &--**\9n
 
 <$$$$ } " "&09#===#.#7  !   'AAA01AB {K00 	$$Wn== 
	IKK3 	 	 	 	
	 A,)?)?AA
B
BBs   A""
A/.A/r   c                   |pt           j        }| dd         } d}| dd         }g }| r|                     d          }t          |||||p|          \  }}|                    |           | rAt          |t                    r|                    ||          }n|j        t          v r|j
        }|j        t          j        k    r|                    |          }| |S )a  Find a spec for the given module.

    :type modpath: list or tuple
    :param modpath:
      split module's name (i.e name of a module or package split
      on '.'), with leading empty strings for explicit relative import

    :type path: list or None
    :param path:
      optional list of path where the module or package should be
      searched (use sys.path if nothing or None is given)

    :rtype: ModuleSpec
    :return: A module spec, which describes how the module was
             found and where.
    Nr   r   )rC   r   popr   appendr   r@   rT   r    r6   r=   r:   r$   r*   _replace)	r   r   rD   rK   rG   rI   rF   r   rQ   s	            r   r   r     s   " CHE aaajGN111:LI
 L++a..+7L)^5Kt
 
 	!!! 	A&&)) A!'!:!:4!K!K $:::!%!@9
000==N=KKD!  L$ Kr   )r;   r   r   r   )r   r   )r   rH   r   r   )r   rH   rF   r   rG   rJ   rI   rJ   rK   r   r   r   r   )r   rJ   r   r   r   r8   )0
__future__r   rW   r&   rm   importlib.machineryimportlib.utilrt   pathlibrC   typesri   r   collections.abcr   r   r   typingr   r   r	   r
   astroid.constr   astroid.modutilsr   r   r   r   Enumr$   r/   r1   r5   r>   r6   r8   r@   rZ   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      sY  
 # " " " " " " 



              				  



       . . . . . . . .       5 5 5 5 5 5 5 5 5 5 5 5 $ $ $ $ $ $ ) ) ) ) ) )      
4 4 4 4 4h 4 4 4       " "+ * 7&05 5      $     < < < < < < < <"F "F "F "F "F "F "F "FJa a a a af a a aH/ / / / /_ / / /: 
  
  
  
  
  
  
  
F    V   B "	
, 
, 
, 
,% % % %> > > >85C 5C 5C 5Cp, , , , , , ,r   