ó
    …~i7-  ã                   ó*  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r
  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  \(       a  SS
KJr  / SQrS r\R(                  " S\R*                   V s0 s H  o R,                  U R.                  * _M     sn 5      rS rS rS\R6                  \" \S\R                  5      \\R<                  \4S jrS r SS jr!SS jr"\S 5       r#\S 5       r$SS jr%\R                   \%l         S r&\S 5       r'gs  sn f )z%Routines common to all posix systems.é    Né   )Ú_ntuples)ÚMACOS©ÚTimeoutExpired)Údebug)Úmemoize)Úusage_percent)Ú_psutil_osx)Ú
pid_existsÚwait_pidÚ
disk_usageÚget_terminal_mapc                 óx   • U S:X  a  g [         R                  " U S5        g! [         a     g[         a     gf = f)z6Check whether pid exists in the current process table.r   TF)ÚosÚkillÚProcessLookupErrorÚPermissionError)Úpids    ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psutil/_psposix.pyr   r      sD   € à
ˆaƒxð ð
Ü
�Š��QŒð øô ó ÙÜó áðús   ‰! ¡
9­	9¸9Ú	Negsignalc                 ó>   •  [        U 5      $ ! [         a    U s $ f = f)z+Convert a negative signal value to an enum.)r   Ú
ValueError)Únums    r   Únegsig_to_enumr   8   s%   € ðÜ˜‹~ÐøÜó ØŠ
ðús   ‚
 �›c                 óü   • [         R                  " U 5      (       a  [         R                  " U 5      $ [         R                  " U 5      (       a   [	        [         R
                  " U 5      * 5      $ SU < 3n[        U5      e)z.Convert a os.waitpid() status to an exit code.zunknown process exit status )r   Ú	WIFEXITEDÚWEXITSTATUSÚWIFSIGNALEDr   ÚWTERMSIGr   )ÚstatusÚmsgs     r   Úconvert_exit_coder#   @   sb   € ä	‡|‚|�F×Ñô �~Š~˜fÓ%Ð%Ü	‡~‚~�f×Ñô œrŸ{š{¨6Ó2Ð2Ó3Ð3ð" )¨©
Ð
3€CÜ
�S‹/Ðó    Ú	monotonicc                 óT  ^^^^^^• SnSmSnSmTb#  U[         R                  -  nTS:w  a
  T" 5       T-   mUUUUUU4S jn	  [         R                  " X5      u  p«U
S:X  a	  U	" U5      nO[        U5      $ M5  ! [         a'    U" U 5      (       a  U	" U5      nU" U 5      (       a  M   gf = f)a�  Wait for a process PID to terminate.

If the process terminated normally by calling exit(3) or _exit(2),
or by returning from main(), the return value is the positive integer
passed to *exit().

If it was terminated by a signal it returns the negated value of the
signal which caused the termination (e.g. -SIGTERM).

If PID is not a children of os.getpid() (current process) just
wait until the process disappears and return None.

If PID does not exist at all return None immediately.

If timeout is specified and process is still alive raise
TimeoutExpired.

If timeout=0 either return immediately or raise TimeoutExpired
(non-blocking).
g-Cëâ6?g{®Gáz¤?r   Nc                 ój   >• TS:X  d  Tb  T" 5       T:¼  a  [        T5      eT" U 5        T" U S-  T5      $ )Nr   é   r   )ÚintervalÚ_minÚ_sleepÚ_timerÚmax_intervalÚstop_atÚtimeouts    €€€€€€r   Úsleep_or_timeoutÚ(wait_pid_posix.<locals>.sleep_or_timeout†   s<   ø€ à�a‹<˜GÑ/±F³HÀÓ4GÜ  Ó)Ð)ÙˆxÔÙ�H˜q‘L ,Ó/Ð/r$   )r   ÚWNOHANGÚwaitpidr#   ÚChildProcessError)r   r/   Ú_waitpidr,   r*   r+   Ú_pid_existsr)   Úflagsr0   Úretpidr!   r-   r.   s    ` ```      @@r   Úwait_pid_posixr9   _   s¿   ý€ ð: €HØ€LØ€EØ€GàÑØ”—‘ÑˆØ�a‹<Ù“h Ñ(ˆG÷0ò 0ð ð	1ÜŸZšZ¨Ó3‰NˆFð ˜‹{á+¨HÓ5‘ä(¨Ó0Ð0ñ% øô !ó 		ñ ˜c×"Ñ"Ù+¨HÓ5�ñ ˜c×"Ó"áð		ús   ÁA6 Á6,B'Â&B'c                 ó’   •  [         R                  " U S5      u  p#US:w  d   e[        U5      $ ! [         a    [	        X5      s $ f = f)z`Wrapper around os.waitpid(). PID is supposed to be gone already,
it just returns the exit code.
r   )r   r3   r#   r4   r9   )r   r/   r8   r!   s       r   r5   r5   £   sN   € ð)ÜŸš C¨Ó+‰ˆð
 ˜‹{Ðˆ{Ü  Ó(Ð(øô ó ,ä˜cÓ+Ò+ð,ús   ‚. ®AÁAc                 ó¾  •  [         R                  " U S5      n [        R                  " 5       nUR                  U[        R                  5        Uc  SO[        US-  5      nUR                  U5      nU(       d  [        U5      e[!        X5      [         R"                  " U5        $ ! [         a‘  nUR                  [        R                  :X  a  [        X5      s SnA$ UR                  [        R                  [        R                  [        R                  1;   a   [        SU< S35        [        X5      s SnA$ e SnAff = f! [         R"                  " U5        f = f)zZWait for PID to terminate using pidfd_open() + poll(). Linux >=
5.3 + Python >= 3.9 only.
r   Nzpidfd_open() failed (ú); use fallbackiè  )r   Ú
pidfd_openÚOSErrorÚerrnoÚESRCHr9   ÚEMFILEÚENFILEÚENODEVr   ÚselectÚpollÚregisterÚPOLLINÚintr   r5   Úclose)r   r/   ÚpidfdÚerrÚpollerÚ
timeout_msÚeventss          r   Úwait_pid_pidfd_openrO   ±   sü   € ðÜ—’˜c 1Ó%ˆðô
 —’“ˆØ�‰˜œvŸ}™}Ô-Ø$™_‘T´#°gÀ±nÓ2Eˆ
Ø—‘˜ZÓ(ˆæÜ  Ó)Ð)Ü˜Ó%ä
�Š��øô5 ó 
Ø�9‰9œŸ™Ó#ô " #Ó/Õ/Ø�9‰9œŸ™¤u§|¡|´U·\±\ÐBÓBô Ð)¨#©°Ð@ÔAÜ! #Ó/Õ/Øûð
ûô4 	�Š��ús<   ‚B& šA5E Â&
EÂ0(D<ÃEÃAD<Ä5EÄ;D<Ä<EÅEc                 óD  •  [         R                  " 5       n [         R                  " U [         R                  [         R                  [         R                  -  [         R                  S9n UR                  U/SU5      nU(       d  [        U5      e[        X5      UR!                  5         $ ! [         aT  nUR                  [        R                  [        R
                  1;   a   [        SU< S35        [        X5      s SnA$ e SnAff = f! [         as  nUR                  [        R"                  [        R$                  [        R&                  1;   a0  [        SU< S35        [        X5      s SnAUR!                  5         $ e SnAff = f! UR!                  5         f = f)z=Wait for PID to terminate using kqueue(). macOS and BSD only.zkqueue() failed (r<   N©Úfilterr7   Úfflagsr   zkqueue.control() failed ()rD   Úkqueuer>   r?   rA   rB   r   r9   ÚkeventÚKQ_FILTER_PROCÚ	KQ_EV_ADDÚKQ_EV_ONESHOTÚKQ_NOTE_EXITÚcontrolr   r5   rI   ÚEACCESÚEPERMr@   )r   r/   ÚkqrK   ÚkevrN   s         r   Úwait_pid_kqueuer_   Ô   s<  € ðÜ�]Š]‹_ˆðÜ�mŠmØÜ×(Ñ(Ü×"Ñ"¤V×%9Ñ%9Ñ9Ü×&Ñ&ñ	
ˆð
	*Ø—Z‘Z   q¨'Ó2ˆFö Ü$ WÓ-Ð-Ü˜CÓ)à
�‰�
øô3 ó Ø�9‰9œŸ™¤u§|¡|Ð4Ó4ÜÐ% c¡W¨OÐ<Ô=Ü! #Ó/Õ/Øûð	ûô ó 	Ø�y‰yœUŸ\™\¬5¯;©;¼¿¹ÐDÓDÜÐ1°#±¸ÐHÔIÜ% cÓ3Ô3ð 	�‰�
ð ûð		ûð 	�‰�
úsg   ‚B, ˜AF Á+D Á?F Â,
D
Â6ADÃ>D
ÄDÄD
Ä
F
ÄAFÅ.F
Å/F ÆFÆF
Æ
F ÆFc                  óF  • [        [        S5      (       d  g [        R                  " [        R                  " 5       S5      n [        R                  " U 5        g! [
         a=  nUR                  [        R                  [        R                  1;   a   S nAg S nAgS nAff = f)Nr=   Fr   T)	Úhasattrr   r=   ÚgetpidrI   r>   r?   rA   rB   )rJ   rK   s     r   Úcan_use_pidfd_openrc   ô   sr   € ô ”2�|×$Ñ$ØðÜ—’œbŸiši›k¨1Ó-ˆô 	�Š�ŒØøô ó Ø�9‰9œŸ™¤u§|¡|Ð4Ó4äô ûðús   ˜*A Á
B Á#.BÂB c                  óš  • Sn [        S U  5       5      (       d  gS n [        R                  " 5       n[        R                  " [        R
                  " 5       [        R                  [        R                  [        R                  -  [        R                  S9nUR                  U/SS5         Ub  UR                  5         gg! [         ae  nUR                  [        R                  [        R                  1;   a   S nAUb  UR                  5         gg S nAUb  UR                  5         ggS nAff = f! Ub  UR                  5         f f = f)N)rT   rW   rX   rV   rY   c              3   óB   #   • U  H  n[        [        U5      v •  M     g 7f©N)ra   rD   )Ú.0Úxs     r   Ú	<genexpr>Ú!can_use_kqueue.<locals>.<genexpr>  s   é € Ð1ª5 aŒw”v˜q×!Ð!ª5ùs   ‚FrQ   r   r   T)ÚallrD   rT   rU   r   rb   rV   rW   rX   rY   rZ   rI   r>   r?   rA   rB   )Únamesr]   r^   rK   s       r   Úcan_use_kqueuerm     s  € ð€Eô Ñ1©5Ó1×1Ñ1ØØ	€BðÜ�]Š]‹_ˆÜ�mŠmÜ�IŠI‹KÜ×(Ñ(Ü×"Ñ"¤V×%9Ñ%9Ñ9Ü×&Ñ&ñ	
ˆð 	�
‰
�C�5˜!˜QÔØð ‰>Ø�H‰H�Jð øô ó Ø�9‰9œŸ™¤u§|¡|Ð4Ó4ãð ‰>Ø�H‰H�Jð ó à‰>Ø�H‰H�Jð ûðûð ‰>Ø�H‰H�Jð ús0   žBC Ã
D1Ã.D,Ã:D4 ÄD4 Ä,D1Ä1D4 Ä4E
c                 ó¦   • U S:”  d   eUb  US:¼  d   e[        5       (       a  [        X5      $ [        5       (       a  [        X5      $ [	        X5      $ )Nr   )rc   rO   rm   r_   r9   )r   r/   s     r   r   r   (  sT   € ð �‹7€Nˆ7ØÑØ˜!‹|Ðˆ|ä×ÑÜ" 3Ó0Ð0Ü	×	Ñ	Ü˜sÓ,Ð,ä˜cÓ+Ð+r$   c                 óT  • [         R                  " U 5      nUR                  UR                  -  nUR                  UR                  -  nUR
                  UR                  -  nX#-
  n[        (       a  [        R                  " X5      nXT-   n[        XVSS9n[        R                  " X%XGS9$ )a  Return disk usage associated with path.
Note: UNIX usually reserves 5% disk space which is not accessible
by user. In this function "total" and "used" values reflect the
total and used disk space whereas "free" and "percent" represent
the "free" and "used percent" user disk space.
r   )Úround_)ÚtotalÚusedÚfreeÚpercent)r   ÚstatvfsÚf_blocksÚf_frsizeÚf_bfreeÚf_bavailr   r   Údisk_usage_usedr
   ÚntpÚ
sdiskusage)ÚpathÚstrq   Úavail_to_rootÚavail_to_userrr   Ú
total_userÚusage_percent_users           r   r   r   :  s˜   € ô 
�Š�DÓ	€Bð �K‰K˜"Ÿ+™+Ñ%€Eà—J‘J §¡Ñ,€Mà—K‘K "§+¡+Ñ-€MàÑ €Dß‚uä×*Ò*¨4Ó6ˆð Ñ%€Jô ' tÀÑBÐô
 �>Š>Ø ]ñð r$   c                  óö   • 0 n [         R                   " S5      [         R                   " S5      -   nU H2  nX ;  d   U5       e X [        R                  " U5      R                  '   M4     U $ ! [         a     ME  f = f)zFGet a map of device-id -> path as a dict.
Used by Process.terminal().
z	/dev/tty*z
/dev/pts/*)Úglobr   ÚstatÚst_rdevÚFileNotFoundError)ÚretÚlsÚnames      r   r   r   ^  st   € ð
 €CÜ	�Š�;Ó	¤$§)¢)¨LÓ"9Ñ	9€BÛˆØ‹Ð$ Ó$ˆð	Ø)-”—’˜“×%Ñ%Ó&ñ ð €Jøô !ó 	Úð	ús   Á"A*Á*
A8Á7A8rf   )(Ú__doc__Úenumr?   r„   r   rD   ÚsignalÚtimeÚ r   r{   Ú_commonr   r   r   r	   r
   r   Ú__all__r   ÚIntEnumÚSignalsrŠ   Úvaluer   r   r#   r3   ÚgetattrÚminÚsleepr9   r5   rO   r_   rc   rm   r   r   r   )rh   s   0r   Ú<module>r˜      s#  ðñ
 ,ã Û Û Û 	Û Û Û å Ý Ý #Ý Ý Ý "æÝò G€òð, �LŠLØ¨F¯NªNÓ;ªN q—&‘&˜1Ÿ7™7˜(Ò"©NÑ;ó€	ò
òðB Ø�Z‰ZÙ�4˜ d§i¡iÓ0Ø	Ø�:‰:ØôA1òH)ô ôFð@ 	ñó 	ðð$ 	ñó 	ðô@,ð "×)Ñ)€Ô ò!ðH 	ñó 	ñùòW	 <s   Á2!D
