
     -Ph6                       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Zej        rNd dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ eeedef         f         Zeee
j         e         f         Z!ne"Zej#        dk    r	d d	l$m%Z%m&Z& n.ej#        d
k    r	d d	lm%Z%m&Z& n G d d          Z% G d d          Z&dZ'dZ( G d de%          Z) G d de%          Z* G d de&          Z+ G d dej,        j-                  Z- G d dej,        j.                  Z. G d dej,        j/                  Z/d ej,        j0        D             d ej,        j1        D             z   d ej,        j2        D             z   Z3dCd)Z4 G d* de          Z5dDd0Z6dEd3Z7dFd6Z8 G d7 d8ej9        j:                  Z; G d9 d:ej9        j<                  Z=dGdBZ>dS )H    )annotationsN)SequenceSet)
ModuleType)AnyDictIteratorListOptionalTupleUnion)BufferNode)      )TraversableTraversableResources)r   	   c                      e Zd ZdS )r   N__name__
__module____qualname__     Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonpy/_editable.pyr   r   )           r   r   c                      e Zd ZdS )r   Nr   r   r   r   r   r   +   r   r   r   MESONPY_EDITABLE_SKIPMESONPY_EDITABLE_VERBOSEc                  n    e Zd ZddZedd            ZddZddZdd
Zd Z	ddZ
ddZddZdd dZdS )!MesonpyOrphannamestrc                    || _         d S N_nameselfr#   s     r   __init__zMesonpyOrphan.__init__4       


r   returnc                    | j         S r&   r'   r*   s    r   r#   zMesonpyOrphan.name7   
    zr   boolc                    dS NFr   r/   s    r   is_dirzMesonpyOrphan.is_dir;       ur   c                    dS r3   r   r/   s    r   is_filezMesonpyOrphan.is_file>   r5   r   Iterator[Traversable]c                    t                      r&   FileNotFoundErrorr/   s    r   iterdirzMesonpyOrphan.iterdirA       !!!r   c                    t                      r&   r:   r*   argskwargss      r   openzMesonpyOrphan.openD   r=   r   descendantsPathStrr   c                    |s| S t          j        |d                                       d          d         }t          |          S )N/)osfspathsplitr"   )r*   rC   r#   s      r   joinpathzMesonpyOrphan.joinpathG   sC     	KyR))//44R8T"""r   childc                ,    |                      |          S r&   rK   r*   rL   s     r   __truediv__zMesonpyOrphan.__truediv__M       }}U###r   bytesc                    t                      r&   r:   r/   s    r   
read_byteszMesonpyOrphan.read_bytesP   r=   r   NencodingOptional[str]c                    t                      r&   r:   r*   rU   s     r   	read_textzMesonpyOrphan.read_textS   r=   r   )r#   r$   r-   r$   r-   r1   r-   r8   rC   rD   r-   r   rL   rD   r-   r   r-   rR   r&   rU   rV   r-   r$   )r   r   r   r+   propertyr#   r4   r7   r<   rB   rK   rP   rT   rY   r   r   r   r"   r"   3   s               X      " " " "" " "# # # #$ $ $ $" " " "" " " " " " "r   r"   c                      e Zd ZddZedd            Zd d	Zd d
Zd!dZd Z	e
d"d            Zd#dZd$dZd%dZd&d'dZdS )(MesonpyTraversabler#   r$   treer   c                "    || _         || _        d S r&   r(   _treer*   r#   rd   s      r   r+   zMesonpyTraversable.__init__X       



r   r-   c                    | j         S r&   r'   r/   s    r   r#   zMesonpyTraversable.name\   r0   r   r1   c                    dS )NTr   r/   s    r   r4   zMesonpyTraversable.is_dir`   s    tr   c                    dS r3   r   r/   s    r   r7   zMesonpyTraversable.is_filec   r5   r   r8   c              #     K   | j                                         D ]@\  }}t          |t                    rt	          ||          nt          j        |          V  Ad S r&   )rg   items
isinstancedictrc   pathlibPath)r*   r#   nodes      r   r<   zMesonpyTraversable.iterdirf   sp      ***,, 	c 	cJD$4>tT4J4Jb$T4000PWP\]aPbPbbbbb	c 	cr   c                    t                      r&   IsADirectoryErrorr?   s      r   rB   zMesonpyTraversable.openj   r=   r   namesTuple[PathStr, ...]Iterator[str]c              #  n   K   | D ]/}t          j        |                              d          E d {V  0d S )NrG   )rH   rI   rJ   )rw   r#   s     r   _flattenzMesonpyTraversable._flattenm   sP       	2 	2Dy,,S1111111111	2 	2r   rC   rD   r   c                p   |s| S |                      |          }t          |          }| j                            |          }t	          |t
                    r t          ||          j        | S t	          |t                    r t          j
        |          j        | S  t          |          j        | S r&   )r{   nextrg   getro   rp   rc   rK   r$   rq   rr   r"   )r*   rC   rw   r#   rs   s        r   rK   zMesonpyTraversable.joinpathr   s     	Kk**E{{z~~d##dD!! 	C:%dD11:EBBdC   	7.7<%%.66+}T""+U33r   rL   c                ,    |                      |          S r&   rN   rO   s     r   rP   zMesonpyTraversable.__truediv__~   rQ   r   rR   c                    t                      r&   ru   r/   s    r   rT   zMesonpyTraversable.read_bytes   r=   r   NrU   rV   c                    t                      r&   ru   rX   s     r   rY   zMesonpyTraversable.read_text   r=   r   r#   r$   rd   r   rZ   r[   r\   )rw   rx   r-   ry   r]   r^   r_   r&   r`   )r   r   r   r+   ra   r#   r4   r7   r<   rB   staticmethodr{   rK   rP   rT   rY   r   r   r   rc   rc   W   s              X      c c c c" " " 2 2 2 \2
4 
4 
4 
4$ $ $ $" " " "" " " " " " "r   rc   c                      e Zd Zd
dZddZd	S )MesonpyReaderr#   r$   rd   r   c                "    || _         || _        d S r&   rf   rh   s      r   r+   zMesonpyReader.__init__   ri   r   r-   r   c                6    t          | j        | j                  S r&   )rc   r(   rg   r/   s    r   fileszMesonpyReader.files   s    !$*dj999r   Nr   )r-   r   )r   r   r   r+   r   r   r   r   r   r      s<           : : : : : :r   r   c                  (     e Zd Zd
 fdZdd	Z xZS )ExtensionFileLoaderr#   r$   pathrd   r   c                Z    t                                          ||           || _        d S r&   superr+   rg   r*   r#   r   rd   	__class__s       r   r+   zExtensionFileLoader.__init__   (    t$$$


r   r-   r   c                ,    t          || j                  S r&   r   rg   r)   s     r   get_resource_readerz'ExtensionFileLoader.get_resource_reader       T4:...r   r#   r$   r   r$   rd   r   r#   r$   r-   r   r   r   r   r+   r   __classcell__r   s   @r   r   r      Q             / / / / / / / /r   r   c                  6     e Zd Zd fdZddddZddZ xZS )SourceFileLoaderr#   r$   r   rd   r   c                Z    t                                          ||           || _        d S r&   r   r   s       r   r+   zSourceFileLoader.__init__   r   r   .)_modeUnion[bytes, str]datar   r   intr-   Nonec                   d S r&   r   )r*   r   r   r   s       r   set_datazSourceFileLoader.set_data   s    r   r   c                ,    t          || j                  S r&   r   r)   s     r   r   z$SourceFileLoader.get_resource_reader   r   r   r   )r   r   r   r   r   r   r-   r   r   )r   r   r   r+   r   r   r   r   s   @r   r   r      sv              OR      / / / / / / / /r   r   c                  (     e Zd Zd
 fdZdd	Z xZS )SourcelessFileLoaderr#   r$   r   rd   r   c                Z    t                                          ||           || _        d S r&   r   r   s       r   r+   zSourcelessFileLoader.__init__   r   r   r-   r   c                ,    t          || j                  S r&   r   r)   s     r   r   z(SourcelessFileLoader.get_resource_reader   r   r   r   r   r   r   s   @r   r   r      r   r   r   c                     g | ]}t           |fS r   )r   .0ss     r   
<listcomp>r      s    NNN!1NNNr   c                     g | ]}t           |fS r   )r   r   s     r   r   r      s    HHHqHHHr   c                     g | ]}t           |fS r   )r   r   s     r   r   r      s    NNN1ANNNr   clstyper#   r$   r   rd   Optional[Node]r-   importlib.machinery.ModuleSpecc                     | |||          }t           j                            |||          }d|_        |                    |          r+t
          j                            t          |          g|_	        |S )N)originT)
	importlib	machinery
ModuleSpechas_location
is_packagerH   r   join__file__submodule_search_locations)r   r#   r   rd   loaderspecs         r   build_module_specr      sq    StT""F))$t)DDDD I+-7<<$+G+G*H'Kr   c                  2    e Zd ZdZddZdd
ZddZddZdS )r   z2Tree structure to store a virtual filesystem view.keyr$   r-   c                ,    t                      x}| |<   |S r&   )r   )r*   r   values      r   __missing__zNode.__missing__   s     FF"S	r   Union[str, Tuple[str, ...]]r   Union[Node, str]r   c                    | }t          |t                    r5|d d         D ]"}t          j        t          ||                   }#|d         }t
                              |||           d S NrF   )ro   tupletypingcastr   rp   __setitem__)r*   r   r   rs   ks        r   r   zNode.__setitem__   sn    c5!! 	"X 2 2{4a11b'CsE*****r   c                    | }t          |t                    r5|d d         D ]"}t          j        t          ||                   }#|d         }t
                              ||          S r   )ro   r   r   r   r   rp   __getitem__)r*   r   rs   r   s       r   r   zNode.__getitem__   sf    c5!! 	"X 2 2{4a11b'Cc***r   Optional[Union[Node, str]]c                   | }t          |t                    rO|d d         D ]<}t                              ||          }| d S t	          j        t          |          }=|d         }t                              ||          S r   )ro   r   rp   r~   r   r   r   )r*   r   rs   r   vs        r   r~   zNode.get   s    c5!! 	"X , ,HHT1%%944{4++b'Cxxc"""r   N)r   r$   r-   r   )r   r   r   r   r-   r   )r   r   r-   r   )r   r   r-   r   )r   r   r   __doc__r   r   r   r~   r   r   r   r   r      sj        <<   + + + ++ + + +	# 	# 	# 	# 	# 	#r   srcexclude_filesSet[str]exclude_dirsry   c              #    K   t          j        |           D ]\  }}}|                                D ]o}t           j                            ||          }t           j                            ||           }||v r|                    |           |                                 pt          |          D ]K}t           j                            ||          }	t           j                            |	|           }||v rG|V  Ld S r&   )	rH   walkcopyr   r   relpathremovesortsorted)
r   r   r   rootdirnames	filenamesr#   dirsrcr   filesrcs
             r   r   r      s      %'WS\\  !h	MMOO 	 	DW\\$--Fgoofc22G,&&%%%MMOOOO9%% 	 	Dgll4..Ggoogs33G-''MMMM	 r   install_planDict[str, Dict[str, Any]]c           	        t                      }|                                 D ]0\  }}|                                D ]\  }}t          j        |d                   }|j        d         dv r|dk    s%|dk    rt
          j                            |          rd |                    dg           D             }d |                    d	g           D             }t          |||          D ]T}	t
          j        
                    ||	          |g |j        d
d          |	                    t
          j                  R <   U|||j        d
d          <   2|S )Ndestinationr   >   {py_platlib}{py_purelib}install_subdirstargetsc                L    h | ]!}t           j                            |          "S r   rH   r   normpathr   xs     r   	<setcomp>zcollect.<locals>.<setcomp>   s(    $b$b$bQRW%5%5a%8%8$b$b$br   r   c                L    h | ]!}t           j                            |          "S r   r   r   s     r   r   zcollect.<locals>.<setcomp>   s(    #`#`#`ABG$4$4Q$7$7#`#`#`r   r      )r   rn   rq   rr   partsrH   r   isdirr~   r   r   rJ   sep)
r   rd   r   r   r   targetr   r   r   entrys
             r   collectr      sd   66D!'')) 
/ 
/	T::<< 		/ 		/KC<} 566Dz!} @@@+++si/?/?BGMMRUDVDV/?$b$b&**_^`BaBa$b$b$bM#`#`N\^A_A_#`#`#`L!%c=,!G!G a aHJUXZ_H`H`Dtz!""~DBF0C0CDDEEa ,/DABB(		/ Kr   fullname(Optional[importlib.machinery.ModuleSpec]c                   d}|                      d          }|                    t          |                    }t          |t                    rPt
          D ]F\  }}|                    d|z             }t          |t                    rt          || ||          c S Gd}t
          D ]Y\  }}|                    g |d d         |d         |z   R           }t          |t                    rt          || |d           c S Z|r}t          j	        
                    | d d          }t          |j        t                    sJ |j                            t          j                            t"          |                      |S d S )NF.r+   TrF   )r   )rJ   r~   r   ro   r   LOADERSr$   r   r   r   r   r   listappendrH   r   r   r   )	r   rd   	namespacer   packager   suffixr   r   s	            r   	find_specr    s   INN3E hhuU||$$G'4   % 	 	NFF++j6122C#s## I(3HHHHHI I " B Bhh8ss8U2Y%78899c3 	B$VXsDAAAAA	B  "--h-NN$94@@@@@'..rw||Hh/O/OPPP4r   c                  t    e Zd ZdddZd dZ	 	 d!d"dZd#dZ ej        d          d$d            Z	d%dZ
dS )&MesonpyMetaFinderFr  r$   rw   r   r   cmd	List[str]verboser1   c                Z    || _         || _        || _        || _        || _        g | _        d S r&   )r(   _top_level_modules_build_path
_build_cmd_verbose_loaders)r*   r  rw   r   r
  r  s         r   r+   zMesonpyMetaFinder.__init__"  s2    
"'02r   r-   c                @    | j         j         d| j        d| j        dS )N(z, ))r   r   r(   r  r/   s    r   __repr__zMesonpyMetaFinder.__repr__*  s+    .)QQDJQQD<LQQQQr   Nr   %Optional[Sequence[Union[bytes, str]]]r   Optional[ModuleType]r   c                *   |                     dd          d         | j        vrd S | j        t          j                            t          d                               t          j                  v rd S |                                 }t          ||          S )Nr   r   r    )
rJ   r  r  rH   environr~   MARKERpathsep_rebuildr  )r*   r   r   r   rd   s        r   r  zMesonpyMetaFinder.find_spec-  sz     >>#q!!!$D,CCC4rz~~fb99??
KKKK4}}4(((r   envdict[str, str]c                   t           j        dk    r| j        d                             d          rTt	          j        | j        d                             dd          d                   dgz   }| j        d d         d|gz   }n| j        dgz   }n| j        dgz   }t          j        || j	        |d	          }d
|j
        vod|j
        vS )Nwin32rF   z--ninja-args==r   z-nz--ninja-args=-nT)cwdr  capture_outputs   ninja: no work to do.s   samu: nothing to do)sysplatformr  
startswithastliteral_evalrJ   
subprocessrunr  stdout)r*   r  
ninja_argsdry_run_build_cmdps        r   _work_to_dozMesonpyMetaFinder._work_to_do:  s    <7""r"--o>> J -dob.A.G.GQ.O.OPQ.RSSW[V\\
$(OCRC$8<ZJ<Z<Z;[$[!!$(O7H6I$I!! $4& 8 N,$2B\`aaa'qx7b<RZ[Zb<bbr   r   )maxsizer   c                   	 t           j                                        }t           j                            |                    t          d          | j        f          |t          <   | j        s(t          |                    t          d                    rn|                     |          rXd                    | j                  }t          d| j         d| d           t          j        | j        | j        |d           n-t          j        | j        | j        |t          j        d           n0# t          j        $ r}t'          d	| j         d
          |d }~ww xY wt           j                            | j        dd          }t+          |dd          5 }t-          j        |          }d d d            n# 1 swxY w Y   t1          |          S )Nr   zmeson-python: building z: T)flush)r$  r  check)r$  r  r-  r6  zre-building the z+ meson-python editable wheel package failedz
meson-infozintro-install_plan.jsonrutf8)rU   )rH   r  r   r  r   r~   r  r  r  r1   VERBOSEr1  r  printr(   r+  r,  DEVNULLCalledProcessErrorImportErrorr   rB   jsonloadr   )r*   r  build_commandexcinstall_plan_pathfr   s          r   r  zMesonpyMetaFinder._rebuildI  s   	s *//##C*//37762+>+>@P*QRRCK} vSWWWb%9%9 : : v##C(( _$'HHT_$=$=MQDJQQ-QQY]^^^^N4?8HcY]^^^^tD4D#V`Vhptuuuu, 	s 	s 	shhhhiiorr	s GLL)9<Ibcc#S6::: 	(a9Q<<L	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(|$$$s*   D/D2 2EEEF;;F?F?MesonpyPathFinderc                   t           j        r*|                    t           j        t           j                   |                    t           j                  \  }}}|t
          k    rm|                                 }|                    t          |	                    d                              }t          |t                    rt          |          S t          )Nr   )rH   altsepreplacer   
rpartitionr   r  r~   r   rJ   ro   r   rD  r=  )r*   r   _r   rd   rs   s         r   
_path_hookzMesonpyMetaFinder._path_hookb  s    9 	,LLBF+++rv..a8==??D88E#))C..1122D$%% /(...r   )F)
r  r$   rw   r   r   r$   r
  r  r  r1   rZ   )NN)r   r$   r   r  r   r  r-   r   )r  r   r-   r1   )r-   r   )r   r$   r-   rD  )r   r   r   r+   r  r  r1  	functools	lru_cacher  rJ  r   r   r   r	  r	  !  s        3 3 3 3 3R R R R ;?+/	) ) ) ) )c c c c Y###% % % $#%0	 	 	 	 	 	r   r	  c                  (    e Zd ZddZdddZddZdS )rD  rd   r   c                    || _         d S r&   )rg   )r*   rd   s     r   r+   zMesonpyPathFinder.__init__o  r,   r   Nr   r$   r   r  r-   r   c                ,    t          || j                  S r&   )r  rg   )r*   r   r   s      r   r  zMesonpyPathFinder.find_specr  s    4:...r   prefixIterator[Tuple[str, bool]]c              #    K   t                      }| j                                        D ]\  }}t          j        |          }|dk    s||v r$t          |t                    r[|}t          D ]P\  }}|                    d|z             }t          |t                    r|
                    |           ||z   dfV  Q|r"d|vr|
                    |           ||z   dfV  d S )Nr+   Tr   F)setrg   rn   inspectgetmodulenamero   r   r  r~   r$   add)	r*   rP  yieldedr#   rs   modnamerI  r  r   s	            r   iter_moduleszMesonpyPathFinder.iter_modulesu  s     %%***,, 	. 	.JD$+D11G*$$7(:(:$%% 	.!( 5 5IAv((:#677C!#s++ 5G,,,$w.4444	5
  .S//G$$$w&----	. 	.r   )rd   r   r&   )r   r$   r   r  r-   r   )rP  r$   r-   rQ  )r   r   r   r+   r  rY  r   r   r   rD  rD  n  sU           / / / / /. . . . . .r   rD  r  rw   r
  r  r  r1   r   c                    t          | ||||          }t          j                            d|           t          j                            d|j                   d S )Nr   )r	  r&  	meta_pathinsert
path_hooksrJ  )r  rw   r   r
  r  finders         r   installr_    sP    wtS'BBFMF###N!V./////r   )
r   r   r#   r$   r   r$   rd   r   r-   r   )r   r$   r   r   r   r   r-   ry   )r   r   r-   r   )r   r$   rd   r   r-   r   )r  r$   rw   r   r   r$   r
  r  r  r1   r-   r   )?
__future__r   r)  rK  importlib.abcr   importlib.machineryimportlib.utilrT  r>  rH   rq   r+  r&  r   TYPE_CHECKINGcollections.abcr   r   typesr   r   r   r	   r
   r   r   r   typing_extensionsr   r$   NodeBasePathLikerD   rp   version_infoimportlib.resources.abcr   r   r  r9  r"   rc   r   r   r   r   r   EXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXESr  r   r   r   r   r  abcMetaPathFinderr	  PathEntryFinderrD  r_  r   r   r   <module>rr     sb   # " " " " " 



                   				      



  
 
--------      HHHHHHHHHHHHHHHHHH((((((Cvs{++,HCS))*GGH wIIIIIIIII?????????               
!
$!" !" !" !" !"K !" !" !"H." ." ." ." ." ." ." ."b: : : : :( : : :/ / / / /)-A / / /
/ 
/ 
/ 
/ 
/y*; 
/ 
/ 
// / / / /9.C / / / ONy':'MNNNHHI$7$GHHHINN	(;(MNNNO     #  #  #  #  #8  #  #  #F   "       <J J J J J	4 J J JZ. . . . .	5 . . .20 0 0 0 0 0r   