o
    F+ i@                     @   s  d 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 g Ze
 Ze
jZe
jeje
jeje
jeje
jej e
j!ej"e
j#ej$e
j%ej&e
j'ej(e
j)ej*e
j+ej,e
j-ej.e
j/ej0iZ1e
j2ej3e
j4ej5e
j6ej7e
j8ej9e
j:ej;iZ<e=ddddddddddddZ>e=dddddddddZ?edg dZ@edg d ZAed!g d"ZBed#eBjCd$ ZDd%d& ZEd'd( ZFd)d* ZGd+d, ZHd-d. ZId/d0 ZJd1d2 ZKe
L rd3d4 ZMejNZNe
jOZOdLd6d7ZPd8d9 ZQe
jRZRe
jSZSdMd;d<ZTd=d> ZUd?d@ ZVzeV ZWW n eXyS ZY zedAeY dZWW Y dZY[YndZY[Yww dBdC ZZdDdE Z[dFdG Z\ej]Z]dHdI Z^G dJdK dKZ_dS )NzmacOS platform implementation.    N)
namedtuple   )_common)_psposix)_psutil_osx)AccessDenied)NoSuchProcess)ZombieProcess)	conn_tmap)conn_to_ntuple)debug)isfile_strict)memoize_when_activated)parse_environ_block)usage_percent                     	   
   )ppidruideuidsuidrgidegidsgidttynrctimestatusname)cpuutimecpustimerssvmspfaultspageins
numthreadsvolctxsw	scputimesusernicesystemidlesvmem)total	availablepercentusedfreeactiveinactivewiredpmem)r'   r(   r)   r*   pfullmem)ussc            	   	   C   sT   t  \} }}}}}|| }|| }||8 }t| | | dd}t| |||||||S )z&System virtual memory as a namedtuple.r   Zround_)cextZvirtual_memr   r3   )	r4   r9   r:   r;   r8   ZspeculativeZavailr7   r6    rA   Y/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/psutil/_psosx.pyvirtual_memoryn   s   rC   c                  C   s4   t  \} }}}}t|| dd}t| |||||S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r?   )r@   Zswap_memr   r   Zsswap)r4   r7   r8   sinZsoutr6   rA   rA   rB   swap_memory}   s   rE   c                  C   s   t  \} }}}t| |||S )z(Return system CPU times as a namedtuple.)r@   	cpu_timesr-   r.   rA   rA   rB   rF      s   rF   c                  C   s:   g } t  D ]}|\}}}}t||||}| | q| S )z)Return system CPU times as a named tuple.)r@   per_cpu_timesr-   append)retZcpu_tr/   r0   r1   r2   itemrA   rA   rB   rG      s   rG   c                   C      t  S )z0Return the number of logical CPUs in the system.)r@   cpu_count_logicalrA   rA   rA   rB   rL         rL   c                   C   rK   )z-Return the number of CPU cores in the system.)r@   cpu_count_coresrA   rA   rA   rB   rN      rM   rN   c                  C   s"   t  \} }}}}t| |||S N)r@   	cpu_statsr   Z	scpustats)Zctx_switchesZ
interruptsZsoft_interruptsZsyscallsZ_trapsrA   rA   rB   rP      s
   rP   c                  C   s   t  \} }}t| ||gS )zReturn CPU frequency.
        On macOS per-cpu frequency is not supported.
        Also, the returned frequency never changes, see:
        https://arstechnica.com/civis/viewtopic.php?f=19&t=465002.
        )r@   cpu_freqr   Zscpufreq)currZmin_Zmax_rA   rA   rB   rQ      s   rQ   Fc           	      C   sj   g }t  }|D ]*}|\}}}}|dkrd}| s%tj|r$tj|s%qt||||}|| q|S )z8Return mounted disk partitions as a list of namedtuples.none )	r@   disk_partitionsospathisabsexistsr   Z	sdiskpartrH   )	allretlistZ
partitions	partitionZdeviceZ
mountpointZfstypeoptsntuplerA   rA   rB   rU      s   rU   c                  C   sb   z	t  \} }}W n
 ty   Y dS w |dk}|rtj}n|dkr&tj}n|d }t| ||S )zReturn battery information.Nr   <   )r@   sensors_batteryNotImplementedErrorr   ZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNZsbattery)r6   ZminsleftZpower_pluggedZsecsleftrA   rA   rB   ra      s   ra   inetc              	   C   sf   g }t  D ]+}z	t|| }W n	 ty   Y qw |r0|D ]}t||g }|tj|  qq|S )z System-wide network connections.)pidsProcessnet_connectionsr   listrH   r   Zsconn)kindrI   pidZconscrA   rA   rB   rf      s   
rf   c            
      C   s   t   } i }| D ]M}zt|}t|}t|\}}W n ty7 } z|jtjkr- W Y d}~q	d}~ww t	t
drBt
|}d|}d|v }	t
|	||||||< q	|S )z)Get NIC stats (isup, duplex, speed, mtu).N	NicDuplex,running)net_io_counterskeysr@   Z
net_if_mtuZnet_if_flagsZnet_if_duplex_speedOSErrorerrnoZENODEVhasattrr   rk   joinZ	snicstats)
namesrI   r$   ZmtuflagsZduplexspeederrZoutput_flagsZisuprA   rA   rB   net_if_stats  s*   







rx   c                   C   rK   )z:The system boot time expressed in seconds since the epoch.)r@   	boot_timerA   rA   rA   rB   ry     rM   ry   zignoring exception on import: c                 C   sN   t dkr| S t t  }|dkst|dk r| S td |dk r#| | S | | S )z!Account for system clock updates.r   r   z9system clock was updated; adjusting process create_time())INIT_BOOT_TIMEry   absr   )r"   diffrA   rA   rB   adjust_proc_create_time,  s   
r}   c            	      C   s\   g } t  }|D ]#}|\}}}}}|dkrq|sqt||pd|p"d||}| | q| S )z:Return currently connected users as a list of namedtuples.~N)r@   usersr   ZsuserrH   )	r[   rawlistrJ   r/   ttyhostnameZtstampri   ntrA   rA   rB   r   ;  s   r   c                  C   sf   t  } d| vr1ztd  | dd W | S  ty!   Y | S  ty0   | dd Y | S w | S Nr   )r@   rd   re   create_timeinsertr   r   )ZlsrA   rA   rB   rd   O  s   rd   c                    s   t   fdd}|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c              
      s   | j | j| j}}}z | g|R i |W S  ty5 } zt|r+t||||t|||d }~w tyF } zt	|||d }~w tj
yY } zt||||d }~ww rO   )ri   _ppid_nameProcessLookupErrorr@   Zproc_is_zombier	   r   PermissionErrorr   ZZombieProcessError)selfargskwargsri   r   r$   rw   funrA   rB   wrapperg  s   
z wrap_exceptions.<locals>.wrapper)	functoolswraps)r   r   rA   r   rB   wrap_exceptionsb  s   r   c                   @   sj  e Zd ZdZg dZdd Zeedd Zeedd Z	d	d
 Z
dd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed>d&d'Zed(d) Zed*d+ Zed,d- Zed?d/d0Zed1d2 Zed@d4d5Zed6d7 Zed8d9 Z ed:d; Z!ed<d= Z"d3S )Are   z1Wrapper class around underlying C implementation.)_cacher   r   ri   c                 C   s   || _ d | _d | _d S rO   )ri   r   r   )r   ri   rA   rA   rB   __init__}  s   
zProcess.__init__c                 C   $   t | j}t|ttksJ |S rO   )r@   Zproc_kinfo_oneshotri   lenkinfo_proc_mapr   rI   rA   rA   rB   _get_kinfo_proc     zProcess._get_kinfo_procc                 C   r   rO   )r@   Zproc_pidtaskinfo_oneshotri   r   pidtaskinfo_mapr   rA   rA   rB   _get_pidtaskinfo  r   zProcess._get_pidtaskinfoc                 C      | j |  | j|  d S rO   )r   Zcache_activater   r   rA   rA   rB   oneshot_enter     zProcess.oneshot_enterc                 C   r   rO   )r   Zcache_deactivater   r   rA   rA   rB   oneshot_exit  r   zProcess.oneshot_exitc                 C   s(   |   td  }|d ur|S t| jS )Nr$   )r   r   r@   Z	proc_nameri   )r   r$   rA   rA   rB   r$     s   zProcess.namec                 C      t | jS rO   )r@   Zproc_exeri   r   rA   rA   rB   exe     zProcess.exec                 C   r   rO   )r@   Zproc_cmdlineri   r   rA   rA   rB   cmdline  r   zProcess.cmdlinec                 C   s   t t| jS rO   )r   r@   Zproc_environri   r   rA   rA   rB   environ     zProcess.environc                 C   s   |   td  | _| jS )Nr   )r   r   r   r   rA   rA   rB   r     s   zProcess.ppidc                 C   r   rO   )r@   Zproc_cwdri   r   rA   rA   rB   cwd  r   zProcess.cwdc                 C   .   |   }t|td  |td  |td  S )Nr   r   r   r   r   Zpuidsr   r   ZrawtuplerA   rA   rB   uids     


zProcess.uidsc                 C   r   )Nr   r   r    r   r   rA   rA   rB   gids  r   zProcess.gidsc                 C   s8   |   td  }t }z|| W S  ty   Y d S w )Nr!   )r   r   r   Zget_terminal_mapKeyError)r   Ztty_nrZtmaprA   rA   rB   terminal  s   
zProcess.terminalc                 C   s6   |   }t|td  |td  |td  |td  S )Nr'   r(   r)   r*   )r   r<   r   r   rA   rA   rB   memory_info  s   



zProcess.memory_infoc                 C   s"   |   }t| j}t||f  S rO   )r   r@   Zproc_memory_ussri   r=   )r   Z	basic_memr>   rA   rA   rB   memory_full_info  s   zProcess.memory_full_infoc                 C   s(   |   }t|td  |td  ddS )Nr%   r&   g        )r   r   Z	pcputimesr   r   rA   rA   rB   rF     s   

zProcess.cpu_timesFc                 C   s    |   td  }|st|}|S )Nr"   )r   r   r}   )r   	monotonicr"   rA   rA   rB   r     s   zProcess.create_timec                 C      |   td  }t|dS )Nr,   r   )r   r   r   Zpctxsw)r   ZvolrA   rA   rB   num_ctx_switches  s   zProcess.num_ctx_switchesc                 C   s   |   td  S )Nr+   )r   r   r   rA   rA   rB   num_threads  r   zProcess.num_threadsc                 C   sN   | j dkrg S g }t| j }|D ]\}}t|r$t||}|| q|S r   )ri   r@   Zproc_open_filesr   r   Z	popenfilerH   )r   filesr   rW   fdr^   rA   rA   rB   
open_files  s   

zProcess.open_filesrc   c              	   C   s\   t | \}}t| j||}g }|D ]}|\}}}	}
}}t|||	|
||t}|| q|S rO   )r
   r@   Zproc_net_connectionsri   r   TCP_STATUSESrH   )r   rh   Zfamiliestypesr   rI   rJ   r   famtypeladdrraddrr#   r   rA   rA   rB   rf   	  s   zProcess.net_connectionsc                 C   s   | j dkrdS t| j S r   )ri   r@   Zproc_num_fdsr   rA   rA   rB   num_fds  s   
zProcess.num_fdsNc                 C   s   t | j|| jS rO   )r   Zwait_pidri   r   )r   timeoutrA   rA   rB   wait  s   zProcess.waitc                 C   r   rO   )r@   Zproc_priority_getri   r   rA   rA   rB   nice_get   r   zProcess.nice_getc                 C   s   t | j|S rO   )r@   Zproc_priority_setri   )r   valuerA   rA   rB   nice_set$  s   zProcess.nice_setc                 C   r   )Nr#   ?)r   r   PROC_STATUSESget)r   coderA   rA   rB   r#   (  s   zProcess.statusc                 C   s<   t | j}g }|D ]\}}}t|||}|| q
|S rO   )r@   Zproc_threadsri   r   ZpthreadrH   )r   r   r[   	thread_idutimeZstimer^   rA   rA   rB   threads.  s   zProcess.threadsFrc   rO   )#__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r$   r   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   rf   r   r   r   r   r#   r   rA   rA   rA   rB   re   x  st    









	









re   r   r   )`r   rq   r   rV   collectionsr   rT   r   r   r   r@   r   r   r	   r
   r   r   r   r   r   r   Z__extra__all__ZgetpagesizePAGESIZEZAF_LINKZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZTCPS_SYN_SENTZCONN_SYN_SENTZTCPS_SYN_RECEIVEDZCONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZTCPS_CLOSEDZ
CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZTCPS_LAST_ACKZCONN_LAST_ACKZTCPS_LISTENZCONN_LISTENZTCPS_CLOSINGZCONN_CLOSINGZPSUTIL_CONN_NONEZ	CONN_NONEr   ZSIDLZSTATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDZSZOMBZSTATUS_ZOMBIEr   dictr   r   r-   r3   r<   _fieldsr=   rC   rE   rF   rG   rL   rN   rP   Zhas_cpu_freqrQ   
disk_usageZdisk_io_countersrU   ra   rn   Znet_if_addrsrf   rx   ry   rz   	Exceptionrw   r}   r   rd   Z
pid_existsr   re   rA   rA   rA   rB   <module>   s   	

	


