
    9i/                        S 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  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  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  SSKJr  SSKJr  SSKJr  SSKJr   " S S\5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      rg)#zContracts tests. These tests mainly check API sanity in terms of
returned types and APIs availability.
Some of these are duplicates of tests test_system.py and test_process.py.
    N)AIX)FREEBSD)LINUX)MACOS)NETBSD)OPENBSD)POSIX)SUNOS)WINDOWS)AARCH64)GITHUB_ACTIONS)HAS_CPU_FREQ)HAS_NET_IO_COUNTERS)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)SKIP_SYSCONS)PsutilTestCase)create_sockets)enum)is_namedtuple)kernel_version)pytestc                   ~    \ rS rSrS rS rS rS r\R                  R                  \=(       a    \SS9S 5       rS	rg
)TestAvailConstantsAPIs.   c                 l    [        [        S5      [        =(       d    [        =(       d    [        :X  d   eg )NPROCFS_PATH)hasattrpsutilr   r
   r   selfs    [/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/psutil/tests/test_contracts.pytest_PROCFS_PATH'TestAvailConstantsAPIs.test_PROCFS_PATH/   s!    v}-%2G52GCHHH    c                 <   [        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   eg )NABOVE_NORMAL_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSIDLE_PRIORITY_CLASSNORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASSr   r   r   r    s    r"   test_win_priority(TestAvailConstantsAPIs.test_win_priority2   s    v<=HHHv<=HHHv45@@@v45@@@v677BBBv89WDDDr%   c                     [        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   eg )NIOPRIO_CLASS_NONEIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLEr   r   r   r    s    r"   test_linux_ioprio_linux.TestAvailConstantsAPIs.test_linux_ioprio_linux:   sZ    v23u<<<v01U:::v01U:::v23u<<<r%   c                     [        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   eg )NIOPRIO_HIGHIOPRIO_NORMAL
IOPRIO_LOWIOPRIO_VERYLOWr-   r    s    r"   test_linux_ioprio_windows0TestAvailConstantsAPIs.test_linux_ioprio_windows@   sW    v}-888v/7:::v|,777v/0G;;;r%   %unsupported on GITHUB_ACTIONS + LINUXreasonc                    [        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S	5      [        :X  d  [        (       d   e[        [        S
5      [        :X  d  [        (       d   e[        [        S5      [        :X  d  [        (       d   e[        [        S5      [        :X  d   e[        (       a  [        5       S:  a  [        [        S5      [        :X  d   e[        5       S:  a  [        [        S5      [        :X  d   e[        5       S:  a  [        [        S5      [        :X  d   e[        5       S:  a  [        [        S5      [        :X  d   e[        5       S:  a  [        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   e[        [        S5      [        :X  d   eg )NRLIM_INFINITY	RLIMIT_ASRLIMIT_CORE
RLIMIT_CPURLIMIT_DATARLIMIT_FSIZERLIMIT_MEMLOCKRLIMIT_NOFILERLIMIT_NPROC
RLIMIT_RSSRLIMIT_STACKRLIMIT_LOCKS)         RLIMIT_MSGQUEUE)rO   rP      RLIMIT_NICERLIMIT_RTPRIO)rO   rP      RLIMIT_RTTIMERLIMIT_SIGPENDINGRLIMIT_SWAPRLIMIT_SBSIZERLIMIT_NPTS)r   r   r   r   r	   r   r    s    r"   test_rlimit"TestAvailConstantsAPIs.test_rlimitF   s   
 v/58GGCCv{+u4??v}-6''AAv|,5@@v}-6''AAv~.%777BBv/0E9WWDDv/58GGCCv~.%777BBv|,5@@v~.%777BBv~.%77759,v'89UBBB:-v}5>>>:-v75@@@:-v75@@@9,v':;uDDDv}-888v/7:::v}-888r%    N)__name__
__module____qualname____firstlineno__r#   r.   r6   r=   r   markskipifr   r   r\   __static_attributes__r^   r%   r"   r   r   .   sK    IE=< [[ 56  9	9r%   r   c                       \ rS rSrS rS r\R                  R                  \	=(       a    \
SS9S 5       rS rS rS	 rS
rg)TestAvailSystemAPIsi   c                 8    [        [        S5      [        :X  d   eg )Nwin_service_iterr-   r    s    r"   test_win_service_iter)TestAvailSystemAPIs.test_win_service_iterj   s    v12g===r%   c                 8    [        [        S5      [        :X  d   eg )Nwin_service_getr-   r    s    r"   test_win_service_get(TestAvailSystemAPIs.test_win_service_getm   s    v01W<<<r%   skipped due to #1892r@   c                     [        [        S5      [        =(       d-    [        =(       d     [        =(       d    [
        =(       d    [        :X  d   eg )Ncpu_freq)r   r   r   r   r   r   r   r    s    r"   test_cpu_freq!TestAvailSystemAPIs.test_cpu_freqp   s2    vz*;U;g;;G
 	
 
r%   c                 R    [        [        S5      [        =(       d    [        :X  d   eg )Nsensors_temperatures)r   r   r   r   r    s    r"   test_sensors_temperatures-TestAvailSystemAPIs.test_sensors_temperaturesv   s    v565;KGLLLr%   c                 8    [        [        S5      [        :X  d   eg )Nsensors_fansr5   r    s    r"   test_sensors_fans%TestAvailSystemAPIs.test_sensors_fansy   s    v~.%777r%   c                     [        [        S5      [        =(       d     [        =(       d    [        =(       d    [
        :X  d   eg )Nsensors_battery)r   r   r   r   r   r   r    s    r"   test_battery TestAvailSystemAPIs.test_battery|   s.    v010W005
 	
 
r%   r^   N)r_   r`   ra   rb   rk   ro   r   rc   rd   r   r   rt   rx   r|   r   re   r^   r%   r"   rg   rg   i   sK    >= [[)'2HI
 J

M8
r%   rg   c                       \ rS rSrS rS rS rS rS r\	R                  R                  \=(       a    \SS9S	 5       rS
 rS rS rS rS rS rSrg)TestAvailProcessAPIs   c                    [        [        R                  S5      [        =(       dT    [        =(       dG    [
        =(       d:    [        =(       d-    [        =(       d     [        =(       d    [        =(       d    [        :X  d   eg )Nenviron)r   r   Processr   r   r   r   r
   r   r   r   r    s    r"   test_environ!TestAvailProcessAPIs.test_environ   sd    v~~y1   	
   	
 		
 	
r%   c                 L    [        [        R                  S5      [        :X  d   eg Nuidsr   r   r   r	   r    s    r"   	test_uidsTestAvailProcessAPIs.test_uids       v~~v.%777r%   c                 L    [        [        R                  S5      [        :X  d   eg r   r   r    s    r"   	test_gidsTestAvailProcessAPIs.test_gids   r   r%   c                 L    [        [        R                  S5      [        :X  d   eg )Nterminalr   r    s    r"   test_terminal"TestAvailProcessAPIs.test_terminal   s    v~~z2e;;;r%   c                 f    [        [        R                  S5      [        =(       d    [        :X  d   eg )Nionice)r   r   r   r   r   r    s    r"   test_ionice TestAvailProcessAPIs.test_ionice   s     v~~x0U5EgFFFr%   r?   r@   c                 f    [        [        R                  S5      [        =(       d    [        :X  d   eg )Nrlimit)r   r   r   r   r   r    s    r"   r\    TestAvailProcessAPIs.test_rlimit   s"    
 v~~x0U5EgFFFr%   c                 t    [        [        R                  S5      nU[        =(       d    [        (       + :X  d   eg )Nio_counters)r   r   r   r   r
   r!   hasits     r"   test_io_counters%TestAvailProcessAPIs.test_io_counters   s'    6enu-...r%   c                 L    [        [        R                  S5      [        :X  d   eg )Nnum_fdsr   r    s    r"   test_num_fds!TestAvailProcessAPIs.test_num_fds   s    v~~y1U:::r%   c                 L    [        [        R                  S5      [        :X  d   eg )Nnum_handles)r   r   r   r   r    s    r"   test_num_handles%TestAvailProcessAPIs.test_num_handles   s    v~~}5@@@r%   c                     [        [        R                  S5      [        =(       d    [        =(       d    [
        :X  d   eg )Ncpu_affinity)r   r   r   r   r   r   r    s    r"   test_cpu_affinity&TestAvailProcessAPIs.test_cpu_affinity   s,    v~~~6'W'
 	
 
r%   c                     [        [        R                  S5      [        =(       d    [        =(       d    [
        :X  d   eg )Ncpu_num)r   r   r   r   r   r
   r    s    r"   test_cpu_num!TestAvailProcessAPIs.test_cpu_num   s,    v~~y1%W%
 	
 
r%   c                     [        [        R                  S5      nU[        =(       d     [        =(       d    [
        =(       d    [        (       + :X  d   eg )Nmemory_maps)r   r   r   r   r   r   r   r   s     r"   test_memory_maps%TestAvailProcessAPIs.test_memory_maps   s2    6g??3?%@AAAr%   r^   N)r_   r`   ra   rb   r   r   r   r   r   r   rc   rd   r   r   r\   r   r   r   r   r   r   re   r^   r%   r"   r   r      sq    

88<G [[ 56  G	G/;A



Br%   r   c                   &   \ rS rSrSr\S 5       r\S4S jrS r	S r
S rS	 r\R                  R                  \=(       a    \S
S9\R                  R                  \(       + SS9S 5       5       rS rS r\R                  R                  \SS9S 5       rS rS r\R                  R                  \(       + SS9S 5       r\R                  R                  \(       + SS9S 5       r\R                  R                  \(       + SS9S 5       rS r S r!Sr"g)TestSystemAPITypes   z`Check the return types of system related APIs.
https://github.com/giampaolo/psutil/issues/1039.
c                 8    [         R                  " 5       U l        g N)r   r   proc)clss    r"   
setUpClassTestSystemAPITypes.setUpClass   s    >>#r%   Tc                     [        U5      (       d   eU H&  n[        XB5      (       d   eU(       d  M  US:  a  M&   e   g Nr   )r   
isinstance)r!   nttype_gezerons        r"   assert_ntuple_of_nums(TestSystemAPITypes.assert_ntuple_of_nums   s>    R    Aa''''vAvv r%   c                     U R                  [        R                  " 5       5        [        R                  " SS9 H  nU R                  U5        M     g )NT)percpu)r   r   	cpu_times)r!   r   s     r"   test_cpu_times!TestSystemAPITypes.test_cpu_times   s<    ""6#3#3#56""$/B&&r* 0r%   c                     [        [        R                  " S S9[        5      (       d   e[        [        R                  " SS9[        5      (       d   eg )Nintervalgh㈵>)r   r   cpu_percentfloatr    s    r"   test_cpu_percent#TestSystemAPITypes.test_cpu_percent   s>    &,,d;UCCCC&,,g>FFFFr%   c                     U R                  [        R                  " S S95        U R                  [        R                  " SS95        g )Nr   g-C6?)r   r   cpu_times_percentr    s    r"   test_cpu_times_percent)TestSystemAPITypes.test_cpu_times_percent   s4    ""6#;#;T#JK""6#;#;V#LMr%   c                 X    [        [        R                  " 5       [        5      (       d   eg r   )r   r   	cpu_countintr    s    r"   test_cpu_count!TestSystemAPITypes.test_cpu_count   s    &**,c2222r%   rq   r@   znot supportedc                     [         R                  " 5       c  [        R                  " S5      $ U R	                  [         R                  " 5       [
        [        4S9  g )Nzcpu_freq() returns Noner   )r   rs   r   skipr   r   r   r    s    r"   rt    TestSystemAPITypes.test_cpu_freq   s?     ??$;;899""6??#4UCL"Ir%   c                     [         R                  " SS9R                  5        H0  u  p[        U[        5      (       d   eU R                  U[        S9  M2     g )NT)perdiskr   )r   disk_io_countersitemsr   strr   r   )r!   kvs      r"   test_disk_io_counters(TestSystemAPITypes.test_disk_io_counters   sI    ++D9??ADAa%%%%&&q&4 Br%   c                 D   [         R                  " 5        H  n[        UR                  [        5      (       d   e[        UR
                  [        5      (       d   e[        UR                  [        5      (       d   e[        UR                  [        5      (       a  M   e   g r   )r   disk_partitionsr   devicer   
mountpointfstypeopts)r!   disks     r"   test_disk_partitions'TestSystemAPITypes.test_disk_partitions   sq    **,Ddkk3////doos3333dkk3////dii----	 -r%   zrequires rootc                     [        5          [        R                  " S5      n[        U5      [        [	        U5      5      :X  d   eU H  n[        U5      (       a  M   e   S S S 5        g ! , (       d  f       g = f)Nall)r   r   net_connectionslensetr   )r!   retconns      r"   test_net_connections'TestSystemAPITypes.test_net_connections   sY    ((/Cs8s3s8},,,$T****  s   AA)A))
A7c           	         [         R                  " 5       R                  5        H  u  p[        U[        5      (       d   eU H  n[        UR
                  [        R                  5      (       d   e[        UR                  [        5      (       d   e[        UR                  [        [        S 5      45      (       d   e[        UR                  [        [        S 5      45      (       a  M   e   M     g r   )r   net_if_addrsr   r   r   familyr   IntEnumaddressnetmasktype	broadcast)r!   ifnameaddrsaddrs       r"   test_net_if_addrs$TestSystemAPITypes.test_net_if_addrs   s    #00288:MFfc****!$++t||<<<<!$,,4444!$,,d4j0ABBBB!$..3T
2CDDDD	  ;r%   c                    [         R                  " 5       R                  5        H  u  p[        U[        5      (       d   e[        UR
                  [        5      (       d   e[        UR                  [        R                  5      (       d   e[        UR                  [        5      (       d   e[        UR                  [        5      (       a  M   e   g r   )r   net_if_statsr   r   r   isupboolduplexr   r  speedr   mtu)r!   r  infos      r"   test_net_if_stats$TestSystemAPITypes.test_net_if_stats  s    "//1779LFfc****dii....dkk4<<8888djj#....dhh,,,, :r%   c                 h    [         R                  " SS9 H  n[        U[        5      (       a  M   e   g )NT)pernic)r   net_io_countersr   r   )r!   r  s     r"   test_net_io_counters'TestSystemAPITypes.test_net_io_counters  s,     ,,D9Ffc**** :r%   c           
      @   [         R                  " 5       R                  5        Hw  u  p[        U[        5      (       d   eU HU  n[        UR
                  [        5      (       d   e[        UR                  [        [        [        S 5      45      (       a  MU   e   My     g r   )
r   r{   r   r   r   labelcurrentr   r   r  r!   nameunitsunits       r"   r|   $TestSystemAPITypes.test_sensors_fans  sx     "..0668KDdC((((!$**c2222!$,,T$Z0HIIII  9r%   c           
         [         R                  " 5       R                  5        H  u  p[        U[        5      (       d   eU H  n[        UR
                  [        5      (       d   e[        UR                  [        [        [        S 5      45      (       d   e[        UR                  [        [        [        S 5      45      (       d   e[        UR                  [        [        [        S 5      45      (       a  M   e   M     g r   )r   rw   r   r   r   r  r  r   r   r  highcriticalr  s       r"   rx   ,TestSystemAPITypes.test_sensors_temperatures   s     "668>>@KDdC((((!$**c2222!$,,T$Z0HIIII!$))eS$t*-EFFFF!$--%d4j1IJJJJ	  Ar%   c                 X    [        [        R                  " 5       [        5      (       d   eg r   )r   r   	boot_timer   r    s    r"   test_boot_time!TestSystemAPITypes.test_boot_time+  s    &**,e4444r%   c                    [         R                  " 5        H  n[        UR                  [        5      (       d   e[        UR
                  [        [        S 5      45      (       d   e[        UR                  [        [        S 5      45      (       d   e[        UR                  [        [        S 5      45      (       d   e[        UR                  [        5      (       d  M  UR                  S:  a  M   e   g r   )
r   usersr   r  r   r   r  hostpidr   )r!   users     r"   
test_usersTestSystemAPITypes.test_users/  s    LLNDdii----dmmc4:->????dii#tDz):;;;;dhhd4j(9::::$((C((xx!|#| #r%   r^   N)#r_   r`   ra   rb   __doc__classmethodr   r   r   r   r   r   r   r   rc   rd   r   r   r   rt   r   r   r   r   r
  r  r   r  r   r|   r   rx   r)  r0  re   r^   r%   r"   r   r      s`    $ $ /4D +
GN3 [[)'2HI[[L(AJ B JJ
5. [[_=+ >+E- [[//H+ I+
 [[,,_EJ FJ [[44_MK NK5$r%   r   c                   ^    \ rS rSr\R
                  R                  \(       + SS9S 5       rSr	g)TestProcessWaitTypei:  z	not POSIXr@   c                    [         R                  " U R                  5       R                  5      nUR	                  5         UR                  5       nU[        R                  * :X  d   e[        U[        R                  5      (       d   eg r   )r   r   spawn_subprocr.  	terminatewaitsignalSIGTERMr   r   r  )r!   pcodes      r"   test_negative_signal(TestProcessWaitType.test_negative_signal;  s^    NN4--/334	vvx&&&$----r%   r^   N)
r_   r`   ra   rb   r   rc   rd   r	   r>  re   r^   r%   r"   r5  r5  :  s*    [[E	+6. 7.r%   r5  )r2  r:  r   r   r   r   r   r   r   r	   r
   r   psutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r   r   r5  r^   r%   r"   <module>rA     s   
              ' % , ) 1 % ' '  & ' 89^ 89v
. 
26B> 6B|w$ w$t.. .r%   