o
    ʩZhoX                     @   sH  d Z dgZddlZddlZddlZddlZddlZddlZddlm	Z	 d!ddZ
d!d	d
Zd!ddZ		d!ddZG dd dZG dd deZG dd deZG dd deZG dd deZG dd deZejdrqeZn.ejdrzeZn%ejdkreZnejdreZnejdreZnejd reZneZe ZdS )"aa  
cpuinfo

Copyright 2002 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@cens.ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy (BSD style) license.  See LICENSE.txt that came with
this distribution for specifics.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
Pearu Peterson

cpu    N)getstatusoutputr      c              
   C   st   zt | \}}W n ty% } ztjt|t|d W Y d }~dS d }~ww t|r6t||v r6d|fS d|fS )N
stacklevel)F TF)	r   OSErrorwarningswarnstrUserWarningos	WIFEXITEDWEXITSTATUS)cmdsuccessful_statusr   statusoutpute r   N/var/www/html/lang_env/lib/python3.10/site-packages/numpy/distutils/cpuinfo.py	getoutput   s   r   c                 K   s<   i }|D ]}t || | |d d\}}|r| ||< q|S Nr   r   r   )r   strip)r   r   kwinfokeyokr   r   r   r   command_info%   s   

r    c                 c   s<    t | ||d d\}}|sd S | D ]}| V  qd S r   )r   
splitlinesr   )r   r   r   r   r   liner   r   r   command_by_line.   s   
r#   c                 C   sR   i }t | ||d dD ]}dd ||dD }t|dkr&|d ||d < q|S )Nr   r   c                 S      g | ]}|  qS r   r   .0sr   r   r   
<listcomp>;       z*key_value_from_command.<locals>.<listcomp>   r   )r#   splitlen)r   sepr   r   dr"   lr   r   r   key_value_from_command6   s   
r1   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )CPUInfoBasezkHolds CPU information and provides methods for requiring
    the availability of various CPU features.
    c                 C   s   z| W S  t y   Y d S w N)	Exception)selffuncr   r   r   	_try_callE   s
   zCPUInfoBase._try_callc                 C   sZ   | ds)t| d| r%t| d| }t|tjr!| j|fddS t|dd S t|)N_c                 S   s   | |S r3   r   )r6   attrr   r   r   <lambda>P   s    z)CPUInfoBase.__getattr__.<locals>.<lambda>c                   S      d S r3   r   r   r   r   r   r:   R       )
startswithhasattrgetattr
isinstancetypes
MethodTyper7   AttributeError)r5   namer9   r   r   r   __getattr__K   s   
zCPUInfoBase.__getattr__c                 C   s   dS Nr   r   r5   r   r   r   	_getNCPUsU   s   zCPUInfoBase._getNCPUsc                 C   s&   t  d }td|d}|S )Nr   z(\d+)bitr   )platformarchitecturerecompilesearchgroup)r5   Zabitsnbitsr   r   r   Z__get_nbitsX   s   zCPUInfoBase.__get_nbitsc                 C      |   dkS )NZ32_CPUInfoBase__get_nbitsrG   r   r   r   	_is_32bit]      zCPUInfoBase._is_32bitc                 C   rP   )NZ64rQ   rG   r   r   r   	_is_64bit`   rT   zCPUInfoBase._is_64bitN)
__name__
__module____qualname____doc__r7   rE   rH   rR   rS   rU   r   r   r   r   r2   @   s    
r2   c                   @   s  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% ZeZd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'e'Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0dXdY Z1dZd[ Z2d\d] Z3dS )^LinuxCPUInfoNc           
   
   C   s   | j d urd S i g}td\}}|r| |d d< ztd}W n ty< } ztjt|tdd W Y d }~n7d }~ww |D ]+}dd |	d	d
D }t
|dkrSq?|\}}	|r_||d v rd|i  |	|d |< q?|  || j_ d S )Nzuname -mr   Zuname_mz/proc/cpuinfor+   r   c                 S   r$   r   r%   r&   r   r   r   r)   t   r*   z)LinuxCPUInfo.__init__.<locals>.<listcomp>:r   )r   r   r   openr	   r
   r   r   r   r,   r-   appendclose	__class__)
r5   r   r   r   for   r"   
name_valuerD   valuer   r   r   __init__g   s,   
 
zLinuxCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   	_not_impl~   r<   zLinuxCPUInfo._not_implc                 C      | j d d dkS )Nr   	vendor_idAuthenticAMDr   rG   r   r   r   _is_AMD      zLinuxCPUInfo._is_AMDc                 C      |   o| jd d dkS )Nr   model2rj   r   rG   r   r   r   _is_AthlonK6_2      zLinuxCPUInfo._is_AthlonK6_2c                 C   rl   )Nr   rm   3ro   rG   r   r   r   _is_AthlonK6_3   rq   zLinuxCPUInfo._is_AthlonK6_3c                 C      t d| jd d d uS )Nz	.*?AMD-K6r   
model namerK   matchr   rG   r   r   r   _is_AthlonK6   rq   zLinuxCPUInfo._is_AthlonK6c                 C   rt   )Nz	.*?AMD-K7r   ru   rv   rG   r   r   r   _is_AthlonK7   rq   zLinuxCPUInfo._is_AthlonK7c                 C   rt   )Nz.*?Athlon\(tm\) MP\br   ru   rv   rG   r   r   r   _is_AthlonMP   
   zLinuxCPUInfo._is_AthlonMPc                 C   rl   )Nr   family15is_AMDr   rG   r   r   r   	_is_AMD64   rq   zLinuxCPUInfo._is_AMD64c                 C   rt   )Nz.*?Athlon\(tm\) 64\br   ru   rv   rG   r   r   r   _is_Athlon64   r{   zLinuxCPUInfo._is_Athlon64c                 C   rt   )Nz.*?Athlon HX\br   ru   rv   rG   r   r   r   _is_AthlonHX   r{   zLinuxCPUInfo._is_AthlonHXc                 C   rt   )Nz.*?Opteron\br   ru   rv   rG   r   r   r   _is_Opteron   r{   zLinuxCPUInfo._is_Opteronc                 C   rt   )Nz.*?Hammer\br   ru   rv   rG   r   r   r   
_is_Hammer   r{   zLinuxCPUInfo._is_Hammerc                 C   rf   )Nr   r   Alphari   rG   r   r   r   	_is_Alpha   rk   zLinuxCPUInfo._is_Alphac                 C   rl   )Nr   	cpu modelZEV4Zis_Alphar   rG   r   r   r   _is_EV4   rq   zLinuxCPUInfo._is_EV4c                 C   rl   )Nr   r   ZEV5r   rG   r   r   r   _is_EV5   rq   zLinuxCPUInfo._is_EV5c                 C   rl   )Nr   r   ZEV56r   rG   r   r   r   _is_EV56   rq   zLinuxCPUInfo._is_EV56c                 C   rl   )Nr   r   ZPCA56r   rG   r   r   r   	_is_PCA56   rq   zLinuxCPUInfo._is_PCA56c                 C   rf   )Nr   rg   GenuineIntelri   rG   r   r   r   	_is_Intel   rk   zLinuxCPUInfo._is_Intelc                 C   rf   )Nr   r   Zi486ri   rG   r   r   r   _is_i486   rk   zLinuxCPUInfo._is_i486c                 C   rl   )Nr   
cpu family5is_Intelr   rG   r   r   r   _is_i586   rq   zLinuxCPUInfo._is_i586c                 C   rl   )Nr   r   6r   rG   r   r   r   _is_i686   rq   zLinuxCPUInfo._is_i686c                 C   rt   )Nz
.*?Celeronr   ru   rv   rG   r   r   r   _is_Celeron   r{   zLinuxCPUInfo._is_Celeronc                 C   rt   )Nz
.*?Pentiumr   ru   rv   rG   r   r   r   _is_Pentium   r{   zLinuxCPUInfo._is_Pentiumc                 C   rt   )Nz.*?Pentium.*?II\br   ru   rv   rG   r   r   r   _is_PentiumII   r{   zLinuxCPUInfo._is_PentiumIIc                 C   rt   )Nz.*?PentiumPro\br   ru   rv   rG   r   r   r   _is_PentiumPro   r{   zLinuxCPUInfo._is_PentiumProc                 C   rt   )Nz.*?Pentium.*?MMX\br   ru   rv   rG   r   r   r   _is_PentiumMMX   r{   zLinuxCPUInfo._is_PentiumMMXc                 C   rt   )Nz.*?Pentium.*?III\br   ru   rv   rG   r   r   r   _is_PentiumIII   r{   zLinuxCPUInfo._is_PentiumIIIc                 C   rt   )Nz.*?Pentium.*?(IV|4)\br   ru   rv   rG   r   r   r   _is_PentiumIV   r{   zLinuxCPUInfo._is_PentiumIVc                 C   rt   )Nz.*?Pentium.*?M\br   ru   rv   rG   r   r   r   _is_PentiumM   r{   zLinuxCPUInfo._is_PentiumMc                 C   s   |   o|  S r3   )Zis_PentiumIVhas_sse3rG   r   r   r   _is_Prescott      zLinuxCPUInfo._is_Prescottc                 C   sX   |   o+| jd d dkp| jd d dko+|  o|   o+td| jd d d uS )Nr   r   r   r}   z	.*?\blm\bflags)r   r   r   Z	has_ssse3rK   rw   rG   r   r   r   
_is_Nocona   s   zLinuxCPUInfo._is_Noconac                 C   s*   |   o|  otd| jd d d uS )Nz.*?Core\(TM\)2\br   ru   )Zis_64bitr   rK   rw   r   rG   r   r   r   	_is_Core2   s   zLinuxCPUInfo._is_Core2c                 C   rt   )Nz.*?Itanium\br   r|   rv   rG   r   r   r   _is_Itanium   r{   zLinuxCPUInfo._is_Itaniumc                 C   s   t d| jd d t jd uS )Nz	.*?XEON\br   ru   )rK   rw   r   
IGNORECASErG   r   r   r   _is_XEON   s
   zLinuxCPUInfo._is_XEONc                 C      t | jdkS rF   r-   r   rG   r   r   r   _is_singleCPU     zLinuxCPUInfo._is_singleCPUc                 C   
   t | jS r3   r   rG   r   r   r   rH        
zLinuxCPUInfo._getNCPUsc                 C   rf   )Nr   Zfdiv_bugyesri   rG   r   r   r   _has_fdiv_bug  rk   zLinuxCPUInfo._has_fdiv_bugc                 C   rf   )Nr   Zf00f_bugr   ri   rG   r   r   r   _has_f00f_bug  rk   zLinuxCPUInfo._has_f00f_bugc                 C   rt   )Nz
.*?\bmmx\br   r   rv   rG   r   r   r   _has_mmx  rq   zLinuxCPUInfo._has_mmxc                 C   rt   )Nz
.*?\bsse\br   r   rv   rG   r   r   r   _has_sse  rq   zLinuxCPUInfo._has_ssec                 C   rt   )Nz.*?\bsse2\br   r   rv   rG   r   r   r   	_has_sse2  rq   zLinuxCPUInfo._has_sse2c                 C   rt   )Nz
.*?\bpni\br   r   rv   rG   r   r   r   	_has_sse3  rq   zLinuxCPUInfo._has_sse3c                 C   rt   )Nz.*?\bssse3\br   r   rv   rG   r   r   r   
_has_ssse3  rq   zLinuxCPUInfo._has_ssse3c                 C   rt   )Nz.*?\b3dnow\br   r   rv   rG   r   r   r   
_has_3dnow   rq   zLinuxCPUInfo._has_3dnowc                 C   rt   )Nz.*?\b3dnowext\br   r   rv   rG   r   r   r   _has_3dnowext#  rq   zLinuxCPUInfo._has_3dnowext)4rV   rW   rX   r   rd   re   rj   rp   rs   rx   ry   rz   r   r   r   r   r   r   r   r   r   r   _is_i386r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_is_Xeonr   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   c   sd    rZ   c                   @   s8  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dS )LIRIXCPUInfoNc                 C   s(   | j d urd S tdddd}|| j_ d S )Nsysconf )r   r   )r.   r   )r   r1   r`   r5   r   r   r   r   rd   )  s   
zIRIXCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   re   0  r<   zIRIXCPUInfo._not_implc                 C   s   | j ddkS )NNUM_PROCESSORS1)r   getrG   r   r   r   r   2  r   zIRIXCPUInfo._is_singleCPUc                 C   s   t | jddS )Nr   r   intr   r   rG   r   r   r   rH   5  rk   zIRIXCPUInfo._getNCPUsc                 C   s    | j d d  d| kS )NZ
PROCESSORSr   zr%s)r   r   r,   lowerr5   nr   r   r   Z	__cputype8  s    zIRIXCPUInfo.__cputypec                 C   
   |  dS )Ni  _IRIXCPUInfo__cputyperG   r   r   r   	_is_r2000:     
 zIRIXCPUInfo._is_r2000c                 C   r   )Ni  r   rG   r   r   r   	_is_r3000;  r   zIRIXCPUInfo._is_r3000c                 C   r   )Ni<  r   rG   r   r   r   	_is_r3900<  r   zIRIXCPUInfo._is_r3900c                 C   r   )Ni  r   rG   r   r   r   	_is_r4000=  r   zIRIXCPUInfo._is_r4000c                 C   r   )Ni  r   rG   r   r   r   	_is_r4100>  r   zIRIXCPUInfo._is_r4100c                 C   r   )Ni  r   rG   r   r   r   	_is_r4300?  r   zIRIXCPUInfo._is_r4300c                 C   r   )Ni0  r   rG   r   r   r   	_is_r4400@  r   zIRIXCPUInfo._is_r4400c                 C   r   )Ni  r   rG   r   r   r   	_is_r4600A  r   zIRIXCPUInfo._is_r4600c                 C   r   )Ni*  r   rG   r   r   r   	_is_r4650B  r   zIRIXCPUInfo._is_r4650c                 C   r   )Ni  r   rG   r   r   r   	_is_r5000C  r   zIRIXCPUInfo._is_r5000c                 C   r   )Nip  r   rG   r   r   r   	_is_r6000D  r   zIRIXCPUInfo._is_r6000c                 C   r   )Ni@  r   rG   r   r   r   	_is_r8000E  r   zIRIXCPUInfo._is_r8000c                 C   r   )Ni'  r   rG   r   r   r   
_is_r10000F  r   zIRIXCPUInfo._is_r10000c                 C   r   )Ni.  r   rG   r   r   r   
_is_r12000G  r   zIRIXCPUInfo._is_r12000c                 C   r   )NZorionr   rG   r   r   r   
_is_rorionH  r   zIRIXCPUInfo._is_rorionc                 C   s$   z| j dW S  ty   Y d S w )NMACHINE)r   r   r4   rG   r   r   r   get_ipJ  s   zIRIXCPUInfo.get_ipc                 C   s   | j d d| kS )Nr   zip%s)r   r   r   r   r   r   r   	__machineM  s   zIRIXCPUInfo.__machinec                 C   r   )N   _IRIXCPUInfo__machinerG   r   r   r   _is_IP19O  r   zIRIXCPUInfo._is_IP19c                 C   r   )N   r   rG   r   r   r   _is_IP20P  r   zIRIXCPUInfo._is_IP20c                 C   r   )N   r   rG   r   r   r   _is_IP21Q  r   zIRIXCPUInfo._is_IP21c                 C   r   N   r   rG   r   r   r   _is_IP22R  r   zIRIXCPUInfo._is_IP22c                 C      |  do|  S r   )r   r   rG   r   r   r   _is_IP22_4kS      zIRIXCPUInfo._is_IP22_4kc                 C   r   r   r   r   rG   r   r   r   _is_IP22_5kT  r   zIRIXCPUInfo._is_IP22_5kc                 C   r   )N   r   rG   r   r   r   _is_IP24U  r   zIRIXCPUInfo._is_IP24c                 C   r   )N   r   rG   r   r   r   _is_IP25V  r   zIRIXCPUInfo._is_IP25c                 C   r   )N   r   rG   r   r   r   _is_IP26W  r   zIRIXCPUInfo._is_IP26c                 C   r   )N   r   rG   r   r   r   _is_IP27X  r   zIRIXCPUInfo._is_IP27c                 C   r   )N   r   rG   r   r   r   _is_IP28Y  r   zIRIXCPUInfo._is_IP28c                 C   r   )N   r   rG   r   r   r   _is_IP30Z  r   zIRIXCPUInfo._is_IP30c                 C   r   N    r   rG   r   r   r   _is_IP32[  r   zIRIXCPUInfo._is_IP32c                 C   r   r   r   rG   r   r   r   _is_IP32_5k\  r   zIRIXCPUInfo._is_IP32_5kc                 C   r   r   )r   r   rG   r   r   r   _is_IP32_10k]  r   zIRIXCPUInfo._is_IP32_10k))rV   rW   rX   r   rd   re   r   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   &  sN    r   c                   @      e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS )4DarwinCPUInfoNc                 C   s6   | j d urd S tddd}tddd|d< || j_ d S )Narchmachine)r   r   z	sysctl hw=r.   	sysctl_hw)r   r    r1   r`   r   r   r   r   rd   c  s   
zDarwinCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   re   k  r<   zDarwinCPUInfo._not_implc                 C      t | jd ddS )Nr  zhw.ncpur   r   rG   r   r   r   rH   m     zDarwinCPUInfo._getNCPUsc                 C   rf   )Nr  z
hw.machinezPower Macintoshri   rG   r   r   r   _is_Power_Macintoshp  rk   z!DarwinCPUInfo._is_Power_Macintoshc                 C      | j d dkS )Nr   i386ri   rG   r   r   r   r   s  r   zDarwinCPUInfo._is_i386c                 C   r  )Nr   ppcri   rG   r   r   r   _is_ppcu  r   zDarwinCPUInfo._is_ppcc                 C   s   | j d d| kS )Nr   zppc%sri   r   r   r   r   r   x  rk   zDarwinCPUInfo.__machinec                 C   r   )NiY  _DarwinCPUInfo__machinerG   r   r   r   
_is_ppc601z  r   zDarwinCPUInfo._is_ppc601c                 C   r   )NiZ  r
  rG   r   r   r   
_is_ppc602{  r   zDarwinCPUInfo._is_ppc602c                 C   r   )Ni[  r
  rG   r   r   r   
_is_ppc603|  r   zDarwinCPUInfo._is_ppc603c                 C   r   )NZ603er
  rG   r   r   r   _is_ppc603e}  r   zDarwinCPUInfo._is_ppc603ec                 C   r   )Ni\  r
  rG   r   r   r   
_is_ppc604~  r   zDarwinCPUInfo._is_ppc604c                 C   r   )NZ604er
  rG   r   r   r   _is_ppc604e  r   zDarwinCPUInfo._is_ppc604ec                 C   r   )Nil  r
  rG   r   r   r   
_is_ppc620  r   zDarwinCPUInfo._is_ppc620c                 C   r   )Niv  r
  rG   r   r   r   
_is_ppc630  r   zDarwinCPUInfo._is_ppc630c                 C   r   )Ni  r
  rG   r   r   r   
_is_ppc740  r   zDarwinCPUInfo._is_ppc740c                 C   r   )Ni  r
  rG   r   r   r   _is_ppc7400  r   zDarwinCPUInfo._is_ppc7400c                 C   r   )Ni  r
  rG   r   r   r   _is_ppc7450  r   zDarwinCPUInfo._is_ppc7450c                 C   r   )Ni  r
  rG   r   r   r   
_is_ppc750  r   zDarwinCPUInfo._is_ppc750c                 C   r   )Ni  r
  rG   r   r   r   
_is_ppc403  r   zDarwinCPUInfo._is_ppc403c                 C   r   )Ni  r
  rG   r   r   r   
_is_ppc505  r   zDarwinCPUInfo._is_ppc505c                 C   r   )Ni!  r
  rG   r   r   r   
_is_ppc801  r   zDarwinCPUInfo._is_ppc801c                 C   r   )Ni5  r
  rG   r   r   r   
_is_ppc821  r   zDarwinCPUInfo._is_ppc821c                 C   r   )Ni7  r
  rG   r   r   r   
_is_ppc823  r   zDarwinCPUInfo._is_ppc823c                 C   r   )Ni\  r
  rG   r   r   r   
_is_ppc860  r   zDarwinCPUInfo._is_ppc860)rV   rW   rX   r   rd   re   rH   r  r   r	  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   `  s6    r   c                   @   r   )4SunOSCPUInfoNc                 C   sl   | j d urd S tdddddd}tddd	|d
< tdD ]}td|}|r/|d|d<  nq|| j_ d S )Nr   machuname_iz
isainfo -bz
isainfo -n)r   r  r   Z	isainfo_b	isainfo_nzuname -Xr   r  uname_Xzpsrinfo -v 0z+\s*The (?P<p>[\w\d]+) processor operates atp	processor)r   r    r1   r#   rK   rw   rN   r`   )r5   r   r"   mr   r   r   rd     s    
zSunOSCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   re     r<   zSunOSCPUInfo._not_implc                 C   r  )Nr!  r  ri   rG   r   r   r   r     r   zSunOSCPUInfo._is_i386c                 C   r  )Nr!  Zsparcri   rG   r   r   r   	_is_sparc  r   zSunOSCPUInfo._is_sparcc                 C   r  )Nr!  sparcv9ri   rG   r   r   r   _is_sparcv9  r   zSunOSCPUInfo._is_sparcv9c                 C   r  )Nr"  ZNumCPUr   r   rG   r   r   r   rH     r  zSunOSCPUInfo._getNCPUsc                 C   r  )Nr   Zsun4ri   rG   r   r   r   _is_sun4  r   zSunOSCPUInfo._is_sun4c                 C      t d| jd d uS )NZSUNWr   rv   rG   r   r   r   _is_SUNW  r  zSunOSCPUInfo._is_SUNWc                 C   r*  )Nz.*SPARCstation-5r   rv   rG   r   r   r   _is_sparcstation5  r  zSunOSCPUInfo._is_sparcstation5c                 C   r*  )Nz	.*Ultra-1r   rv   rG   r   r   r   
_is_ultra1  r  zSunOSCPUInfo._is_ultra1c                 C   r*  )Nz.*Ultra-250r   rv   rG   r   r   r   _is_ultra250  r  zSunOSCPUInfo._is_ultra250c                 C   r*  )Nz	.*Ultra-2r   rv   rG   r   r   r   
_is_ultra2  r  zSunOSCPUInfo._is_ultra2c                 C   r*  )Nz
.*Ultra-30r   rv   rG   r   r   r   _is_ultra30  r  zSunOSCPUInfo._is_ultra30c                 C   r*  )Nz	.*Ultra-4r   rv   rG   r   r   r   
_is_ultra4  r  zSunOSCPUInfo._is_ultra4c                 C   r*  )Nz.*Ultra-5_10r   rv   rG   r   r   r   _is_ultra5_10  r  zSunOSCPUInfo._is_ultra5_10c                 C   r*  )Nz	.*Ultra-5r   rv   rG   r   r   r   
_is_ultra5  r  zSunOSCPUInfo._is_ultra5c                 C   r*  )Nz
.*Ultra-60r   rv   rG   r   r   r   _is_ultra60  r  zSunOSCPUInfo._is_ultra60c                 C   r*  )Nz
.*Ultra-80r   rv   rG   r   r   r   _is_ultra80  r  zSunOSCPUInfo._is_ultra80c                 C   r*  )Nz.*Ultra-Enterpriser   rv   rG   r   r   r   _is_ultraenterprice  r  z SunOSCPUInfo._is_ultraenterpricec                 C   r*  )Nz.*Ultra-Enterprise-10000r   rv   rG   r   r   r   _is_ultraenterprice10k  r  z#SunOSCPUInfo._is_ultraenterprice10kc                 C   r*  )Nz
.*Sun-Firer   rv   rG   r   r   r   _is_sunfire  r  zSunOSCPUInfo._is_sunfirec                 C   r*  )Nz.*Ultrar   rv   rG   r   r   r   	_is_ultra  r  zSunOSCPUInfo._is_ultrac                 C   r  )Nr$  Zsparcv7ri   rG   r   r   r   _is_cpusparcv7  r   zSunOSCPUInfo._is_cpusparcv7c                 C   r  )Nr$  Zsparcv8ri   rG   r   r   r   _is_cpusparcv8  r   zSunOSCPUInfo._is_cpusparcv8c                 C   r  )Nr$  r'  ri   rG   r   r   r   _is_cpusparcv9  r   zSunOSCPUInfo._is_cpusparcv9)rV   rW   rX   r   rd   re   r   r&  r(  rH   r)  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r   r   r   r   r    s6    r  c                   @   s  e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dS )AWin32CPUInfoNz,HARDWARE\DESCRIPTION\System\CentralProcessorc              
   C   sh  | j d urd S g }zdd l}tdtj}||j| j}d}	 z|||}W n
 |j	y2   Y ncw |d7 }|
d|i |||}d}	 z|||\}	}
}W n
 |j	y\   Y n8w |d }|
|d |	< |	dkr||
}|rt|d|d d	< t|d
|d d< t|d|d d< qGq W n ty } zt|d W Y d }~nd }~ww || j_ d S )Nr   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)Tr   Z	Processorr\   Z
IdentifierZFMLFamilyZMDLModelZSTPZSteppingz
(ignoring))r   winregrK   rL   r   OpenKeyHKEY_LOCAL_MACHINEpkeyEnumKeyerrorr^   Z	EnumValuerM   r   rN   r4   printr`   )r5   r   r@  ZprgxZchndZpnumprocZphndZpidxrD   rc   ZvtpeZsrchr   r   r   r   rd     sT   

zWin32CPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   re     r<   zWin32CPUInfo._not_implc                 C   rf   )Nr   VendorIdentifierrh   ri   rG   r   r   r   rj     rk   zWin32CPUInfo._is_AMDc                 C   rl   Nr   r>     r~   rG   r   r   r   	_is_Am486  rq   zWin32CPUInfo._is_Am486c                 C   rl   rI  r~   rG   r   r   r   
_is_Am5x86  rq   zWin32CPUInfo._is_Am5x86c                 C   ,   |   o| jd d dko| jd d dv S )Nr   r>     r?  )r   r   r+      r~   rG   r   r   r   	_is_AMDK5     zWin32CPUInfo._is_AMDK5c                 C   rM  )Nr   r>  rN  r?  )      r~   rG   r   r   r   	_is_AMDK6  rQ  zWin32CPUInfo._is_AMDK6c                 C   ,   |   o| jd d dko| jd d dkS )Nr   r>  rN  r?     r~   rG   r   r   r   _is_AMDK6_2  rQ  zWin32CPUInfo._is_AMDK6_2c                 C   rU  )Nr   r>  rN  r?  	   r~   rG   r   r   r   _is_AMDK6_3!  rQ  zWin32CPUInfo._is_AMDK6_3c                 C   rl   Nr   r>  rR  r~   rG   r   r   r   	_is_AMDK7%  rq   zWin32CPUInfo._is_AMDK7c                 C   rl   Nr   r>     r~   rG   r   r   r   r   ,  rq   zWin32CPUInfo._is_AMD64c                 C   rf   )Nr   rH  r   ri   rG   r   r   r   r   1  rk   zWin32CPUInfo._is_Intelc                 C   rf   )Nr   r>  rO  ri   rG   r   r   r   r   4  rk   zWin32CPUInfo._is_i386c                 C   rf   rI  ri   rG   r   r   r   r   7  rk   zWin32CPUInfo._is_i486c                 C   rl   Nr   r>  rN  r   rG   r   r   r   r   :  rq   zWin32CPUInfo._is_i586c                 C   rl   rZ  r   rG   r   r   r   r   =  rq   zWin32CPUInfo._is_i686c                 C   rl   r^  r   rG   r   r   r   r   @  rq   zWin32CPUInfo._is_Pentiumc                 C   rU  )Nr   r>  rN  r?  rJ  r   rG   r   r   r   r   C  rQ  zWin32CPUInfo._is_PentiumMMXc                 C   rU  )Nr   r>  rR  r?  r   r   rG   r   r   r   r   G  rQ  zWin32CPUInfo._is_PentiumProc                 C   rM  )Nr   r>  rR  r?  )rO  rN  rR  r   rG   r   r   r   r   K  rQ  zWin32CPUInfo._is_PentiumIIc                 C   rM  )Nr   r>  rR  r?  rS  rV  rX  
      r   rG   r   r   r   r   O  rQ  zWin32CPUInfo._is_PentiumIIIc                 C   rl   r\  r   rG   r   r   r   r   S  rq   zWin32CPUInfo._is_PentiumIVc                 C   rM  )Nr   r>  rR  r?  )rX        r   rG   r   r   r   r   V  rQ  zWin32CPUInfo._is_PentiumMc                 C   rM  )Nr   r>  rR  r?  )r]        r   rG   r   r   r   r   Z  rQ  zWin32CPUInfo._is_Core2c                 C   r   rF   r   rG   r   r   r   r   `  r   zWin32CPUInfo._is_singleCPUc                 C   r   r3   r   rG   r   r   r   rH   c  r   zWin32CPUInfo._getNCPUsc                 C   s\   |   r| jd d dkr| jd d dkp| jd d dv S |  r,| jd d dv S dS )	Nr   r>  rN  r?  rJ  rR  r]  rN  rR  r]  Fr   r   r   rG   r   r   r   r   f  s   $zWin32CPUInfo._has_mmxc                 C   s   |   r| jd d dkr| jd d dv p| jd d dkS |  r>| jd d dkr5| jd d dv p=| jd d dkS dS )	Nr   r>  rR  r?  r_  r]  )rR  rS  rV  r`  Frh  rG   r   r   r   r   o  s   zWin32CPUInfo._has_ssec                 C   s4   |   r|  p|  p|  S |  r|  S dS )NF)r   Zis_Pentium4Zis_PentiumMZis_Core2r   Zis_AMD64rG   r   r   r   r   {  s   zWin32CPUInfo._has_sse2c                 C      |   o| jd d dv S )Nr   r>  rg  r~   rG   r   r   r   r     rq   zWin32CPUInfo._has_3dnowc                 C   ri  )Nr   r>  rf  r~   rG   r   r   r   r     rq   zWin32CPUInfo._has_3dnowext)$rV   rW   rX   r   rC  rd   re   rj   rK  rL  rP  rT  rW  rY  r[  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r   r   r   r   r   r   r=    sD    (		r=  linuxZirixdarwinsunoswin32cygwin)r   r   )rY   __all__r   rI   rK   sysrA   r
   
subprocessr   r   r    r#   r1   r2   rZ   r   r   r  r=  r=   Zcpuinfor   r   r   r   r   <module>   sJ   



	

# D:.J 3

