
    Xi@                        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
j                    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j0        iZ1e
j2        ej3        e
j4        ej5        e
j6        ej7        e
j8        ej9        e
j:        ej;        iZ< e=ddddddddddd          Z> e=dddddddd          Z? edg d          Z@ edg d           ZA ed!g d"          ZB ed#eBjC        d$z             ZDd% ZEd& ZFd' ZGd( ZHd) ZId* ZJd+ ZK e
jL                    rd, ZMejN        ZNe
jO        ZOd;d.ZPd/ ZQe
jR        ZRe
jS        ZSd<d1ZTd2 ZUd3 ZV	  eV            ZWn"# eX$ rZY ed4eY           dZWY dZY[YndZY[Yww xY wd5 ZZd6 Z[d7 Z\ej]        Z]d8 Z^ G d9 d:          Z_dS )=z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            
          t          j                    \  } }}}}}||z   }||z   }||z  }t          | |z
  | d          }t          | |||||||          S )z&System virtual memory as a namedtuple.r   round_)cextvirtual_memr   r4   )	r5   r:   r;   r<   r9   speculativeavailr8   r7   s	            e/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/psutil/_psosx.pyvirtual_memoryrH   n   sq    8<8H8J8J5E68UD+ tOEE>D 	KDUU]U1===GwdFHeLLL    c                      t          j                    \  } }}}}t          || d          }t          j        | |||||          S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   rA   )rC   swap_memr   r   sswap)r5   r8   r9   sinsoutr7   s         rG   swap_memoryrO   }   sF    #'=?? E4sDD%222G=dGS$???rI   c                  V    t          j                    \  } }}}t          | |||          S )z(Return system CPU times as a namedtuple.)rC   	cpu_timesr.   r/   s       rG   rQ   rQ      s,    #~//D$T4...rI   c                      g } t          j                    D ]0}|\  }}}}t          ||||          }|                     |           1| S )z)Return system CPU times as a named tuple.)rC   per_cpu_timesr.   append)retcpu_tr0   r1   r2   r3   items          rG   rS   rS      sZ    
C#%%  #( dFDtVT22

4JrI   c                  (    t          j                    S )z0Return the number of logical CPUs in the system.)rC   cpu_count_logical rI   rG   rY   rY      s    !###rI   c                  (    t          j                    S )z-Return the number of CPU cores in the system.)rC   cpu_count_coresrZ   rI   rG   r\   r\      s    !!!rI   c                  b    t          j                    \  } }}}}t          j        | |||          S N)rC   	cpu_statsr   	scpustats)ctx_switches
interruptssoft_interruptssyscalls_trapss        rG   r_   r_      s=     @L*ox j/8  rI   c                  ^    t          j                    \  } }}t          j        | ||          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.
        )rC   cpu_freqr   scpufreq)currmin_max_s      rG   rg   rg      s.      =??dD tT2233rI   Fc                 2   g }t          j                    }|D ]~}|\  }}}}|dk    rd}| s?t          j                            |          rt          j                            |          sRt          j        ||||          }|                    |           |S )z8Return mounted disk partitions as a list of namedtuples.none )	rC   disk_partitionsospathisabsexistsr   	sdiskpartrT   )	allretlist
partitions	partitiondevice
mountpointfstypeoptsntuples	            rG   ro   ro      s    G%''J  	+4(
FDVF 	7==(( v0F0F "6:vtDDvNrI   c                      	 t          j                    \  } }}n# t          $ r Y dS w xY w|dk    }|rt          j        }n|dk    rt          j        }n|dz  }t          j        | ||          S )zReturn battery information.Nr   <   )rC   sensors_batteryNotImplementedErrorr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)r7   minsleftpower_pluggedsecslefts       rG   r   r      s    +/+?+A+A(==   tt "Q&M !/	R-b=GX}===s    
((inetc                    g }t                      D ]p}	 t          |                              |           }|r9|D ]6}t          |          |gz   }|                    t          j        |            7a# t          $ r Y mw xY w|S )z System-wide network connections.)pidsProcessnet_connectionslistrT   r   sconnr	   )kindrU   pidconscs        rG   r   r      s     Cvv 	2 	2	23<<//55D  2 2 2AQ3%AJJw}a01111  	 	 	H	 Js   "A22
A?>A?c                     t                                                      } i }| D ]}	 t          j        |          }t          j        |          }t          j        |          \  }}t          t          d          rt          j        |          }d	                    |          }d|v }t          j
        |||||          ||<   # t          $ r }	|	j        t          j        k    r Y d}	~	d}	~	ww xY w|S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex,runningN)net_io_counterskeysrC   
net_if_mtunet_if_flagsnet_if_duplex_speedhasattrr   r   join	snicstatsOSErrorerrnoENODEV)
namesrU   r%   mtuflagsduplexspeedoutput_flagsisuperrs
             rG   net_if_statsr     s   ""$$E
C  	/$''C%d++E 4T::MFE w,, 3 *62288E??L%D)feS, CII  	 	 	yEL(( )((((	 Js   ?C
C/C**C/c                  (    t          j                    S )z:The system boot time expressed in seconds since the epoch.)rC   	boot_timerZ   rI   rG   r   r     s    >rI   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   )r#   diffs     rG   adjust_proc_create_timer   ,  sh    IKK'DqyyCIIMM	
EFFFaxxt|4<rI   c                      g } t          j                    }|D ]E}|\  }}}}}|dk    r|st          j        ||pd|pd||          }|                     |           F| S )z:Return currently connected users as a list of namedtuples.~N)rC   usersr   suserrT   )	rv   rawlistrW   r0   ttyhostnametstampr   nts	            rG   r   r   ;  s    GjllG  +/(c8VS#:: 	]4h.>$LLrNrI   c                     t          j                    } d| vrj	 t          d                                           |                     dd           n1# t
          $ r Y n%t          $ r |                     dd           Y nw xY w| S Nr   )rC   r   r   create_timeinsertr	   r   )lss    rG   r   r   O  s    	B{{	AJJ""$$$IIaOOOO 	 	 	D 	 	 	IIaOOOOO	Is   7A 
A?A?>A?c                 F     t          j                    fd            }|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                 ^   | j         | j        | j        }}}	  | g|R i |S # t          $ r<}t	          j        |          rt          |||          |t          ||          |d }~wt          $ r}t          ||          |d }~wt          j
        $ r}t          |||          |d }~ww xY wr^   )r   _ppid_nameProcessLookupErrorrC   proc_is_zombier
   r	   PermissionErrorr   ZombieProcessError)selfargskwargsr   r   r%   r   funs          rG   wrapperz wrap_exceptions.<locals>.wrapperg  s    (DJ
4T		:3t-d---f---! 	4 	4 	4"3'' >#Ct44#=T**3 	3 	3 	3sD))s2& 	: 	: 	:T400c9	:s,   $ 
B,7A%%B,2BB,B''B,)	functoolswraps)r   r   s   ` rG   wrap_exceptionsr   b  s:    
 _S: : : : : NrI   c                   x   e Zd ZdZg dZd Zee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d             Zed             Zed             Zed"d            Zed             Zed             Zed             Zed#d            Zed             Zed$d            Zed             Zed             Z ed              Z!ed!             Z"dS )%r   z1Wrapper class around underlying C implementation.)_cacher   r   r   c                 0    || _         d | _        d | _        d S r^   )r   r   r   )r   r   s     rG   __init__zProcess.__init__}  s    



rI   c                     t          j        | j                  }t          |          t          t                    k    sJ |S r^   )rC   proc_kinfo_oneshotr   lenkinfo_proc_mapr   rU   s     rG   _get_kinfo_proczProcess._get_kinfo_proc  s:     %dh//3xx3~......
rI   c                     t          j        | j                  }t          |          t          t                    k    sJ |S r^   )rC   proc_pidtaskinfo_oneshotr   r   pidtaskinfo_mapr   s     rG   _get_pidtaskinfozProcess._get_pidtaskinfo  s:     +DH553xx3//////
rI   c                 n    | j                             |            | j                            |            d S r^   )r   cache_activater   r   s    rG   oneshot_enterzProcess.oneshot_enter  s6    ++D111,,T22222rI   c                 n    | j                             |            | j                            |            d S r^   )r   cache_deactivater   r   s    rG   oneshot_exitzProcess.oneshot_exit  s6    --d333..t44444rI   c                     |                                  t          d                  }||nt          j        | j                  S )Nr%   )r   r   rC   	proc_namer   )r   r%   s     rG   r%   zProcess.name  s8    ##%%nV&<='ttT^DH-E-EErI   c                 4    t          j        | j                  S r^   )rC   proc_exer   r   s    rG   exezProcess.exe      }TX&&&rI   c                 4    t          j        | j                  S r^   )rC   proc_cmdliner   r   s    rG   cmdlinezProcess.cmdline  s     ***rI   c                 N    t          t          j        | j                            S r^   )r   rC   proc_environr   r   s    rG   environzProcess.environ  s    "4#4TX#>#>???rI   c                 d    |                                  t          d                  | _        | j        S )Nr   )r   r   r   r   s    rG   r   zProcess.ppid  s'    ))++N6,BC
zrI   c                 4    t          j        | j                  S r^   )rC   proc_cwdr   r   s    rG   cwdzProcess.cwd  r   rI   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                            S )Nr   r   r   r   r   puidsr   r   rawtuples     rG   uidszProcess.uids  N    ''))}^F+,^F+,^F+,
 
 	
rI   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                            S )Nr   r    r!   r   r   s     rG   gidszProcess.gids  r   rI   c                     |                                  t          d                  }t          j                    }	 ||         S # t          $ r Y d S w xY w)Nr"   )r   r   r   get_terminal_mapKeyError)r   tty_nrtmaps      rG   terminalzProcess.terminal  s\    %%''w(?@(**	< 	 	 	44	s   A 
AAc                     |                                  }t          |t          d                  |t          d                  |t          d                  |t          d                            S )Nr(   r)   r*   r+   )r   r=   r   r   s     rG   memory_infozProcess.memory_info  sY    ((**_U+,_U+,_Y/0_Y/0	
 
 	
rI   c                 v    |                                  }t          j        | j                  }t	          ||fz    S r^   )r  rC   proc_memory_ussr   r>   )r   	basic_memr?   s      rG   memory_full_infozProcess.memory_full_info  s7    $$&&	"48,,cV+,,rI   c                     |                                  }t          j        |t          d                  |t          d                  dd          S )Nr&   r'   g        )r   r   	pcputimesr   r   s     rG   rQ   zProcess.cpu_times  sH    ((** _Z01_Z01
 
 	
rI   Fc                 r    |                                  t          d                  }|st          |          }|S )Nr#   )r   r   r   )r   	monotonicr#   s      rG   r   zProcess.create_time  s7    $$&&~g'>? 	3+E22ErI   c                 v    |                                  t          d                  }t          j        |d          S )Nr-   r   )r   r   r   pctxsw)r   vols     rG   num_ctx_switcheszProcess.num_ctx_switches  s1    
 ##%%oj&AB~c1%%%rI   c                 L    |                                  t          d                  S )Nr,   )r   r   r   s    rG   num_threadszProcess.num_threads  s    $$&&|'DEErI   c                     | j         dk    rg S g }t          j        | j                   }|D ]>\  }}t          |          r*t	          j        ||          }|                    |           ?|S r   )r   rC   proc_open_filesr   r   	popenfilerT   )r   filesr   rq   fdr}   s         rG   
open_fileszProcess.open_files  sv    8q==I&tx00 	% 	%HD"T"" % *444V$$$rI   r   c           
          t           |         \  }}t          j        | j        ||          }g }|D ]:}|\  }}}	}
}}t	          |||	|
||t
                    }|                    |           ;|S r^   )r   rC   proc_net_connectionsr   r   TCP_STATUSESrT   )r   r   familiestypesr   rU   rW   r  famtypeladdrraddrr$   r   s                 rG   r   zProcess.net_connections	  s    #D/%+DHhFF 	 	D26/BT5%CueV\ B JJrNNNN
rI   c                 N    | j         dk    rdS t          j        | j                   S r   )r   rC   proc_num_fdsr   s    rG   num_fdszProcess.num_fds  s%    8q==1 ***rI   Nc                 B    t          j        | j        || j                  S r^   )r   wait_pidr   r   )r   timeouts     rG   waitzProcess.wait  s     7DJ???rI   c                 4    t          j        | j                  S r^   )rC   proc_priority_getr   r   s    rG   nice_getzProcess.nice_get   s    %dh///rI   c                 6    t          j        | j        |          S r^   )rC   proc_priority_setr   )r   values     rG   nice_setzProcess.nice_set$  s    %dh666rI   c                     |                                  t          d                  }t                              |d          S )Nr$   ?)r   r   PROC_STATUSESget)r   codes     rG   r$   zProcess.status(  s3    ##%%nX&>?  s+++rI   c                     t          j        | j                  }g }|D ]1\  }}}t          j        |||          }|                    |           2|S r^   )rC   proc_threadsr   r   pthreadrT   )r   r   rv   	thread_idutimestimer}   s          rG   threadszProcess.threads.  s\    #DH--'. 	# 	##Iue_Yu==FNN6""""rI   Fr   r^   )#__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r%   r   r   r   r   r   r   r   r  r  r
  rQ   r   r  r  r  r   r&  r*  r-  r1  r$   r=  rZ   rI   rG   r   r   x  s'       ;;333I  
    _    _3 3 35 5 5 F F _F ' ' _' + + _+ @ @ _@   _ ' ' _' 
 
 _
 
 
 _
   _ 
 
 _
 - - _-
 
 
 _
    _ & & _& F F _F 	 	 _	 
 
 
 _
 + + _+
 @ @ @ _@ 0 0 _0 7 7 _7 , , _,
   _  rI   r   r>  r?  )`rC  r   r   rp   collectionsr   rn   r   r   r   rC   r   r	   r
   r   r   r   r   r   r   r   __extra__all__getpagesizePAGESIZEAF_LINK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  SIDLSTATUS_IDLESRUNSTATUS_RUNNINGSSLEEPSTATUS_SLEEPINGSSTOPSTATUS_STOPPEDSZOMBSTATUS_ZOMBIEr4  dictr   r   r.   r4   r=   _fieldsr>   rH   rO   rQ   rS   rY   r\   r_   has_cpu_freqrg   
disk_usagedisk_io_countersro   r   r   net_if_addrsr   r   r   r   	Exceptionr   r   r   r   
pid_existsr   r   rZ   rI   rG   <module>rt     s  
 % $      				 " " " " " "             ! ! ! ! ! ! ! ! ! ! ! ! " " " " " " " " " " " "       # # # # # #       " " " " " " + + + + + + ( ( ( ( ( ( " " " " " " 4
, 	73-G1'0'0/g('1-g)w+7,  	Iw"Iw%K(J&J% 	
	
	
	
	
	
	


	   $			 	 	& J{$F$F$FGG	
 - - -	. 	. z&>>>??:j$,":;;M M M@ @ @/ / /  $ $ $
" " "
   4 	44 4 4  
(    *> > >, &    $  :  
Y[[NN   	E
23
2
2333NNNNNN    (     
  ,} } } } } } } } } }s   
H H1H,,H1