Ë
    íéñiOr  ã                   óž	  — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ dd	l
mZ dd
l
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ g Zeržej<                  ej>                  ej@                  ejB                  ejD                  ejF                  ejH                  ejJ                  ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  iZ,�n'er�ej<                  ej>                  ejD                  ejF                  ejH                  ejJ                  ejZ                  ejN                  ejL                  ejN                  ej@                  ej\                  ej^                  ejB                  iZ,nˆer†ej<                  ej>                  ejD                  ejF                  ejH                  ejJ                  ejL                  ejN                  ej@                  ej\                  ej^                  ejB                  iZ,ej`                  ejb                  ejd                  ejf                  ejh                  ejj                  ejl                  ejn                  ejp                  ejr                  ejt                  ejv                  ejx                  ejz                  ej|                  ej~                  ej€                  ej‚                  ej„                  ej†                  ejˆ                  ejŠ                  ejŒ                  ejŽ                  iZH ej’                  «       ZJej–                  ZK eLed«      ZM eNddi dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d)“d*d+“d,d-“d.d/“d0d1“d2d3“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“ŽZOdH„ ZPdI„ ZQ eLedJ«      rej¤                  ZRej¦                  ZSdK„ ZTdL„ ZUdM„ ZVeserdN„ ZWndO„ ZWdP„ ZXerdQ„ ZYnerdR„ ZYdedS„ZZej¶                  Z[ej¸                  Z\ejº                  Z]ej¼                  Z^dT„ Z_dU„ Z`erdV„ ZadW„ ZbdX„ Zcer	  ec«       ZddZ„ Zgd[„ Zhed\„ «       Zid]„ Zjerd^„ Zknerd_„ ZknejÖ                  Zkd`„ ZlejÚ                  da„ «       Zn G db„ dc«      Zoy# ee$ rZf edYef›�«       dZdY dZf[fŒ`dZf[fww xY w)fz5FreeBSD, OpenBSD and NetBSD platforms implementation.é    N)Údefaultdict)Ú
namedtuple)ÚElementTreeé   )Ú_common)Ú_ntuples)Ú_psposix)Ú_psutil_bsd)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Ú	conn_tmap)Úconn_to_ntuple)Údebug)Úmemoize)Úmemoize_when_activated)Úusage_percentÚproc_num_threadsÚppidÚstatusÚreal_uidé   Úeffective_uidé   Ú	saved_uidé   Úreal_gidé   Úeffective_gidé   Ú	saved_gidé   Úttynré   Úcreate_timeé	   Úctx_switches_volé
   Úctx_switches_unvolé   Úread_io_counté   Úwrite_io_counté   Ú	user_timeé   Úsys_timeé   Úch_user_timeé   Úch_sys_timeé   Úrssé   Úvmsé   Úmemtexté   Úmemdataé   Úmemstacké   Úcpunumé   Únameé   c                  ó
  — t        j                  «       } t        r“| \  }}}}}}t        dd«      5 }|D ]d  }|j	                  d«      r t        |j                  «       d   «      dz  }	Œ4|j	                  d«      sŒFt        |j                  «       d   «      dz  }
Œf 	 d d d «       ||z   }||z
  }n| \  }}}}}}}	}
||z   |z   }||z   |z   }t        ||z
  |d¬«      }t        j                  |||||||	|
|«      S # 1 sw Y   Œ_xY w)Nz/proc/meminfoÚrbs   Buffers:r   i   s
   MemShared:©Úround_)
ÚcextÚvirtual_memr   ÚopenÚ
startswithÚintÚsplitr   ÚntpÚsvmem)ÚmemÚtotalÚfreeÚactiveÚinactiveÚwiredÚcachedÚfÚlineÚbuffersÚsharedÚusedÚavailÚpercents                 úO/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/psutil/_psbsd.pyÚvirtual_memoryrc   ˆ   s.  € Ü
×
Ñ
Ó
€CÝØ7:Ñ4ˆˆt�V˜X u¨fô �/ 4Ó(ð 	9¨AØò 9�Ø—?‘? ;Ô/Ü! $§*¡*£,¨q¡/Ó2°TÑ9‘GØ—_‘_ ]Õ3Ü  §¡£¨a¡Ó1°DÑ8‘Fñ	9÷	9ð ˜‰~ˆØ˜‘‰àHKÑEˆˆt�V˜X u¨f°g¸vð ˜6Ñ! DÑ(ˆØ˜‰~ Ñ&ˆä˜U U™]¨U¸1Ô=€GÜ�9‰9ØØØØØØØØØØØóð ÷5	9ð 	9ús   °AC9Á9!C9Ã9Dc                  ó†   — t        j                  «       \  } }}}}t        || d¬«      }t        j                  | |||||«      S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   rJ   )rL   Úswap_memr   rR   Ússwap)rU   r_   rV   ÚsinÚsoutra   s         rb   Úswap_memoryri   ·   s?   € ä#'§=¡=£?Ñ €Eˆ4��s˜DÜ˜D %°Ô2€GÜ�9‰9�U˜D $¨°°dÓ;Ð;ó    Ú	heap_infoc                  óh   — t        j                  «       \  } }}}}t        j                  | ||||«      S )z,Return system per-CPU times as a namedtuple.)rL   Ú	cpu_timesrR   Ú	scputimes)ÚuserÚniceÚsystemÚidleÚirqs        rb   rm   rm   É   s0   € ä$(§N¡NÓ$4Ñ!€Dˆ$�˜˜cÜ�=‰=˜˜t V¨T°3Ó7Ð7rj   c                  ó    — g } t        j                  «       D ]4  }|\  }}}}}t        j                  |||||«      }| j	                  |«       Œ6 | S )z(Return system CPU times as a namedtuple.)rL   Úper_cpu_timesrR   rn   Úappend)ÚretÚcpu_tro   rp   rq   rr   rs   Úitems           rb   ru   ru   Ï   sX   € à
€CÜ×#Ñ#Ó%ò ˆØ(-Ñ%ˆˆd�F˜D #Ü�}‰}˜T 4¨°°sÓ;ˆØ�
‰
�4Õðð €Jrj   c                  ó*   — t        j                  «       S )z0Return the number of logical CPUs in the system.)rL   Úcpu_count_logical© rj   rb   r{   r{   Ù   s   € ä×!Ñ!Ó#Ð#rj   c                  ó$   — t        «       dk(  rdS d S )Nr   )r{   r|   rj   rb   Úcpu_count_coresr~   à   s   € ä%Ó'¨1Ò,ˆqÐ6°$Ð6rj   c                  óD  — d} t        j                  «       }|�b|j                  d«      }|dk7  rL|d|dz    }t        j                  |«      }	 t        |j                  d«      «      xs d} |j                  «        | st        «       dk(  ry| S # |j                  «        w xY w)z-Return the number of CPU cores in the system.Nz	</groups>éÿÿÿÿr)   zgroup/children/group/cpur   )	rL   Úcpu_topologyÚrfindr   Ú
fromstringÚlenÚfindallÚclearr{   )rw   ÚsÚindexÚroots       rb   r~   r~   æ   sœ   € ð ˆÜ×ÑÓˆØˆ=à—G‘G˜KÓ(ˆEØ˜Š{Ø�k˜ ™	�N�Ü"×-Ñ-¨aÓ0�ð!Ü˜dŸl™lÐ+EÓFÓGÒOÈ4�Cð —J‘J”LÙä Ó" aÒ'ØØˆ
øð —J‘J•Lús   ÁB ÂBc                  ó¬  — t         rt        j                  «       \  } }}}}n�t        rht        j                  «       \  } }}}}}}t	        dd«      5 }|D ]0  }|j                  d«      sŒt        |j                  «       d   «      }Œ2 	 ddd«       n"t        rt        j                  «       \  } }}}}}}t        j                   «      S # 1 sw Y   Œ!xY w)z*Return various CPU stats as a named tuple.z
/proc/statrI   s   intrr   N)r   rL   Ú	cpu_statsr   rN   rO   rP   rQ   r   rR   Ú	scpustats)	ÚctxswÚintrsÚ
soft_intrsÚsyscallsÚ_trapsÚ_faultsÚ_forksr[   r\   s	            rb   r‹   r‹     sÔ   € åô 6:·^±^Ó5EÑ2ˆˆu�j (©FÝ	ô �N‰NÓñ 	Dˆˆu�j (¨F°G¸Vô �, Ó%ð 	1¨Øò 1�Ø—?‘? 7Õ+Ü §
¡
£¨Q¡Ó0‘Eñ1÷	1ð 	1õ 
ô �N‰NÓñ 	Dˆˆu�j (¨F°G¸Vô �=‰=˜  z°8Ó<Ð<÷	1ð 	1ús   ÁC
Á(C
Ã
Cc                  óú  — g } t        «       }t        |«      D ]£  }	 t        j                  |«      \  }}|r`	 t        |j                  d«      d   j                  d«      d   «      }	 t        |j                  d«      d   j                  d«      d   «      }| j                  t        j                  |«      «       Œ¥ | S # t        $ r Y Œ³w xY w# t        t        f$ r d}Y Œ|w xY w# t        t        f$ r d}Y Œcw xY w)zªReturn frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
        ú r€   ú/r   N)r{   ÚrangerL   Úcpu_freqÚNotImplementedErrorrP   rQ   Ú
IndexErrorÚ
ValueErrorrv   rR   Úscpufreq)rw   Únum_cpusÚcpuÚcurrentÚavailable_freqÚmin_freqÚmax_freqs          rb   r˜   r˜   #  s  € ð
 ˆÜ$Ó&ˆÜ˜“?ò 	BˆCðÜ*.¯-©-¸Ó*<Ñ'�˜ñ ð$Ü" >×#7Ñ#7¸Ó#<¸RÑ#@×#FÑ#FÀsÓ#KÈAÑ#NÓO�Hð$Ü" >×#7Ñ#7¸Ó#<¸QÑ#?×#EÑ#EÀcÓ#JÈ1Ñ#MÓN�Hð �J‰J”s—|‘| G¨X°xÓ@ÕAð	Bð ˆ
øô 'ò Ùðûô
 #¤JÐ/ò $Ø#’Hð$ûô #¤JÐ/ò $Ø#’Hð$ús4   œC ·/CÁ'/C&Ã 	CÃCÃC#Ã"C#Ã&C:Ã9C:c                  ól   — t        t        j                  «       «      } t        j                  | dd«      gS )Ng        )ÚfloatrL   r˜   rR   rœ   )Úcurrs    rb   r˜   r˜   =  s(   € Ü”T—]‘]“_Ó%ˆÜ—‘˜T 3¨Ó,Ð-Ð-rj   c                 ó    — g }t        j                  «       }|D ]2  }|\  }}}}t        j                  ||||«      }|j	                  |«       Œ4 |S )z•Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906.
    )rL   Údisk_partitionsrR   Ú	sdiskpartrv   )	ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚntuples	            rb   r§   r§   G  s[   € ð
 €GÜ×%Ñ%Ó'€JØò ˆ	Ø+4Ñ(ˆ�
˜F DÜ—‘˜v z°6¸4Ó@ˆØ�‰�vÕðð €Nrj   c                  óâ  — t        «       j                  «       } i }| D ]›  }	 t        j                  |«      }t        j                  |«      }t        j
                  |«      \  }}t        t        d«      rt        j                  |«      }dj                  |«      }d|v }t        j                  |||||«      ||<   Œ� |S # t        $ r(}	|	j                  t        j                  k7  r‚ Y d}	~	ŒÌd}	~	ww xY w)z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplexú,ÚrunningN)Únet_io_countersÚkeysrL   Ú
net_if_mtuÚnet_if_flagsÚnet_if_duplex_speedÚhasattrr   r³   ÚjoinrR   Ú	snicstatsÚOSErrorÚerrnoÚENODEV)
Únamesrw   rF   ÚmtuÚflagsÚduplexÚspeedÚoutput_flagsÚisupÚerrs
             rb   Únet_if_statsrÉ   b  sß   € äÓ×"Ñ"Ó$€EØ
€CØò Nˆð	NÜ—/‘/ $Ó'ˆCÜ×%Ñ% dÓ+ˆEÜ ×4Ñ4°TÓ:‰MˆF�Eô ”w Ô,Ü ×*Ñ*¨6Ó2�ØŸ8™8 E›?ˆLØ Ð%ˆDÜŸ™ d¨F°E¸3ÀÓMˆC�ŠIðNð €Jøô ò 	à�y‰yœEŸL™LÒ(Øô )ûð	ús   ¡AB=Â=	C.ÃC)Ã)C.c                 óV  — t         |    \  }}t        «       }t        rt        j                  d||«      }n3t
        rt        j                  d| «      }nt        j                  ||«      }|D ]3  }|\  }}}}	}
}}t        ||||	|
|t        |«      }|j                  |«       Œ5 t        |«      S )z System-wide network connections.r€   )
r   Úsetr   rL   Únet_connectionsr   r   ÚTCP_STATUSESÚaddÚlist)ÚkindÚfamiliesÚtypesrw   Úrawlistry   ÚfdÚfamÚtypeÚladdrÚraddrr   ÚpidÚnts                 rb   rÌ   rÌ   x  s«   € ä ‘o�O€HˆeÜ
‹%€CÝÜ×&Ñ& r¨8°UÓ;‰Ý	Ü×&Ñ& r¨4Ó0‰ä×&Ñ& x°Ó7ˆàò ˆØ37Ñ0ˆˆC��u˜e V¨SÜØ��T˜5 %¨´¸só
ˆð 	�‰��ðô �‹9Ðrj   c                  óæ   — 	 t        j                  «       \  } }}|dk(  }|rt        j                  }n|dk(  rt        j
                  }n|dz  }t        j                  | ||«      S # t        $ r Y yw xY w)zReturn battery info.Nr   r€   é<   )rL   Úsensors_batteryr™   r   ÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNrR   Úsbattery)ra   ÚminsleftÚpower_pluggedÚsecslefts       rb   rÝ   rÝ   “  sx   € ð	Ü/3×/CÑ/CÓ/EÑ,ˆG�X˜}ð &¨Ñ*ˆÙÜ×3Ñ3‰HØ˜Š^Ü×1Ñ1‰Hà "‘}ˆHÜ�|‰|˜G X¨}Ó=Ð=øô #ò 	áð	ús   ‚A$ Á$	A0Á/A0c            	      ó  — t        t        «      } t        «       }t        |«      D ]Q  }	 t	        j
                  |«      \  }}|dk  rd}d|› �}| d   j                  t        j                  ||||«      «       ŒS | S # t        $ r Y Œaw xY w)z?Return CPU cores temperatures if available, else an empty dict.r   NzCore Úcoretemp)
r   rÏ   r{   r—   rL   Úsensors_cpu_temperaturerv   rR   Úshwtempr™   )rw   r�   rž   rŸ   ÚhighrF   s         rb   Úsensors_temperaturesré   £  s“   € äœ$ÓˆÜ$Ó&ˆÜ˜“?ò 	ˆCðÜ $× <Ñ <¸SÓ A‘�˜Ø˜1’9Ø�DØ˜s˜e�}�Ø�J‘×&Ñ&¤s§{¡{°4¸À$ÈÓ'MÕNð	ð ˆ
øô 'ò Ùðús   ©AA;Á;	BÂBc                  ó*   — t        j                  «       S )z:The system boot time expressed in seconds since the epoch.)rL   Ú	boot_timer|   rj   rb   rë   rë   ¹  s   € ä�>‰>ÓÐrj   zignoring exception on import: c                 ó˜   — t         dk(  r| S t         t        «       z
  }|dk(  st        |«      dk  r| S t        d«       |dk  r| |z
  S | |z   S )z!Account for system clock updates.r   r   z9system clock was updated; adjusting process create_time())ÚINIT_BOOT_TIMErë   Úabsr   )ÚctimeÚdiffs     rb   Úadjust_proc_create_timerñ   Ç  sU   € ä˜QÒØˆLä¤	£Ñ+ˆØ�1Š9œ˜D›	 AšØˆLäÐIÔJØ�!Š8Ø˜4‘<ÐØ�t‰|Ðrj   c                  ó¸   — g } t        j                  «       }|D ]>  }|\  }}}}}|dk(  rŒt        j                  ||xs d|||«      }| j	                  |«       Œ@ | S )z:Return currently connected users as a list of namedtuples.ú~N)rL   ÚusersrR   Úsuserrv   )	rª   rÓ   ry   ro   ÚttyÚhostnameÚtstamprÙ   rÚ   s	            rb   rô   rô   Ö  sh   € à€GÜ�j‰j‹l€GØò ˆØ+/Ñ(ˆˆc�8˜V SØ�#Š:ØÜ�Y‰Y�t˜Sš[ D¨(°F¸CÓ@ˆØ�‰�rÕðð €Nrj   c                  ój   — 	 t        d«      j                  «        y# t        $ r Y yt        $ r Y yw xY w)Nr   TF)ÚProcessrF   r   r   r|   rj   rb   Ú_pid_0_existsrû   è  s9   € ðÜ�‹
�‰Ôð øô ò ÙÜò Ùðús   ‚ œ	2§2±2c                  óz   — t        j                  «       } t        r d| vrt        «       r| j	                  dd«       | S )z7Returns a list of PIDs currently running on the system.r   )rL   Úpidsr   rû   Úinsert)rw   s    rb   rý   rý   ô  s/   € ä
�)‰)‹+€CÝ�A˜S‘L¤m¤oð 	�
‰
�1�aÔØ€Jrj   c                 óJ   — t        j                  | «      }|s| t        «       v S y)NT©r	   Ú
pid_existsrý   ©rÙ   Úexistss     rb   r  r     s&   € Ü×$Ñ$ SÓ)ˆÙð œ$›&�=Ð àrj   c                 óJ   — t        j                  | «      }|sy| t        «       v S )NFr   r  s     rb   r  r    s&   € Ü×$Ñ$ SÓ)ˆÙØð
 œ$›&�=Ð rj   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                 ó¼  •— | j                   | j                  | j                  }}}	  ‰| g|¢­i |¤ŽS # t        $ r5}t	        j
                  |«      rt        |||«      |‚t        ||«      |‚d }~wt        $ r}t        ||«      |‚d }~wt        j                  $ r}t        |||«      |‚d }~wt        $ r&}|dk(  rdt        «       v rt        ||«      |‚|d ‚d }~ww xY w)Nr   )rÙ   Ú_ppidÚ_nameÚProcessLookupErrorrL   Úproc_is_zombier   r   ÚPermissionErrorr   ÚZombieProcessErrorr¾   rý   )ÚselfÚargsÚkwargsrÙ   r   rF   rÈ   Úfuns          €rb   Úwrapperz wrap_exceptions.<locals>.wrapper  sÛ   ø€ àŸ(™( D§J¡J°·
±
�4ˆTˆð	 Ù�tÐ-˜dÒ- fÑ-Ð-øÜ!ò 	4Ü×"Ñ" 3Ô'Ü# C¨¨tÓ4¸#Ð=Ü  TÓ*°Ð3ûÜò 	3Ü˜s DÓ)¨sÐ2ûÜ×&Ñ&ò 	:Ü  T¨4Ó0°cÐ9ûÜò 	 Ø�aŠx˜A¤£™KÜ" 3¨Ó-°3Ð6Ø˜4Ðûð	 ús8   §3 ³	C¼0A,Á,CÁ8BÂCÂB)Â)CÂ5!CÃC)Ú	functoolsÚwraps)r  r  s   ` rb   Úwrap_exceptionsr    s'   ø€ ô
 ‡_�_�SÓó ó ð ð" €Nrj   c              #   ó2  K  — | j                   | j                  | j                  }}}	 d–— y# t        t        f$ r?}t        j                  | j                   «      rt        |||«      |‚t        ||«      |‚d}~wt        $ r}t        ||«      |‚d}~ww xY w­w)z8Same as above, for routines relying on reading /proc fs.N)rÙ   r  r  r	  ÚFileNotFoundErrorrL   r
  r   r   r  r   )ÚinstrÙ   rF   r   rÈ   s        rb   Úwrap_exceptions_procfsr  3  sŠ   è ø€ ð —h‘h §
¡
¨D¯J©Jˆtˆ€Cð/ÜøÜÔ 1Ð2ò 4ô ×Ñ˜tŸx™xÔ(Ü  T¨4Ó0°cÐ9ä  TÓ*°Ð3ûÜò /Ü˜3 Ó%¨3Ð.ûð/üs0   ‚%B¨- ¬B­B¼:A6Á6BÂBÂBÂBc                   óD  — e Zd ZdZg d¢Zd„ Zd„ Zeed„ «       «       Z	d„ Z
d„ Zed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zered„ «       Zed„ «       ZeZed(d„«       Zed„ «       Zed„ «       Zed„ «       Zed)d„«       Zed*d„«       Zed„ «       Zed„ «       Z ed„ «       Z!ed„ «       Z"ed„ «       Z# e$dd «      Z% e$dd!«      Z&ed"„ «       Z'ed#„ «       Z(er"ed$„ «       Z)ed%„ «       Z*ed&„ «       Z+ed*d'„«       Z,yy)+rú   z1Wrapper class around underlying C implementation.)Ú_cacher  r  rÙ   c                 ó.   — || _         d | _        d | _        y ©N)rÙ   r  r  )r  rÙ   s     rb   Ú__init__zProcess.__init__J  s   € ØˆŒØˆŒ
Øˆ�
rj   c                 óB   — t        j                  | j                  «       y)z+Raise NSP if the process disappeared on us.N)rL   Ú	proc_namerÙ   ©r  s    rb   Ú_assert_alivezProcess._assert_aliveO  s   € ô 	�‰�t—x‘xÕ rj   c                 ó~   — t        j                  | j                  «      }t        |«      t        t        «      k(  sJ ‚|S )z;Retrieves multiple process info in one shot as a raw tuple.)rL   Úproc_oneshot_inforÙ   r„   Úkinfo_proc_map©r  rw   s     rb   ÚoneshotzProcess.oneshotU  s4   € ô ×$Ñ$ T§X¡XÓ.ˆÜ�3‹xœ3œ~Ó.Ò.Ð.Ð.Øˆ
rj   c                 ó:   — | j                   j                  | «       y r  )r&  Úcache_activater   s    rb   Úoneshot_enterzProcess.oneshot_enter]  s   € Ø�‰×#Ñ# DÕ)rj   c                 ó:   — | j                   j                  | «       y r  )r&  Úcache_deactivater   s    rb   Úoneshot_exitzProcess.oneshot_exit`  s   € Ø�‰×%Ñ% dÕ+rj   c                 ó|   — | j                  «       t        d      }|�|S t        j                  | j                  «      S )NrF   )r&  r$  rL   r  rÙ   )r  rF   s     rb   rF   zProcess.namec  s4   € à�|‰|‹~œn¨VÑ4Ñ5ˆØÐ'ˆtÐE¬T¯^©^¸D¿H¹HÓ-EÐErj   c                 ó~  — t         r/| j                  dk(  ryt        j                  | j                  «      S t        rH| j                  dk(  ryt        | «      5  t        j                  d| j                  › d�«      cd d d «       S dd l}| j                  «       }|r|j                  |d   «      xs dS y# 1 sw Y   y xY w)Nr   Ú z/proc/z/exe)r   rÙ   rL   Úproc_exer   r  ÚosÚreadlinkÚshutilÚcmdlineÚwhich)r  r3  r4  s      rb   ÚexezProcess.exeh  s    € åØ�x‰x˜1Š}ØÜ—=‘= §¡Ó*Ð*ÝØ�x‰x˜1Š}àÜ'¨Ó-ñ <Ü—{‘{ V¨D¯H©H¨:°TÐ#:Ó;÷<ñ <ó à—l‘l“nˆGÙØ—|‘| G¨A¡JÓ/Ò5°2Ð5à÷<ð <ús   Á#B3Â3B<c                 ó,  — t         r| j                  dk(  rg S t        r 	 t        j                  | j                  «      S t        j                  | j                  «      S # t
        $ r­}|j                  t        j                  k(  rŠ| j                  | j                  | j                  }}}t        j                  | j                  «      rt        |||«      |‚t        | j                  «      st        |||«      |‚t        d|›d�«       g cY d }~S ‚ d }~ww xY w)Nr   z	ignoring z and returning an empty list)r   rÙ   r   rL   Úproc_cmdliner¾   r¿   ÚEINVALr  r  r
  r   r  r   r   )r  rÈ   rÙ   rF   r   s        rb   r4  zProcess.cmdline‚  sß   € å�t—x‘x 1’}ØˆIÝð
Ü×(Ñ(¨¯©Ó2Ð2ô ×$Ñ$ T§X¡XÓ.Ð.øô ò Ø—9‘9¤§¡Ò,Ø&*§h¡h°·
±
¸D¿J¹J˜t˜�CÜ×*Ñ*¨4¯8©8Ô4Ü+¨C°°tÓ<À#ÐEÜ% d§h¡hÔ/Ü+¨C°°tÓ<À#ÐEô ˜I c WÐ,HÐIÔJØ•Iàûðús$   ŸA Á	DÁ&B!DÄDÄDÄDc                 ó@   — t        j                  | j                  «      S r  )rL   Úproc_environrÙ   r   s    rb   ÚenvironzProcess.environ�  s   € ä× Ñ  §¡Ó*Ð*rj   c                 óˆ   — | j                  «       t        d      }t        j                  «       }	 ||   S # t        $ r Y y w xY w)Nr&   )r&  r$  r	   Úget_terminal_mapÚKeyError)r  Útty_nrÚtmaps      rb   ÚterminalzProcess.terminal¡  sF   € à—‘“¤¨wÑ 7Ñ8ˆÜ×(Ñ(Ó*ˆð	Ø˜‘<ÐøÜò 	Ùð	ús   °5 µ	AÁ Ac                 óX   — | j                  «       t        d      | _        | j                  S )Nr   )r&  r$  r  r   s    rb   r   zProcess.ppidª  s#   € à—\‘\“^¤N°6Ñ$:Ñ;ˆŒ
Ø�z‰zÐrj   c                 óŒ   — | j                  «       }t        j                  |t        d      |t        d      |t        d      «      S )Nr   r   r   )r&  rR   Úpuidsr$  ©r  Úrawtuples     rb   ÚuidszProcess.uids¯  óE   € à—<‘<“>ˆÜ�y‰yØ”^ JÑ/Ñ0Ø”^ OÑ4Ñ5Ø”^ KÑ0Ñ1ó
ð 	
rj   c                 óŒ   — | j                  «       }t        j                  |t        d      |t        d      |t        d      «      S )Nr    r"   r$   )r&  rR   Úpgidsr$  rF  s     rb   ÚgidszProcess.gids¸  rI  rj   c                 ó¢   — | j                  «       }t        j                  |t        d      |t        d      |t        d      |t        d      «      S )Nr2   r4   r6   r8   )r&  rR   Ú	pcputimesr$  rF  s     rb   rm   zProcess.cpu_timesÁ  sR   € à—<‘<“>ˆÜ�}‰}Ø”^ KÑ0Ñ1Ø”^ JÑ/Ñ0Ø”^ NÑ3Ñ4Ø”^ MÑ2Ñ3ó	
ð 	
rj   c                 ó6   — | j                  «       t        d      S )NrD   )r&  r$  r   s    rb   Úcpu_numzProcess.cpu_numÍ  s   € à—<‘<“>¤.°Ñ":Ñ;Ð;rj   c           	      ó¸   — | j                  «       }t        j                  |t        d      |t        d      |t        d      |t        d      |t        d      «      S )Nr:   r<   r>   r@   rB   )r&  rR   Úpmemr$  rF  s     rb   Úmemory_infozProcess.memory_infoÑ  s_   € à—<‘<“>ˆÜ�x‰xØ”^ EÑ*Ñ+Ø”^ EÑ*Ñ+Ø”^ IÑ.Ñ/Ø”^ IÑ.Ñ/Ø”^ JÑ/Ñ0ó
ð 	
rj   c                 ó`   — | j                  «       t        d      }t        r|st        |«      }|S )Nr(   )r&  r$  r   rñ   )r  Ú	monotonicrï   s      rb   r(   zProcess.create_timeÞ  s+   € à—‘“œ~¨mÑ<Ñ=ˆÝ™)ä+¨EÓ2ˆEØˆrj   c                 ó~   — t         rt        j                  | j                  «      S t	        | j                  «       «      S r  )ÚHAS_PROC_NUM_THREADSrL   r   rÙ   r„   Úthreadsr   s    rb   Únum_threadszProcess.num_threadsæ  s+   € åä×(Ñ(¨¯©Ó2Ð2ä�t—|‘|“~Ó&Ð&rj   c                 óv   — | j                  «       }t        j                  |t        d      |t        d      «      S )Nr*   r,   )r&  rR   Úpctxswr$  rF  s     rb   Únum_ctx_switcheszProcess.num_ctx_switchesî  s:   € à—<‘<“>ˆÜ�z‰zØ”^Ð$6Ñ7Ñ8Ø”^Ð$8Ñ9Ñ:ó
ð 	
rj   c                 óÚ   — t        j                  | j                  «      }g }|D ].  \  }}}t        j                  |||«      }|j                  |«       Œ0 t        r| j                  «        |S r  )rL   Úproc_threadsrÙ   rR   Úpthreadrv   r   r!  )r  rÓ   rª   Ú	thread_idÚutimeÚstimer±   s          rb   rX  zProcess.threadsö  sg   € ô ×#Ñ# D§H¡HÓ-ˆØˆØ'.ò 	#Ñ#ˆI�u˜eÜ—[‘[ ¨E°5Ó9ˆFØ�N‰N˜6Õ"ð	#õ Ø×ÑÔ Øˆrj   c           
      ó²  — t         |   \  }}g }t        r!t        j                  | j                  |«      }nIt
        r"t        j                  | j                  ||«      }n!t        j                  | j                  ||«      }|D ]C  }|d d \  }}}	}
}}t        r	||vs|	|vrŒt        |||	|
||t        «      }|j                  |«       ŒE | j                  «        |S )Nr#   )r   r   rL   rÌ   rÙ   r   Úproc_net_connectionsr   r   rÍ   rv   r!  )r  rÐ   rÑ   rÒ   rw   rÓ   ry   rÔ   rÕ   rÖ   r×   rØ   r   rÚ   s                 rb   rÌ   zProcess.net_connections  sÕ   € ä# D™/‰ˆ�%ØˆåÜ×*Ñ*¨4¯8©8°TÓ:‰GÝÜ×*Ñ*¨4¯8©8°X¸uÓE‰Gä×/Ñ/°·±¸(ÀEÓJˆGàò 	ˆDØ26°r¸°(Ñ/ˆB��T˜5 %¨ÝØ˜xÑ'¨T¸Ñ->ØÜØ�C˜˜u e¨V´\óˆBð �J‰J�r�Nð	ð 	×ÑÔØˆ
rj   Nc                 óB   — t        j                  | j                  |«      S r  )r	   Úwait_pidrÙ   )r  Útimeouts     rb   ÚwaitzProcess.wait  s   € ä× Ñ  §¡¨7Ó3Ð3rj   c                 ó@   — t        j                  | j                  «      S r  )rL   Úproc_priority_getrÙ   r   s    rb   Únice_getzProcess.nice_get  s   € ä×%Ñ% d§h¡hÓ/Ð/rj   c                 óB   — t        j                  | j                  |«      S r  )rL   Úproc_priority_setrÙ   )r  Úvalues     rb   Únice_setzProcess.nice_set#  s   € ä×%Ñ% d§h¡h°Ó6Ð6rj   c                 ób   — | j                  «       t        d      }t        j                  |d«      S )Nr   ú?)r&  r$  ÚPROC_STATUSESÚget)r  Úcodes     rb   r   zProcess.status'  s*   € à�|‰|‹~œn¨XÑ6Ñ7ˆä× Ñ   sÓ+Ð+rj   c                 óz   — | j                  «       }t        j                  |t        d      |t        d      dd«      S )Nr.   r0   r€   )r&  rR   Úpior$  rF  s     rb   Úio_counterszProcess.io_counters-  s?   € à—<‘<“>ˆÜ�w‰wØ”^ OÑ4Ñ5Ø”^Ð$4Ñ5Ñ6ØØó	
ð 	
rj   c                 ól   — t         r| j                  dk(  ryt        j                  | j                  «      S )z)Return process current working directory.r   r/  )r   rÙ   rL   Úproc_cwdr   s    rb   ÚcwdzProcess.cwd7  s'   € õ
 �t—x‘x 1’}ØÜ�}‰}˜TŸX™XÓ&Ð&rj   Úmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countc                 óž   — t        j                  | j                  «      }|D ��cg c]  \  }}t        j                  ||«      ‘Œ c}}S c c}}w )z8Return files opened by process as a list of namedtuples.)rL   Úproc_open_filesrÙ   rR   Ú	popenfile)r  rÓ   ÚpathrÔ   s       rb   Ú
open_fileszProcess.open_filesG  s;   € ô ×&Ñ& t§x¡xÓ0ˆØ8?×@©H¨D°"”—‘˜d BÕ'Ó@Ð@ùÓ@s   ¥ A	c                 óp   — t        j                  | j                  «      }t        r| j	                  «        |S )z=Return the number of file descriptors opened by this process.)rL   Úproc_num_fdsrÙ   r   r!  r%  s     rb   Únum_fdszProcess.num_fdsM  s,   € ô ×Ñ §¡Ó)ˆÝØ×ÑÔ Øˆ
rj   c                 ó@   — t        j                  | j                  «      S r  )rL   Úproc_cpu_affinity_getrÙ   r   s    rb   Úcpu_affinity_getzProcess.cpu_affinity_getY  s   € ä×-Ñ-¨d¯h©hÓ7Ð7rj   c                 óŠ  — t        t        t        t        «       «      «      «      }|D ]  }||vsŒd|›d|› d�}t	        |«      ‚ 	 t        j                  | j                  |«       y # t        $ rR}|j                  t        j                  t        j                  hv r |D ]  }||vsŒd|›d|› d�}t	        |«      |‚ ‚ d }~ww xY w)Nzinvalid CPU z (choose between ú))rË   r—   r„   ru   r›   rL   Úproc_cpu_affinity_setrÙ   r¾   r¿   r9  ÚEDEADLK)r  ÚcpusÚallcpusrž   ÚmsgrÈ   s         rb   Úcpu_affinity_setzProcess.cpu_affinity_set]  sÛ   € ô
 œ%¤¤M£OÓ 4Ó5Ó6ˆGØò *�Ø˜gÒ%Ø(¨¨Ð/@ÀÀ	ÈÐK�CÜ$ S›/Ð)ð*ðÜ×*Ñ*¨4¯8©8°TÕ:øÜò ð
 —9‘9¤§¡¬u¯}©}Ð =Ñ=Ø#ò ;˜Ø gÒ-à".¨s¨gð 6$Ø$+ 9¨Að!/ð  ô #-¨S£/°sÐ:ð;ð ûðús   Á A' Á'	CÁ05B=Â&B=Â=Cc                 ó@   — t        j                  | j                  «      S r  )rL   Úproc_memory_mapsrÙ   r   s    rb   Úmemory_mapszProcess.memory_mapsx  s   € ä×(Ñ(¨¯©Ó2Ð2rj   c                 óÐ   — |€ t        j                  | j                  |«      S t        |«      dk7  rd|›�}t	        |«      ‚|\  }}t        j
                  | j                  |||«      S )Nr   z2second argument must be a (soft, hard) tuple, got )rL   Úproc_getrlimitrÙ   r„   r›   Úproc_setrlimit)r  ÚresourceÚlimitsr�  ÚsoftÚhards         rb   ÚrlimitzProcess.rlimit|  sn   € àˆ~Ü×*Ñ*¨4¯8©8°XÓ>Ð>ä�v“; !Ò#ðØ"˜:ð'ð ô % S›/Ð)Ø#‘
��dÜ×*Ñ*¨4¯8©8°X¸tÀTÓJÐJrj   ©F)Úinetr  )-Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r  r!  r  r   r&  r)  r,  rF   r6  r4  r<  rB  r   rH  rL  rm   r   rP  rS  Úmemory_full_infor(   rY  r\  rX  rÌ   rh  rk  ro  r   rw  rz  r   Únt_mmap_groupedÚnt_mmap_extr€  rƒ  r†  rŽ  r‘  r™  r|   rj   rb   rú   rú   E  s¦  „ Ù;â3€Iòò
!ð Øñó ó ðò*ò,ð ñFó ðFð ñó ðð2 ñ/ó ð/ð4 ñ+ó ð+ð ñó ðð ñó ðð ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ñ à	ñ	<ó 
ð	<ð ñ
ó ð
ð #Ðàòó ðð ñ'ó ð'ð ñ
ó ð
ð ñ	ó ð	ð òó ðð0 ò4ó ð4ð ñ0ó ð0ð ñ7ó ð7ð ñ,ó ð,ð
 ñ
ó ð
ð ñ'ó ð'ñ !ØÐ<ó€Oñ ØÐHó€Kð ñAó ðAð
 ñó ðñ à	ñ	8ó 
ð	8ð 
ñ	ó 
ð	ð4 
ñ	3ó 
ð	3ð 
ò	Kó 
ñ	KðM rj   rú   r|   rš  )prŸ  Ú
contextlibr¿   r  r1  Úcollectionsr   r   Ú	xml.etreer   r/  r   r   rR   r	   r
   rL   r   r   r   r   r   r   r   r   r   r   r   r   Ú__extra__all__ÚSIDLÚSTATUS_IDLEÚSRUNÚSTATUS_RUNNINGÚSSLEEPÚSTATUS_SLEEPINGÚSSTOPÚSTATUS_STOPPEDÚSZOMBÚSTATUS_ZOMBIEÚSWAITÚSTATUS_WAITINGÚSLOCKÚSTATUS_LOCKEDrr  ÚSDEADÚSTATUS_WAKINGÚSONPROCÚTCPS_ESTABLISHEDÚCONN_ESTABLISHEDÚTCPS_SYN_SENTÚCONN_SYN_SENTÚTCPS_SYN_RECEIVEDÚCONN_SYN_RECVÚTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ÚTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ÚTCPS_TIME_WAITÚCONN_TIME_WAITÚTCPS_CLOSEDÚ
CONN_CLOSEÚTCPS_CLOSE_WAITÚCONN_CLOSE_WAITÚTCPS_LAST_ACKÚCONN_LAST_ACKÚTCPS_LISTENÚCONN_LISTENÚTCPS_CLOSINGÚCONN_CLOSINGÚPSUTIL_CONN_NONEÚ	CONN_NONErÍ   ÚgetpagesizeÚPAGESIZEÚAF_LINKr»   rW  Údictr$  rc   ri   rk   Ú	heap_trimrm   ru   r{   r~   r‹   r˜   r§   Ú
disk_usageÚdisk_io_countersr¶   Únet_if_addrsrÉ   rÌ   rÝ   ré   rë   rí   Ú	ExceptionrÈ   rñ   rô   rû   rý   r  r  Úcontextmanagerr  rú   r|   rj   rb   ú<module>rÛ     s  ðñ
 <ã Û Û Û 	Ý #Ý "Ý !å Ý Ý Ý !Ý Ý Ý Ý !Ý "Ý "Ý Ý #Ý Ý Ý +Ý "à€ñ à�	‰	�7×&Ñ&Ø�	‰	�7×)Ñ)Ø�‰�W×,Ñ,Ø�
‰
�G×*Ñ*Ø�
‰
�G×)Ñ)Ø�
‰
�G×*Ñ*Ø�
‰
�G×)Ñ)ð‚Mñ à�	‰	�7×&Ñ&Ø�‰�W×,Ñ,Ø�
‰
�G×*Ñ*ð 	�
‰
�G×)Ñ)Ø�
‰
�G×)Ñ)ð 	�	‰	�7×(Ñ(Ø�‰�g×,Ñ,ð'�Mñ* à�	‰	�7×&Ñ&Ø�‰�W×,Ñ,Ø�
‰
�G×*Ñ*Ø�
‰
�G×)Ñ)Ø�	‰	�7×(Ñ(Ø�‰�g×,Ñ,ð€Mð 	×Ñ˜7×3Ñ3Ø×Ñ˜×-Ñ-Ø×Ñ˜G×1Ñ1Ø×Ñ˜'×0Ñ0Ø×Ñ˜'×0Ñ0Ø×Ñ˜×/Ñ/Ø×Ñ�g×(Ñ(Ø×Ñ˜'×1Ñ1Ø×Ñ˜×-Ñ-Ø×Ñ�g×)Ñ)Ø×Ñ�w×+Ñ+Ø×Ñ˜7×,Ñ,ð€ð ˆ4×ÑÓ€Ø
�,‰,€á˜tÐ%7Ó8Ð áò Ù	
ðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  ð!ñ" ð#ñ$ ð%ñ& 	ð'ñ( 	ð)ñ* ð+ñ, ð-ñ. ð/ñ0 ð1ñ2 
ð3€òD,ò^<ñ ˆ4�ÔØ—‘€IØ—‘€Iò8òò$ñ
 ‰fó7òò6=ñ@ óñ0 ò.óð × Ñ €
Ø×(Ñ(Ð ð ×&Ñ&€Ø× Ñ €òò,ñ2 ò>ò ò,ñ
 
ðÙ"›ˆòò
ð$ 	ñó 	ðòñ 
óñ ó!ð ×$Ñ$€Jòð4 ×Ññ/ó ð/÷"CKò CKøðG ò áÐ.¨s¨gÐ6Ô7Ø�ûðús   Ñ R0 Ò0SÒ5SÓS