
    
3j                     h    S SK r S SKrS SKrS SKJr  S SKrSSKJr  SSKJr  SSK	J
r
   " S S	5      rg)
    N)
DataSource   )CGPUInfogetDrivesInfo   )loggerc                       \ rS rSrSrSrSrSrSr\	S 5       r
\
R                  S 5       r
\	S 5       r\R                  S 5       rSS	 jrS
 rS rS rS rSrg)CHardwareInfo   z`
This is only class to get information from hardware.
Specially for share it to other software.
F/c                 .    U R                   R                  $ NGPUInfo	switchGPUselfs    O/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-Crystools/general/hardware.pyr   CHardwareInfo.switchGPU   s    ||%%%    c                 $    XR                   l        g r   r   r   values     r   r   r      s    !&r   c                 .    U R                   R                  $ r   r   
switchVRAMr   s    r   r   CHardwareInfo.switchVRAM   s    ||&&&r   c                 $    XR                   l        g r   r   r   s     r   r   r       s    "'r   c                 ~    Xl         X0l        X@l        U R                  5         [	        5       U l        X l        XPl        g r   )	switchCPU	switchHDD	switchRAMprint_sys_infor   r   r   r   )r   r!   r   r"   r#   r   s         r   __init__CHardwareInfo.__init__$   s0    """z"$r   c                    S n[         R                  (       a%  [         R                  " 5       R                  5       nGO[         R                  " 5       (       ai  [         R
                  " 5       u  p#US:X  aK  UbH  UR                  5        H4  n[        R                  " SU5      nU(       d  M#  UR                  S5      n  O   O[         R                  " 5       (       ah  [         R                  " 5       u  p#US:X  aK  UbH  UR                  5        H4  n[        R                  " SU5      nU(       d  M#  UR                  S5      n  O   U(       d%  [        R                  " 5       R                  SS5      nSn [         R                  nSU-   nS	U-   nS
[!        ["        R$                  " 5       5      -   S-   [!        ["        R&                  " 5       5      -   n	[(        R*                  " U SU SU	 35        g !    Np= f)Nr   zmodel name\s*:\s*(.+)r   z%machdep\.cpu\.brand_string\s*:\s*(.+)	brand_rawUnknownzArch unknownzCPU: zArch: zOS:  z - )r   
is_windowswinreg_processor_brandstriphas_proc_cpuinfocat_proc_cpuinfo
splitlinesresearchgroup
has_sysctl"sysctl_machdep_cpu_hw_cpufrequencycpuinfoget_cpu_infogetarch_string_rawstrplatformsystemreleaser	   info)
r   brandreturn_codeoutputlinerr9   specNamespecArchspecOss
             r   r$   CHardwareInfo.print_sys_info/   s     557==?E((**","="="?KaF$6"--/D		":DAAq !
	 0
 ""$$","O"O"QKaF$6"--/D		"JDQAq !
	 0 ((*..{IFE(	(88O U?o-#hoo/0036X=M=M=O9PPxjH:S9:	s   1G- -G1c                     [        5       $ r   r   r   s    r   getHDDsInfoCHardwareInfo.getHDDsInfoT   s
    r   c                 6    U R                   R                  5       $ r   )r   getInfor   s    r   
getGPUInfoCHardwareInfo.getGPUInfoW   s    ||##%%r   c           
         SnSnSnSnSnSnSnU R                   (       a  [        R                  " 5       nU R                  (       a9  [        R                  " 5       nUR
                  nUR                  nUR                  nU R                  (       aE   [        R                  " U R                  5      n	U	R
                  nU	R                  nU	R                  nU R                  R                  5       nUUUUUUUUS   US   S.	$ ! [         a6  n
[        R                  " SU R                   SU
 35        SnSnSn S n
A
NgS n
A
ff = f)NzError getting disk usage for z: device_typegpus)	cpu_utilization	ram_totalram_usedram_used_percent	hdd_totalhdd_usedhdd_used_percentrQ   rR   )r!   psutilcpu_percentr#   virtual_memorytotalusedpercentr"   
disk_usagewhichHDD	Exceptionr	   errorr   	getStatus)r   cpuramTotalramUsedramUsedPercenthddTotalhddUsedhddUsedPercentramhdderd   s               r   rd   CHardwareInfo.getStatusZ   s)   >>$$&C>>'')CyyHhhG [[N>>	$''699((!$ LL**,	  #! .! .$]3f%

 
	
  $<T]]O2aSQR!#	$s   AD 
E,D<<E)r   r!   r   r"   r#   r   N)FFFFF)__name__
__module____qualname____firstlineno____doc__r!   r"   r#   ra   propertyr   setterr   r%   r$   rI   rM   rd   __static_attributes__ r   r   r   r      s     IIIH& &' ' ' '( (	%#;J&*
r   r   )r;   r1   r6   r   rZ   gpur   rm   r   corer	   r   rx   r   r   <module>r{      s)     	      x
 x
r   