Ë
    pPêj¶  ã                  ó¾   — d Z 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	m
Z
mZ ddlmZ  G d„ d«      Zdd„Zdd	„Z G d
„ de«      Zdd„Zdd„Z G d„ d«      Zy)zBasic introspection of modules.é    )ÚannotationsN)ÚQueueÚget_context)Ú
ModuleTypec                  ó<   — e Zd Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚModulePropertiesNc                ó`   — || _         || _        || _        || _        || _        |xs g | _        y ©N©ÚnameÚfileÚpathÚallÚis_c_moduleÚsubpackages)Úselfr   r   r   r   r   r   s          úW/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/moduleinspect.pyÚ__init__zModuleProperties.__init__   s5   € ð ˆŒ	ØˆŒ	ØˆŒ	ØˆŒØ&ˆÔØ&Ò,¨"ˆÕó    )Ú NNNFN)r   Ústrr   ú
str | Noner   úlist[str] | Noner   r   r   Úboolr   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s_   „ ð ØØ!%Ø $Ø!Ø(,ð-àð-ð ð-ð ð	-ð
 ð-ð ð-ð &ð-ð 
ô-r   r   c                óœ   — | j                   j                  d«      €yt        j                  j	                  | j                   d   «      d   dv S )NÚ__file__Téÿÿÿÿ)z.soz.pydz.dll)Ú__dict__ÚgetÚosr   Úsplitext)Úmodules    r   r   r   "   sE   € Ø‡�×Ñ˜:Ó&Ð.ð Ü�7‰7×Ñ˜FŸO™O¨JÑ7Ó8¸Ñ<Ð@WÐWÐWr   c                óˆ   — t        | xr6 | j                  d«      xr# t        j                  j	                  | d d «       «      S )Nz.pycr#   )r   Úendswithr&   r   Úexists)r   s    r   Úis_pyc_onlyr,   *   s6   € Ü�ÒP˜Ÿ™ vÓ.ÒP´r·w±w·~±~ÀdÈ3ÈBÀiÓ7PÐ3PÓQÐQr   c                  ó   — e Zd Zy)ÚInspectErrorN)r   r   r   r    r   r   r.   r.   .   s   „ Ør   r.   c                óö  — 	 t        j                  | «      }t        |d| «      }t        |dd«      }t        |dd«      }t        |t        «      sd}t        |dd«      }|�	 t        |«      }t        |«      }|€q|rlt        j                  |«      D ��cg c]K  \  }}t        j                  |«      r1|j                  |j                  dz   |z   k(  r|j                  dz   |z   ‘ŒM }	}}n@g }	n=t        j                  ||j                  dz   d„ ¬«      }
|
D ���cg c]  \  }}}|‘Œ
 }	}}}t!        |||||	¬	«      S # t        $ r}t        t	        |«      «      |‚d}~ww xY w# t        $ r d}Y Œÿw xY wc c}}w c c}}}w )
zDUse runtime introspection to get information about a module/package.Nr   r"   Ú__path__Ú__all__ú.c                 ó   — y r
   r    )Úrs    r   ú<lambda>z(get_package_properties.<locals>.<lambda>U   s   � r   )ÚprefixÚonerrorr   )Ú	importlibÚimport_moduleÚBaseExceptionr.   r   ÚgetattrÚ
isinstanceÚlistÚ	Exceptionr   ÚinspectÚ
getmembersÚismoduler   ÚpkgutilÚwalk_packagesr   )Ú
package_idÚpackageÚer   r   r   Úpkg_allÚis_cÚvalr   Úall_packagesÚimporterÚqualified_nameÚispkgs                 r   Úget_package_propertiesrN   2   s›  € ð*Ü×)Ñ)¨*Ó5ˆô �7˜J¨
Ó3€DÜ�7˜J¨Ó-€DÜ$ W¨j¸$Ó?€DÜ�dœDÔ!ØˆÜ�g˜y¨$Ó/€GØÐð	Ü˜7“mˆGô �wÓ€Dà€|ñ ô
 ")×!3Ñ!3°GÓ!<÷á�D˜#Ü×#Ñ# CÔ(¨S¯\©\¸W×=MÑ=MÐPSÑ=SÐVZÑ=ZÒ-Zð × Ñ  3Ñ&¨Ó-ðˆKò ð ‰Kä×,Ñ,Ø˜×)Ñ)¨CÑ/¹ô
ˆð NZ×ZÐZÑ*I¨(°NÀE’~ÐZˆÒZÜØ˜ 4¨WÀ$ÐT_ôð øôE ò *Üœ3˜q›6Ó"¨Ð)ûð*ûô ò 	ØŠGð	üóùô [s6   ‚D7 Á E ÂAE.ÄE4Ä7	EÅ EÅEÅE+Å*E+c                óÖ   — |t         _        	 | j                  «       }	 t        |«      }|j                  |«       Œ.# t        $ r$}|j                  t        |«      «       Y d}~ŒWd}~ww xY w)z0The main loop of a worker introspection process.N)Úsysr   r%   rN   r.   Úputr   )ÚtasksÚresultsÚsys_pathÚmodÚproprF   s         r   ÚworkerrW   ]   s^   € à„C„HØ
Ø�i‰i‹kˆð	Ü)¨#Ó.ˆDð 	�‰�DÔð øô ò 	Ø�K‰Kœ˜A›ÔÜûð	ús   ž; »	A(ÁA#Á#A(c                  óH   — e Zd ZdZd
d„Zd
d„Zd
d„Zdd„Zdd„Zdd„Z	dd„Z
y	)ÚModuleInspecta9  Perform runtime introspection of modules in a separate process.

    Reuse the process for multiple modules for efficiency. However, if there is an
    error, retry using a fresh process to avoid cross-contamination of state between
    modules.

    We use a separate process to isolate us from many side effects. For example, the
    import of a module may kill the current process, and we want to recover from that.

    Always use in a with statement for proper clean-up:

      with ModuleInspect() as m:
          p = m.get_package_properties('urllib.parse')
    c                ó$   — | j                  «        y r
   )Ú_start©r   s    r   r   zModuleInspect.__init__z   s   € Ø�‰�r   c                óp  — t         j                  dk(  rt        d«      }nt        d«      }|j                  «       | _        |j                  «       | _        |j                  t        | j                  | j
                  t         j                  f¬«      | _	        | j                  j                  «        d| _        y )NÚlinuxÚ
forkserverÚspawn)ÚtargetÚargsr   )rP   Úplatformr   r   rR   rS   ÚProcessrW   r   ÚprocÚstartÚcounter)r   Úctxs     r   r[   zModuleInspect._start}   sx   € Ü�<‰<˜7Ò"Ü˜lÓ+‰Cä˜gÓ&ˆCØ!$§¡£ˆŒ
Ø69·i±i³kˆŒØ—K‘K¤v°T·Z±ZÀÇÁÌsÏxÉxÐ4X�KÓYˆŒ	Ø�	‰	�‰ÔØˆ�r   c                ó8   — | j                   j                  «        y)zFree any resources used.N)re   Ú	terminater\   s    r   ÚclosezModuleInspect.closeˆ   s   € à�	‰	×ÑÕr   c                ó|  — | j                   j                  |«       | j                  «       }|€| j                  «        t	        d|›�«      ‚t        |t        «      rK| j                  dkD  r1| j                  «        | j                  «        | j                  |«      S t	        |«      ‚| xj                  dz  c_        |S )z�Return some properties of a module/package using runtime introspection.

        Raise InspectError if the target couldn't be imported.
        zProcess died when importing r   é   )
rR   rQ   Ú_get_from_queuer[   r.   r<   r   rg   rk   rN   )r   rD   Úress      r   rN   z$ModuleInspect.get_package_propertiesŒ   sœ   € ð
 	�
‰
�‰�zÔ"Ø×"Ñ"Ó$ˆØˆ;à�K‰KŒMÜÐ!=¸j¸^ÐLÓMÐMÜ�cœ3Ôà�|‰|˜aÒð —
‘
”Ø—‘”Ø×2Ñ2°:Ó>Ð>Ü˜sÓ#Ð#Ø�Š˜Ñ�Øˆ
r   c                óÜ   — d}d}	 ||k(  rt        d«      ‚	 | j                  j                  d¬«      S # t        j                  $ r | j
                  j                  «       sY yY nw xY w|dz  }Œh)z{Get value from the queue.

        Return the value read from the queue, or None if the process unexpectedly died.
        iX  r   zTimeout waiting for subprocessgš™™™™™©?)ÚtimeoutNrm   )ÚRuntimeErrorrS   r%   ÚqueueÚEmptyre   Úis_alive)r   Úmax_iterÚns      r   rn   zModuleInspect._get_from_queue£   s|   € ð
 ˆØˆØØ�HŠ}Ü"Ð#CÓDÐDð Ø—|‘|×'Ñ'°Ð'Ó5Ð5øÜ—;‘;ò  Ø—y‘y×)Ñ)Ô+Ùñ ,ð úð �‰FˆAð s   —3 ³-A%Á$A%c                ó   — | S r
   r    r\   s    r   Ú	__enter__zModuleInspect.__enter__´   s   € Øˆr   c                ó$   — | j                  «        y r
   )rk   )r   rb   s     r   Ú__exit__zModuleInspect.__exit__·   s   € Ø�
‰
�r   N)r   r   ©rD   r   r   r   )r   zModuleProperties | str | None)r   rY   )rb   Úobjectr   r   )r   r   r   Ú__doc__r   r[   rk   rN   rn   ry   r{   r    r   r   rY   rY   j   s*   „ ñóó	óóó.ó"ôr   rY   )r(   r   r   r   )r   r   r   r   r|   )rR   z
Queue[str]rS   zQueue[str | ModuleProperties]rT   z	list[str]r   r   )r~   Ú
__future__r   r8   r?   r&   rB   rs   rP   Úmultiprocessingr   r   Útypesr   r   r   r,   r>   r.   rN   rW   rY   r    r   r   ú<module>r‚      s\   ðÙ %å "ã Û Û 	Û Û Û 
ß .Ý ÷-ñ -ó&XóRô	�9ô 	ó(óV
÷Nò Nr   