
    z%ix                       	 d a dd lZdd lZdd lZdd lZdd lZej                  dk(  Zer	dd lZ	dd l
Z
ndd lZ	erddgZndgZed   Z ee      Zdj!                  e      ZeD  ch c]  } d|  	 c} ZdZdZeez   Zd	 Z e       Zd
 Zd Zd Zerd Znd Zd Zd Zd Zd Zd Zerd Z nd Z d Z!dLdZ" e#e"jH                        Z%djM                  dd      dz   Z'e(jS                  e'd      Z*dZ+dZ,dgZ-ere-j]                  d        ej^                         Z0d gZ1e1xZ2Z3dMd d!d"Z4d# Z5d$ Z6d% Z7d& Z8d' Z9d( Z:d) Z;d* Z<dNd+Z=dOd,Z>dPd-Z?d. Z@ eA       ZBdMd eBd/d0ZCd1 ZD G d2 d3      ZE G d4 d5      ZF G d6 d7eF      ZG G d8 d9      ZH G d: d;eHeG      ZI G d< d=eHeF      ZJ G d> d?eHeF      ZK G d@ dA      ZL G dB dC      ZMeMZN G dD dE      ZO G dF dG      ZPdMdHZQdI ZRdJ ZSdK ZTy c c} w )QN    win32\/ :)win)cygwindarwinc                      t         j                  j                  t              r/t         j                  j                  t              rdndfd} | S d } | S )NPYTHONCASEOKs   PYTHONCASEOKc                  d    	 t         j                  j                   xr  t        j                  v S N)sysflagsignore_environment_osenvironkeys   Q/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/importlib/_bootstrap_external.py_relax_casez%_make_relax_case.<locals>._relax_caseC   s'    pyy333Js{{8JJ    c                       	 y)NF r   r   r   r   z%_make_relax_case.<locals>._relax_caseG   s    Gr   )r   platform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r   r   s    @r   _make_relax_caser   <   sN    
||:;<<""#FG C!C	K 	 r   c                 @    	 t        |       dz  j                  dd      S )N       little)intto_bytes)xs    r   _pack_uint32r'   O   s!    4FZ))!X66r   c                 0    	 t         j                  | d      S Nr#   r$   
from_bytesdatas    r   _unpack_uint32r.   T       9>>$))r   c                 0    	 t         j                  | d      S r)   r*   r,   s    r   _unpack_uint16r1   Y   r/   r   c                     	 | syt        |       dk(  r| d   S d}g }t        t        j                  |       D ]  \  }}|j	                  t
              s|j                  t
              r$|j                  t              xs |}t        |z   g}T|j                  d      r9|j                         |j                         k7  r|}|g}|j                  |       |xs |}|j                  |        |D cg c]  }|s|j                  t               }}t        |      dk(  r|d   s	|t        z   S |t        j                  |      z   S c c}w )Nr      r   r   )lenmapr   _path_splitrootr   path_sep_tupleendswithrstrippath_separatorspath_sepcasefoldappendjoin)
path_partsrootpathnew_roottailps         r   
_path_joinrE   `   s.   -z?aa= !#"5"5zB 	"NHd"">2h6G6G6W7?4 4(""3'==?h&7&7&99 $D 6DKK%'4D!	" 48=a1)==t9>$q'(?"hmmD)))	 >s   1E9Ec                  ~    	 t         j                  | D cg c]  }|r|j                  t               c}      S c c}w r   )r;   r>   r9   r:   )r?   parts     r   rE   rE   ~   s<    -}}*4>"& #kk/: > ? 	? >s   :c                 b     	 t         fdt        D              }|dk  rd fS  d |  |dz   d  fS )Nc              3   @   K   | ]  }j                  |        y wr   )rfind).0rD   rA   s     r   	<genexpr>z_path_split.<locals>.<genexpr>   s     3aDJJqM3s   r   r   r3   )maxr:   )rA   is   ` r   _path_splitrO      sA    *3?33A1u4x8T!a%&\!!r   c                 .    	 t        j                  |       S r   )r   statrA   s    r   
_path_statrS      s     88D>r   c                 ^    	 	 t        |       }|j                  dz  |k(  S # t        $ r Y yw xY w)NFi   )rS   OSErrorst_mode)rA   mode	stat_infos      r   _path_is_mode_typerY      s@    ;t$	 (T11  s     	,,c                     	 t        | d      S )Ni   )rY   rR   s    r   _path_isfiler[      s    )dH--r   c                 H    	 | st        j                         } t        | d      S )Ni @  )r   getcwdrY   rR   s    r   _path_isdirr^      s     (zz|dH--r   c                     	 | syt        j                  |       d   j                  dd      }t        |      dkD  xr$ |j	                  d      xs |j                  d      S )NFr   r   r   r3   z\\)r   r6   replacer4   r   r8   )rA   r@   s     r   _path_isabsra      sW    ,""4(+33C>4y1}Q$//&"9"PT]]4=PQr   c                 .    	 | j                  t              S r   )r   r:   rR   s    r   ra   ra      s    ,//r   c                     	 t        |       s=t        D ]  }| j                  d|       }  t        t	        j
                         |       S | S )N.)ra   r:   removeprefixrE   r   r]   )rA   seps     r   _path_abspathrg      sJ    *t" 	0C$$qY/D	0#**,--r   c                    	 |  dt        |        }t        j                  |t        j                  t        j                  z  t        j
                  z  |dz        }	 t        j                  |d      5 }|j                  |       d d d        t        j                  ||        y # 1 sw Y    xY w# t        $ r' 	 t        j                  |        # t        $ r Y  w xY ww xY w)Nrd     wb)idr   openO_EXCLO_CREATO_WRONLY_ioFileIOwriter`   rU   unlink)rA   r-   rW   path_tmpfdfiles         r   _write_atomicrw      s    $ qD
#H	(**s{{*S\\94%<
IB ZZD! 	TJJt	Hd#	 	  	JJx  	  		sH   B0 3B$B0 $B-)B0 0	C :CC 	CC CC i     r#   s   
__pycache__zopt-z.pyz.pywz.pyc)optimizationc                >   	 |/t        j                  dt               |d}t        |      |rdnd}t	        j
                  |       } t        |       \  }}|j                  d      \  }}}t        j                  j                  }	|	t        d      dj                  |r|n|||	g      }
|:t        j                  j                  dk(  rd}nt        j                  j                  }t        |      }|dk7  r+|j!                         st#        |d      |
 dt$         | }
|
t&        d   z   }t        j(                  Qt+        |      }|d   d	k(  r|d   t,        vr|d
d  }t/        t        j(                  |j1                  t,              |      S t/        |t2        |      S )NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner   r3   rd   $sys.implementation.cache_tag is Noner   z is not alphanumericr   rx   )	_warningswarnDeprecationWarning	TypeErrorr   fspathrO   
rpartitionr   implementation	cache_tagNotImplementedErrorr>   r   optimizestrisalnum
ValueError_OPTBYTECODE_SUFFIXESpycache_prefixrg   r:   rE   lstrip_PYCACHE)rA   debug_overriderz   messageheadrC   baserf   resttagalmost_filenamefilenames               r   cache_from_sourcer     s   " ! 01C	E#JGG$$+r::dDT"JD$ooc*OD#t



&
&C
{!"HIIgg$cBCO99"L99--L|$Lr##%//CDEE,-Qtf\NC!21!55H
% T"
 7c>d1g_<8D KK(
 	

 dHh//r   c                 &   	 t         j                  j                  t        d      t	        j
                  |       } t        |       \  }}d}t         j                  Kt         j                  j                  t              }|j                  |t        z         r|t        |      d  }d}|s+t        |      \  }}|t        k7  rt        t         d|       |j                  d      }|dvrt        d|      |dk(  rm|j!                  dd	      d
   }|j                  t"              st        dt"              |t        t"              d  }|j%                         st        d|d      |j'                  d      d   }	t)        ||	t*        d   z         S )Nr|   FTz not bottom-level directory in rd   >   rx      zexpected only 2 or 3 dots in r   rx   z5optimization portion of filename does not start with zoptimization level z is not an alphanumeric valuer   )r   r   r   r   r   r   rO   r   r9   r:   r   r;   r4   r   r   countrsplitr   r   	partitionrE   SOURCE_SUFFIXES)
rA   r   pycache_filenamefound_in_pycache_prefixstripped_pathpycache	dot_countrz   	opt_levelbase_filenames
             r   source_from_cacher   '  s    ##+!"HII::dD(.D
#
%**11/B??=834M*+,D&*#"#D)ghz)H $x) * * &&s+I89I8LMNN	a'..sA6r:&&t, %%)H. / / T,	  "2<2B C2 2 3 3$..s3A6MdMOA,>>??r   c                     	 t        |       dk(  ry | j                  d      \  }}}|r|j                         dd dk7  r| S 	 t        |       }t        |      r|S | S # t        t
        f$ r | d d }Y %w xY w)Nr   rd   py)r4   r   lowerr   r   r   r[   )bytecode_pathr   _	extensionsource_paths        r   _get_sourcefiler   O  s     =Q&11#6D!Y9??$R+t3)'6 '{3;FF  , )#CR()s   A A21A2c                     | j                  t        t                    r	 t        |       S | j                  t        t
                    r| S y # t        $ r Y y w xY wr   )r8   tupler   r   r   r   )r   s    r   _get_cachedr   b  sW    /0	$X.. 
		5!23	4 # 		s   
A 	AAc                 `    	 	 t        |       j                  }|dz  }|S # t        $ r d}Y w xY w)Nri      )rS   rV   rU   )rA   rW   s     r   
_calc_moder   n  s@    =$''
 	EMDK  s    --c                 \     	 d fd	}t         t         j                  }nd } ||        |S )Nc                     || j                   }n,| j                   |k7  rt        d| j                   d||       | |g|i |S )Nzloader for z cannot handle name)r   ImportError)selfr   argskwargsmethods       r   _check_name_wrapperz(_check_name.<locals>._check_name_wrapper  sR    <99DYY$!%D28<> >dD242622r   c           	          dD ]&  }t        ||      st        | |t        ||             ( | j                  j	                  |j                         y )N)
__module____name____qualname____doc__)hasattrsetattrgetattr__dict__update)newoldr`   s      r   _wrapz_check_name.<locals>._wrap  sH    P A3(C'#w*?@A LL-r   r   )
_bootstrapr   )r   r   r   s   `  r   _check_namer   z  s8    3   	. 

v&r   c                 .   	 | d d }|t         k7  r*d|d|}t        j                  d|       t        |fi |t	        |       dk  r&d|}t        j                  d|       t        |      t        | dd       }|dz  rd	|d
|}t        |fi ||S )Nr"   zbad magic number in z: {}   z(reached EOF while reading pyc header of    zinvalid flags z in )MAGIC_NUMBERr   _verbose_messager   r4   EOFErrorr.   )r-   r   exc_detailsmagicr   r   s         r   _classify_pycr     s     !HE(5)<##D'2'1[11
4y2~<THE##D'2w4!9%Eu}"5)4x8'1[11Lr   c                     	 t        | dd       |dz  k7  r'd|}t        j                  d|       t        |fi ||$t        | dd       |dz  k7  rt        d|fi |y y )Nr      r!   zbytecode is stale for r   r   )r.   r   r   r   )r-   source_mtimesource_sizer   r   r   s         r   _validate_timestamp_pycr     s    " d1Rj!lZ&?@*4(3##D'2'1[11tBr{#j(@A24(;K{KK 	B 	 r   c                 4    	 | dd |k7  rt        d|fi |y )Nr   r   z.hash in bytecode doesn't match hash of source )r   )r-   source_hashr   r   s       r   _validate_hash_pycr     s;      Abz[ =dXF

 	
 !r   c                     	 t        j                  |       }t        |t              r0t        j                  d|       |t        j                  ||       |S t        d|||      )Nzcode object from {!r}zNon-code object in r   rA   )	marshalloads
isinstance
_code_typer   r   _imp_fix_co_filenamer   )r-   r   r   r   codes        r   _compile_bytecoder     sf    -==D$
###$;]K"!!$4//@A#-9 	9r   c                 
   	 t        t              }|j                  t        d             |j                  t        |             |j                  t        |             |j                  t	        j
                  |              |S )Nr   	bytearrayr   extendr'   r   dumps)r   mtimer   r-   s       r   _code_to_timestamp_pycr     s[    1\"DKKQ KKU#$KK[)*KKd#$Kr   c                     	 t        t              }d|dz  z  }|j                  t        |             |j                  |       |j                  t	        j
                  |              |S )Nr3   r   )r   r   checkedr-   r   s        r   _code_to_hash_pycr     sT    ,\"D'Q,EKKU#$KKKKd#$Kr   c                     	 dd l }t        j                  |       j                  }|j	                  |      }t        j
                  d d      }|j                  | j                  |d               S )Nr   T)tokenizerp   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr   source_bytes_readlineencodingnewline_decoders        r   decode_sourcer    sd     KK5>>''(=>H33D$?O!!,"5"5hqk"BCCr   loadersubmodule_search_locationsc                   	 |!d}t        |d      r4	 |j                  |       }n!t        j                  |      }	 t        |      }t        j                  | ||      }d|_	        |?t               D ]1  \  }}|j                  t        |            s! || |      }||_         n y |t        u r(t        |d      r#	 |j                  |       }|rg |_        n||_        |j                   g k(  r+|r)t#        |      d   }|j                   j%                  |       |S # t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y ew xY w)Nz	<unknown>get_filenameoriginT
is_packager   )r   r  r   r   r   rg   rU   r   
ModuleSpec_set_fileattr_get_supported_file_loadersr8   r   r  	_POPULATEr
  r  rO   r=   )	r   locationr  r  specloader_classsuffixesr
  dirnames	            r   spec_from_file_locationr  !  sr   	  6>*!..t4 ::h'	$X.H   vh ?DD ~&A&C 	"L(  x1%dH5$		  "Y.6<(9#..t4
 68D3*D'&&",!(+A.G++227;K]    		8  s4   D D( ;D7 	D%$D%(	D43D47	EEc                    	 t        | t              sy t               }| j                  dd       }| j                  d|      }|||u ry |t	        d      t        |d|      }||d fv r6|||u rt        nt        } |d      t        j                  dt               |}|!||k7  rt        j                  dt               |S |S )N
__loader____spec__z+Module globals is missing a __spec__.loaderr  z-Module globals; __loader__ != __spec__.loader)
r   dictobjectgetr   r   AttributeErrorr}   r~   r   )module_globalsmissingr  r  spec_loaderexcs         r   _bless_my_loaderr   g  s     nd+hGd3Fj'2D~7? \JKK$'2Kwo%>$/7$:.
CCDD9	   f3;	  r   c                   X    e Zd Z	 dZdZexr dev Zed        Z	e
d        Ze
dd       Zy)	WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\Debugz_d.pydc                     	 t        j                  t         j                  |       S # t        $ r' t        j                  t         j                  |       cY S w xY wr   )winregOpenKeyHKEY_CURRENT_USERrU   HKEY_LOCAL_MACHINEr   s    r   _open_registryz$WindowsRegistryFinder._open_registry  sG    	B>>&":":C@@ 	B>>&";";SAA	Bs   #& -AAc                 8   | j                   r| j                  }n| j                  }|j                  |dt        j
                  d d z        }	 | j                  |      5 }t        j                  |d      }d d d        |S # 1 sw Y   S xY w# t        $ r Y y w xY w)Nz%d.%drx   )fullnamesys_versionr   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYformatr   version_infor(  r$  
QueryValuerU   )clsr*  registry_keyr   hkeyfilepaths         r   _search_registryz&WindowsRegistryFinder._search_registry  s    ??11L++L!!8.58H8H!8L.L " N	##C( 7D!,,T267 	7   		s0   B B 6B  B
B 
B 	BBNc                     | j                  |      }|y 	 t        |       t               D ]B  \  }}|j	                  t        |            s!t        j                  | |||      |      }|c S  y # t        $ r Y y w xY w)Nr  )r6  rS   rU   r  r8   r   r   spec_from_loader)r2  r*  rA   targetr5  r  r  r  s           r   	find_speczWindowsRegistryFinder.find_spec  s    ''1	x  !< = 	FH  x1!22839(H3M:B 3 D 	  		s   A1 1	A=<A=NN)r   r   r   r.  r-  _MS_WINDOWSEXTENSION_SUFFIXESr,  staticmethodr(  classmethodr6  r:  r   r   r   r"  r"    sg    H	  	'  A8/A#AKB B    r   r"  c                   &    e Zd Z	 d Zd Zd Zd Zy)_LoaderBasicsc                     	 t        | j                  |            d   }|j                  dd      d   }|j                  d      d   }|dk(  xr |dk7  S )Nr3   rd   r   rx   __init__)rO   r  r   r   )r   r*  r   filename_base	tail_names        r   r
  z_LoaderBasics.is_package  sa    	Nt00:;A> Q/2'',Q/	
*FyJ/FFr   c                      y r   r   r   r  s     r   create_modulez_LoaderBasics.create_module      8r   c                     	 | j                  |j                        }|t        d|j                  d      t        j	                  t
        ||j                         y )Nzcannot load module z when get_code() returns None)get_coder   r   r   _call_with_frames_removedexecr   )r   moduler   s      r   exec_modulez_LoaderBasics.exec_module  sV    !}}V__-< 3FOO3F G8 8 9 9,,T4Ir   c                 0    	 t         j                  | |      S r   )r   _load_module_shimr   r*  s     r   load_modulez_LoaderBasics.load_module  s    (++D(;;r   N)r   r   r   r
  rH  rO  rS  r   r   r   rA  rA    s    G9J<r   rA  c                   <    e Zd Zd Zd Zd Zd Zd ZdddZd	 Z	y
)SourceLoaderc                     	 t         r   )rU   r   rA   s     r   
path_mtimezSourceLoader.path_mtime  s    	
 r   c                 *    	 d| j                  |      iS )Nr   )rX  rW  s     r   
path_statszSourceLoader.path_stats  s    
	 .//r   c                 (    	 | j                  ||      S r   )set_data)r   r   
cache_pathr-   s       r   _cache_bytecodezSourceLoader._cache_bytecode  s    	 }}Z..r   c                      y r   r   )r   rA   r-   s      r   r\  zSourceLoader.set_data  s    	r   c                     	 | j                  |      }	 | j                  |      }t	        |      S # t        $ r}t        d|      |d }~ww xY w)Nz'source not available through get_data()r   )r  get_datarU   r   r  )r   r*  rA   r   r  s        r   
get_sourcezSourceLoader.get_source  s]    B  *	6==.L \**  	6G#+-256	6s   0 	AAAr   )	_optimizec                B    	 t         j                  t        ||dd|      S )NrM  T)dont_inheritr   )r   rL  compile)r   r-   rA   rc  s       r   source_to_codezSourceLoader.source_to_code  s0    	 33GT459I 4 O 	Or   c                 J   	 | j                  |      }d }d }d }d}d}	 t        |      }	 | j                  |      }	t        |	d         }	 | j	                  |      }
||d}	 t        |
||      }t        |
      dd  }|dz  dk7  }|rj|dz  dk7  }t        j                  d	k7  ra|st        j                  d
k(  rL| j	                  |      }t        j                  t        |      }t        |
|||       nt        |
||	d   ||       t        j                  d||       t        ||||      S # t         t"        f$ r Y n3w xY w# t$        $ r Y n$w xY w# t$        $ r Y nw xY w# t&        $ r d }Y nw xY w|| j	                  |      }| j)                  ||      }t        j                  d|       t*        j,                  sl|j|h|r*|t        j                  t        |      }t/        |||      }
nt1        ||t3        |            }
	 | j5                  |||
       |S # t&        $ r Y |S w xY w|S )NFTr   r   r   r3   r   rx   neveralwayssizez{} matches {})r   r   r   zcode object from {})r  r   rZ  r$   ra  r   
memoryviewr   check_hash_based_pycsr   _RAW_MAGIC_NUMBERr   r   r   r   r   r   r   rU   r   rg  r   dont_write_bytecoder   r   r4   r^  )r   r*  r   r   r   r   
hash_basedcheck_sourcer   str-   r   r   
bytes_datacode_objects                  r   rK  zSourceLoader.get_code%  s   	 ''1
3	J-k:M.J__[1  #2g;/(J==7D
 !) -#KJ -dHk J%/%5bc%:
%*S[A%5
%+04<1+<L $ : :g E!-!%!;!;x!G/3}}[/I.2.>.>$5$0/" !34h3>!@ 4 $ , "6
 ( + #33O]4?A0(?L=H J J (2 ?     # 	! M	!d ==5L)),D##$9;G''M,E(&"&"2"23D3?#AK(k<P-k<.1,.?A$$[-F  ' sY   E E 
D= !B!D( (D:9D:=	E	E		EEE)(E)>H 	H H N)
r   r   r   rX  rZ  r^  r\  rb  rg  rK  r   r   r   rU  rU    s,    0/+ 79 OSr   rU  c                   b     e Zd Z	 d Zd Zd Ze fd       Zed        Zd Z	ed        Z
 xZS )
FileLoaderc                 "    	 || _         || _        y r   r   )r   r*  rA   s      r   rC  zFileLoader.__init__  s    			r   c                 j    | j                   |j                   k(  xr | j                  |j                  k(  S r   	__class__r   r   others     r   __eq__zFileLoader.__eq__  ,    %//1 0/	1r   c                 X    t        | j                        t        | j                        z  S r   hashr   rA   r   s    r   __hash__zFileLoader.__hash__      DIIdii00r   c                 ,    	 t         t        |   |      S r   )superrv  rS  )r   r*  rz  s     r   rS  zFileLoader.load_module  s    	 Z28<<r   c                     	 | j                   S r   rR   rR  s     r   r  zFileLoader.get_filename      Hyyr   c                 0   	 t        | t        t        f      r8t        j                  t        |            5 }|j                         cd d d        S t        j                  |d      5 }|j                         cd d d        S # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr)r   rU  ExtensionFileLoaderrp   	open_coder   readrq   )r   rA   rv   s      r   ra  zFileLoader.get_data  s    5d\+>?@s4y) #Tyy{# # D#& #$yy{# ## ## #s   B &B B	Bc                     ddl m}  ||       S )Nr   )
FileReader)importlib.readersr  )r   rN  r  s      r   get_resource_readerzFileLoader.get_resource_reader  s    0$r   )r   r   r   rC  r}  r  r   rS  r  ra  r  __classcell__)rz  s   @r   rv  rv  {  sX    "11 	= 	=  #    r   rv  c                   &    e Zd Z	 d Zd ZdddZy)SourceFileLoaderc                 L    	 t        |      }|j                  |j                  dS )N)r   rk  )rS   st_mtimest_size)r   rA   rr  s      r   rZ  zSourceFileLoader.path_stats  s"    /bjj99r   c                 @    t        |      }| j                  |||      S )N_mode)r   r\  )r   r   r   r-   rW   s        r   r^  z SourceFileLoader._cache_bytecode  s!    +&}}]D}==r   ri   r  c                   	 t        |      \  }}g }|r8t        |      s-t        |      \  }}|j                  |       |rt        |      s-t        |      D ]$  }t	        ||      }	 t        j                  |       & 	 t        |||       t        j                  d|       y # t        $ r Y Wt        $ r"}t        j                  d||       Y d }~ y d }~ww xY w# t        $ r!}t        j                  d||       Y d }~y d }~ww xY w)Nzcould not create {!r}: {!r}zcreated {!r})rO   r^   r=   reversedrE   r   mkdirFileExistsErrorrU   r   r   rw   )	r   rA   r-   r  parentr   r?   rG   r  s	            r   r\  zSourceFileLoader.set_data  s   )&t,
[0&v.LFDd# [0 Z( 	D-F
		&!		-$e,''= #   ++,I,2C9  	-''(Et(+- -	-s6   'B#?#C #	C.C6CC	D$D  DN)r   r   r   rZ  r^  r\  r   r   r   r  r    s    H:
>
 -2 -r   r  c                       e Zd Z	 d Zd Zy)SourcelessFileLoaderc                     | j                  |      }| j                  |      }||d}t        |||       t        t	        |      dd  ||      S )Nr   r   )r   r   )r  ra  r   r   rl  )r   r*  rA   r-   r   s        r   rK  zSourcelessFileLoader.get_code  s_      *}}T" 
 	dHk2 tRS!
 	
r   c                      	 y r   r   rR  s     r   rb  zSourcelessFileLoader.get_source  s    5r   N)r   r   r   rK  rb  r   r   r   r  r    s    7
 r   r  c                   N    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
ed	        Zy
)r  c                      || _         || _        y r   r   )r   r   rA   s      r   rC  zExtensionFileLoader.__init__  s    		r   c                 j    | j                   |j                   k(  xr | j                  |j                  k(  S r   ry  r{  s     r   r}  zExtensionFileLoader.__eq__  r~  r   c                 X    t        | j                        t        | j                        z  S r   r  r  s    r   r  zExtensionFileLoader.__hash__  r  r   c                     	 t         j                  t        j                  |      }t         j	                  d|j
                  | j                         |S )Nz&extension module {!r} loaded from {!r})r   rL  r   create_dynamicr   r   rA   )r   r  rN  s      r   rH  z!ExtensionFileLoader.create_module  sC    655'##$LDII	/r   c                     	 t         j                  t        j                  |       t         j	                  d| j
                  | j                         y )Nz(extension module {!r} executed from {!r})r   rL  r   exec_dynamicr   r   rA   r   rN  s     r   rO  zExtensionFileLoader.exec_module  s9    ,,,T->->G##$NDII	/r   c                 f    	 t        | j                        d   t        fdt        D              S )Nr3   c              3   .   K   | ]  }d |z   k(    yw)rC  Nr   )rK   suffix	file_names     r   rL   z1ExtensionFileLoader.is_package.<locals>.<genexpr>  s#      5 
V 33 5s   )rO   rA   anyr=  )r   r*  r  s     @r   r
  zExtensionFileLoader.is_package  s3    ?		*1-	 5!35 5 	5r   c                      	 y r   r   rR  s     r   rK  zExtensionFileLoader.get_code  s    Mr   c                      	 y r   r   rR  s     r   rb  zExtensionFileLoader.get_source  s    Cr   c                     	 | j                   S r   rR   rR  s     r   r  z ExtensionFileLoader.get_filename"  r  r   N)r   r   r   rC  r}  r  rH  rO  r
  rK  rb  r   r  r   r   r   r  r    sC    11/5  r   r  c                   T    e Zd Z	 dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)_NamespacePathr   c                     || _         || _        t        | j                               | _        | j
                  | _        || _        y r   )_name_pathr   _get_parent_path_last_parent_path_epoch_last_epoch_path_finderr   r   rA   path_finders       r   rC  z_NamespacePath.__init__3  s:    

!&t'<'<'>!?;;'r   c                 V    	 | j                   j                  d      \  }}}|dk(  ry|dfS )Nrd   r   )r   rA   __path__)r  r   )r   r  dotmes       r   _find_parent_path_namesz&_NamespacePath._find_parent_path_names:  s6    L**//4R"9  z!!r   c                 b    | j                         \  }}t        t        j                  |   |      S r   )r  r   r   modules)r   parent_module_namepath_attr_names      r   r  z_NamespacePath._get_parent_pathD  s-    -1-I-I-K*Ns{{#56GGr   c                 Z   t        | j                               }|| j                  k7  s| j                  | j                  k7  r_| j                  | j                  |      }|)|j                  |j                  r|j                  | _	        || _        | j                  | _        | j                  S r   )
r   r  r  r  r  r  r  r  r  r  )r   parent_pathr  s      r   _recalculatez_NamespacePath._recalculateH  s    D1134$000DKK4CSCS4S$$TZZ=D DKK$722!%!@!@DJ%0D"#{{Dzzr   c                 4    t        | j                               S r   )iterr  r  s    r   __iter__z_NamespacePath.__iter__V  s    D%%'((r   c                 (    | j                         |   S r   r  )r   indexs     r   __getitem__z_NamespacePath.__getitem__Y  s      "5))r   c                 "    || j                   |<   y r   r  )r   r  rA   s      r   __setitem__z_NamespacePath.__setitem__\  s     

5r   c                 4    t        | j                               S r   )r4   r  r  s    r   __len__z_NamespacePath.__len___  s    4$$&''r   c                 "    d| j                   dS )Nz_NamespacePath()r  r  s    r   __repr__z_NamespacePath.__repr__b  s     a00r   c                 &    || j                         v S r   r  r   items     r   __contains__z_NamespacePath.__contains__e  s    t((***r   c                 :    | j                   j                  |       y r   )r  r=   r  s     r   r=   z_NamespacePath.appendh  s    

$r   N)r   r   r   r  rC  r  r  r  r  r  r  r  r  r  r=   r   r   r   r  r  (  sF     F("H)*!(1+ r   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
NamespaceLoaderc                 (    t        |||      | _        y r   )r  r  r  s       r   rC  zNamespaceLoader.__init__p  s    #D$<
r   c                      y)NTr   rR  s     r   r
  zNamespaceLoader.is_packages  s    r   c                      yNr   r   rR  s     r   rb  zNamespaceLoader.get_sourcev  s    r   c                      t        dddd      S )Nr   z<string>rM  T)re  )rf  rR  s     r   rK  zNamespaceLoader.get_codey  s    r:vDAAr   c                      y r   r   rG  s     r   rH  zNamespaceLoader.create_module|  rI  r   c                      y r   r   r  s     r   rO  zNamespaceLoader.exec_module  s    r   c                 p    	 t         j                  d| j                         t         j                  | |      S )Nz&namespace module loaded with path {!r})r   r   r  rQ  rR  s     r   rS  zNamespaceLoader.load_module  s6    	 	##$L$(JJ	0 ++D(;;r   c                 2    ddl m}  || j                        S )Nr   )NamespaceReader)r  r  r  )r   rN  r  s      r   r  z#NamespaceLoader.get_resource_reader  s    5tzz**r   N)r   r   r   rC  r
  rb  rK  rH  rO  rS  r  r   r   r   r  r  o  s+    =B9
<+r   r  c                   r    e Zd Z	 ed        Zed        Zed        Zedd       Zed	d       Z	ed        Z
y)

PathFinderc                     	 t        t        j                  j                               D ]A  \  } }|t	        |       st        j                  | = %t        |d      s2|j                          C t        xj                  dz  c_        y )Ninvalidate_cachesr3   )	listr   path_importer_cacheitemsra   r   r  r  r  )r   finders     r   r  zPathFinder.invalidate_caches  su    	C !8!8!>!>!@A 	+LD& ~[%6++D1!45((*	+ 	"r   c                     	 t         j                  *t         j                  st        j                  dt               t         j                  D ]  }	  ||       c S  y # t
        $ r Y w xY w)Nzsys.path_hooks is empty)r   
path_hooksr}   r~   ImportWarningr   )rA   hooks     r   _path_hookszPathFinder._path_hooks  s_    <>>%cnnNN4mDNN 	DDz!	   s   A	A('A(c                     	 |dk(  r	 t        j                         }	 t        j                  |   }|S # t        $ r Y y w xY w# t
        $ r( | j                  |      }|t        j                  |<   Y |S w xY wr  )r   r]   FileNotFoundErrorr   r  KeyErrorr  )r2  rA   r  s      r   _path_importer_cachezPathFinder._path_importer_cache  s    	 2:zz|
	3,,T2F  %    	3__T*F,2C##D)	3s   2 A 	>>-A21A2Nc                 <   	 g }|D ]v  }t        |t              s| j                  |      }|(|j                  ||      }|=|j                  |c S |j
                  }|t        d      |j                  |       x t        j                  |d       }||_        |S )Nzspec missing loader)
r   r   r  r:  r  r  r   r   r   r  )	r2  r*  rA   r9  namespace_pathentryr  r  portionss	            r   	_get_speczPathFinder._get_spec  s    M  	EeS)--e4F!''&9<;;*K::#%&;<<
 %%h/#	& ((48D.<D+Kr   c                     	 |t         j                  }| j                  |||      }|y |j                  4|j                  }|r%d |_        t        ||| j                        |_        |S y |S r   )r   rA   r  r  r  r	  r  )r2  r*  rA   r9  r  r  s         r   r:  zPathFinder.find_spec  sw    	 <88D}}XtV4<[[ !<<N #2@>[^[h[h2i/Kr   c                  4    	 ddl m}  |j                  | i |S )Nr   )MetadataPathFinder)importlib.metadatar  find_distributions)r   r   r  s      r   r  zPathFinder.find_distributions  s%    	 	:4!44dEfEEr   r   r;  )r   r   r   r>  r  r  r?  r  r  r:  r  r   r   r   r  r    s}    H# # 
 
  *  8  . 
F 
Fr   r  c                   D    e Zd Z	 d Zd Zd Zd	dZd Zed        Z	d Z
y)

FileFinderc                    	 g }|D ]  \  }|j                  fd|D               ! || _        |r|dk(  rt        j                         | _        nt        |      | _        d| _        t               | _        t               | _	        y )Nc              3   &   K   | ]  }|f 
 y wr   r   )rK   r  r  s     r   rL   z&FileFinder.__init__.<locals>.<genexpr>!  s     CFF+Cs   rd   r   )
r   _loadersr   r]   rA   rg   _path_mtimeset_path_cache_relaxed_path_cache)r   rA   loader_detailsloadersr  r  s        @r   rC  zFileFinder.__init__  s|    	  . 	DFHNNC(CC	Dts{

DI%d+DI5#&5 r   c                     	 d| _         y )Nr   )r  r  s    r   r  zFileFinder.invalidate_caches,  s    -r   c                 2     |||      }t        ||||      S )Nr  )r  )r   r  r*  rA   smslr9  r  s          r   r  zFileFinder._get_spec0  s&    h-&xfBFH 	Hr   Nc                    	 d}|j                  d      d   }	 t        | j                  xs t        j                               j
                  }|| j                  k7  r| j                          || _        t               r| j                  }|j                         }n| j                  }|}||v rit        | j                  |      }| j                  D ]9  \  }	}
d|	z   }t        ||      }t        |      s#| j!                  |
|||g|      c S  t#        |      }| j                  D ]a  \  }	}
	 t        | j                  ||	z         }t&        j)                  d|d       ||	z   |v s@t        |      sL| j!                  |
||d |      c S  |r6t&        j)                  d       t&        j+                  |d       }|g|_        |S y # t        $ r d}Y w xY w# t$        $ r Y  y w xY w)	NFrd   rx   r   rC  z	trying {})	verbosityzpossible namespace for {})r   rS   rA   r   r]   r  rU   r  _fill_cacher   r  r   r  rE   r  r[   r  r^   r   r   r   r  r  )r   r*  r9  is_namespacetail_moduler   cachecache_module	base_pathr  r  init_filename	full_pathr  s                 r   r:  zFileFinder.find_spec5  s   	 ))#.q1	tyy8CJJL9BBE D$$$$D=,,E&,,.L$$E&L5 "499k:I(, 6$ *V 3&y-@		*>>,)i[Z`aa	6  +95$(MM 		8 FL&tyy+2FG	 ''Y!'Lf$-	*>>,)*.8 8		8 ''(CYO((48D/8kD+KQ  	E	8  s#   5F? )G?GG	GGc                 V   	 | j                   }	 t        j                  |xs t        j                               }t        j                  j                  d      st        |      | _        nXt               }|D ]B  }|j                  d      \  }}}|r| d|j                          }n|}|j                  |       D || _        t        j                  j                  t              r$|D 	ch c]  }	|	j                          c}	| _        y y # t        t
        t        f$ r g }Y w xY wc c}	w )Nr   rd   )rA   r   listdirr]   r  PermissionErrorNotADirectoryErrorr   r   r   r  r  r   r   addr   r  )
r   rA   contentslower_suffix_contentsr  r   r  r  new_namefns
             r   r  zFileFinder._fill_cacheh  s   Ryy	{{4#73::<8H ||&&u-"8}D %(E!  4$(NN3$7!c6"&q(89H#H%))(34  5D<<""#>?=E'Fr
'FD$ @/ "?4FG 	 H	0 (Gs   +D
 )D&
D#"D#c                      	  fd}|S )Nc                 H    	 t        |       st        d|        | g S )Nzonly directories are supportedrR   )r^   r   )rA   r2  r  s    r   path_hook_for_FileFinderz6FileFinder.path_hook.<locals>.path_hook_for_FileFinder  s,    ?t$!"BNNt-n--r   r   )r2  r  r+  s   `` r   	path_hookzFileFinder.path_hook  s    		. ('r   c                 "    d| j                   dS )NzFileFinder(r  rR   r  s    r   r  zFileFinder.__repr__  s    TYYM++r   r   )r   r   r   rC  r  r  r:  r  r?  r,  r  r   r   r   r	  r	    s<    )"H
1fG> ( (",r   r	  c                 2   | j                  d      }| j                  d      }|s-|r|j                  }n||k(  rt        ||      }nt        ||      }|s t	        |||      }|rt        |      |_        	 || d<   || d<   || d<   || d<   y # t        $ r Y y w xY w)Nr  r  )r  __file__
__cached__)r  r  r  r  r  rg   cached	Exception)nsr   pathname	cpathnamer  r  s         r   _fix_up_moduler6    s    VVL!F66*D[[F")$9F%dH5F&tXfE'	2DK:!<!:$< s   5B
 
	BBc                  r    	 t         t        j                         f} t        t        f}t
        t        f}| ||gS r   )r  r   extension_suffixesr  r   r  r   )
extensionssourcebytecodes      r   r  r    s>     %d&=&=&??J.F#%66H))r   c                     | a y r   )r   )_bootstrap_modules    r   _set_bootstrap_moduler>    s    "Jr   c                     	 t        |        t               }t        j                  j	                  t        j                  | g       t        j                  j                  t               y r   )
r>  r  r   r  r   r	  r,  	meta_pathr=   r  )r=  supported_loaderss     r   _installrB    sJ    3+,35NN://1BCDEMM$r   )ri   r   )NNN)r   r   )T)Ur   r   rp   r   r}   r   r   r<  ntr   r$  posixr:   r;   r   r7   r>   _pathseps_with_colonr   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r   r'   r.   r1   rE   rO   rS   rY   r[   r^   ra   rg   rw   type__code__r   r%   r   r$   r+   rn  r   r   r   r=   r8  r=  r   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r"  rA  rU  rv  r  r  r  r  r  _NamespaceLoaderr  r	  r6  r  r>  rB  )ss   0r   <module>rM     s  , 
  
 
   ||w& SkOeO 1'''/*)89A!A39  '- #(: % E"E!F    7
*
* *<?"2.
. R0
, -(()
n q(+g5NN<: '6",T,,. H 8I I 5C0 C0L%@PG&		>BL8
0
9	D H	C47@CL-d0 0f< <<N= Nb/  / d*-z< *-Z:} 22*m 2jA  A N!+ !+J # 
vF vFrH, H,Z2*#
%m4 :s   "G%