a
    p=icoX                     @   sN  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reZnfejd reZnRejdkreZn@ejdreZn,ejdr,eZnejd r@e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yJ } z"tjt|t|d W Y d }~dS d }~0 0 t|rlt||v rld|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   h/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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 ]6}dd ||dD }t|dkr|d ||d < q|S )Nr   r   c                 S   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    
r0   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 n0 d S N)	Exception)selffuncr   r   r   	_try_callE   s    zCPUInfoBase._try_callc                 C   sX   | dsLt| d| rDt| d| }t|tjrL| j|fddS ndd S t|d S )N_c                 S   s   | |S r2   r   )r5   attrr   r   r   <lambda>P   r)   z)CPUInfoBase.__getattr__.<locals>.<lambda>c                   S   s   d S r2   r   r   r   r   r   r9   R   r)   )
startswithhasattrgetattr
isinstancetypes
MethodTyper6   AttributeError)r4   namer8   r   r   r   __getattr__K   s    
zCPUInfoBase.__getattr__c                 C   s   dS Nr   r   r4   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)r4   Zabitsnbitsr   r   r   Z__get_nbitsX   s    zCPUInfoBase.__get_nbitsc                 C   s   |   dkS )NZ32_CPUInfoBase__get_nbitsrD   r   r   r   	_is_32bit]   s    zCPUInfoBase._is_32bitc                 C   s   |   dkS )NZ64rM   rD   r   r   r   	_is_64bit`   s    zCPUInfoBase._is_64bitN)
__name__
__module____qualname____doc__r6   rB   rE   rN   rO   rP   r   r   r   r   r1   @   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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\}}|r4| |d d< ztd}W n8 tyx } z tjt|tdd W Y d }~nnd }~0 0 |D ]V}dd |	d	d
D }t
|dkrq~|\}}	|r||d v r|i  |	|d |< q~|  || j_ d S )Nzuname -mr   Zuname_mz/proc/cpuinfor*   r   c                 S   s   g | ]}|  qS 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__)
r4   r   r   r   for   r"   
name_valuerA   valuer   r   r   __init__g   s(    
*
zLinuxCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   	_not_impl~   r)   zLinuxCPUInfo._not_implc                 C   s   | j d d dkS )Nr   	vendor_idAuthenticAMDr   rD   r   r   r   _is_AMD   s    zLinuxCPUInfo._is_AMDc                 C   s   |   o| jd d dkS )Nr   model2rd   r   rD   r   r   r   _is_AthlonK6_2   s    zLinuxCPUInfo._is_AthlonK6_2c                 C   s   |   o| jd d dkS )Nr   re   3rg   rD   r   r   r   _is_AthlonK6_3   s    zLinuxCPUInfo._is_AthlonK6_3c                 C   s   t d| jd d d uS )Nz	.*?AMD-K6r   
model namerH   matchr   rD   r   r   r   _is_AthlonK6   s    zLinuxCPUInfo._is_AthlonK6c                 C   s   t d| jd d d uS )Nz	.*?AMD-K7r   rk   rl   rD   r   r   r   _is_AthlonK7   s    zLinuxCPUInfo._is_AthlonK7c                 C   s   t d| jd d d uS )Nz.*?Athlon\(tm\) MP\br   rk   rl   rD   r   r   r   _is_AthlonMP   s
    zLinuxCPUInfo._is_AthlonMPc                 C   s   |   o| jd d dkS )Nr   family15is_AMDr   rD   r   r   r   	_is_AMD64   s    zLinuxCPUInfo._is_AMD64c                 C   s   t d| jd d d uS )Nz.*?Athlon\(tm\) 64\br   rk   rl   rD   r   r   r   _is_Athlon64   s
    zLinuxCPUInfo._is_Athlon64c                 C   s   t d| jd d d uS )Nz.*?Athlon HX\br   rk   rl   rD   r   r   r   _is_AthlonHX   s
    zLinuxCPUInfo._is_AthlonHXc                 C   s   t d| jd d d uS )Nz.*?Opteron\br   rk   rl   rD   r   r   r   _is_Opteron   s
    zLinuxCPUInfo._is_Opteronc                 C   s   t d| jd d d uS )Nz.*?Hammer\br   rk   rl   rD   r   r   r   
_is_Hammer   s
    zLinuxCPUInfo._is_Hammerc                 C   s   | j d d dkS )Nr   r   Alpharc   rD   r   r   r   	_is_Alpha   s    zLinuxCPUInfo._is_Alphac                 C   s   |   o| jd d dkS )Nr   	cpu modelZEV4Zis_Alphar   rD   r   r   r   _is_EV4   s    zLinuxCPUInfo._is_EV4c                 C   s   |   o| jd d dkS )Nr   r|   ZEV5r}   rD   r   r   r   _is_EV5   s    zLinuxCPUInfo._is_EV5c                 C   s   |   o| jd d dkS )Nr   r|   ZEV56r}   rD   r   r   r   _is_EV56   s    zLinuxCPUInfo._is_EV56c                 C   s   |   o| jd d dkS )Nr   r|   ZPCA56r}   rD   r   r   r   	_is_PCA56   s    zLinuxCPUInfo._is_PCA56c                 C   s   | j d d dkS )Nr   ra   GenuineIntelrc   rD   r   r   r   	_is_Intel   s    zLinuxCPUInfo._is_Intelc                 C   s   | j d d dkS )Nr   r   Zi486rc   rD   r   r   r   _is_i486   s    zLinuxCPUInfo._is_i486c                 C   s   |   o| jd d dkS )Nr   
cpu family5is_Intelr   rD   r   r   r   _is_i586   s    zLinuxCPUInfo._is_i586c                 C   s   |   o| jd d dkS )Nr   r   6r   rD   r   r   r   _is_i686   s    zLinuxCPUInfo._is_i686c                 C   s   t d| jd d d uS )Nz
.*?Celeronr   rk   rl   rD   r   r   r   _is_Celeron   s
    zLinuxCPUInfo._is_Celeronc                 C   s   t d| jd d d uS )Nz
.*?Pentiumr   rk   rl   rD   r   r   r   _is_Pentium   s
    zLinuxCPUInfo._is_Pentiumc                 C   s   t d| jd d d uS )Nz.*?Pentium.*?II\br   rk   rl   rD   r   r   r   _is_PentiumII   s
    zLinuxCPUInfo._is_PentiumIIc                 C   s   t d| jd d d uS )Nz.*?PentiumPro\br   rk   rl   rD   r   r   r   _is_PentiumPro   s
    zLinuxCPUInfo._is_PentiumProc                 C   s   t d| jd d d uS )Nz.*?Pentium.*?MMX\br   rk   rl   rD   r   r   r   _is_PentiumMMX   s
    zLinuxCPUInfo._is_PentiumMMXc                 C   s   t d| jd d d uS )Nz.*?Pentium.*?III\br   rk   rl   rD   r   r   r   _is_PentiumIII   s
    zLinuxCPUInfo._is_PentiumIIIc                 C   s   t d| jd d d uS )Nz.*?Pentium.*?(IV|4)\br   rk   rl   rD   r   r   r   _is_PentiumIV   s
    zLinuxCPUInfo._is_PentiumIVc                 C   s   t d| jd d d uS )Nz.*?Pentium.*?M\br   rk   rl   rD   r   r   r   _is_PentiumM   s
    zLinuxCPUInfo._is_PentiumMc                 C   s   |   o|  S r2   )Zis_PentiumIVhas_sse3rD   r   r   r   _is_Prescott   s    zLinuxCPUInfo._is_Prescottc                 C   sX   |   oV| jd d dks,| jd d dkoV|  oV|   oVtd| jd d d uS )Nr   r   r   rr   z	.*?\blm\bflags)r   r   r   Z	has_ssse3rH   rm   rD   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   rk   )Zis_64bitr   rH   rm   r   rD   r   r   r   	_is_Core2   s    zLinuxCPUInfo._is_Core2c                 C   s   t d| jd d d uS )Nz.*?Itanium\br   rq   rl   rD   r   r   r   _is_Itanium   s
    zLinuxCPUInfo._is_Itaniumc                 C   s   t d| jd d t jd uS )Nz	.*?XEON\br   rk   )rH   rm   r   
IGNORECASErD   r   r   r   _is_XEON   s
    zLinuxCPUInfo._is_XEONc                 C   s   t | jdkS rC   r,   r   rD   r   r   r   _is_singleCPU  s    zLinuxCPUInfo._is_singleCPUc                 C   s
   t | jS r2   r   rD   r   r   r   rE     s    zLinuxCPUInfo._getNCPUsc                 C   s   | j d d dkS )Nr   Zfdiv_bugyesrc   rD   r   r   r   _has_fdiv_bug  s    zLinuxCPUInfo._has_fdiv_bugc                 C   s   | j d d dkS )Nr   Zf00f_bugr   rc   rD   r   r   r   _has_f00f_bug  s    zLinuxCPUInfo._has_f00f_bugc                 C   s   t d| jd d d uS )Nz
.*?\bmmx\br   r   rl   rD   r   r   r   _has_mmx  s    zLinuxCPUInfo._has_mmxc                 C   s   t d| jd d d uS )Nz
.*?\bsse\br   r   rl   rD   r   r   r   _has_sse  s    zLinuxCPUInfo._has_ssec                 C   s   t d| jd d d uS )Nz.*?\bsse2\br   r   rl   rD   r   r   r   	_has_sse2  s    zLinuxCPUInfo._has_sse2c                 C   s   t d| jd d d uS )Nz
.*?\bpni\br   r   rl   rD   r   r   r   	_has_sse3  s    zLinuxCPUInfo._has_sse3c                 C   s   t d| jd d d uS )Nz.*?\bssse3\br   r   rl   rD   r   r   r   
_has_ssse3  s    zLinuxCPUInfo._has_ssse3c                 C   s   t d| jd d d uS )Nz.*?\b3dnow\br   r   rl   rD   r   r   r   
_has_3dnow   s    zLinuxCPUInfo._has_3dnowc                 C   s   t d| jd d d uS )Nz.*?\b3dnowext\br   r   rl   rD   r   r   r   _has_3dnowext#  s    zLinuxCPUInfo._has_3dnowext)4rQ   rR   rS   r   r_   r`   rd   rh   rj   rn   ro   rp   ru   rv   rw   rx   ry   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   rE   r   r   r   r   r   r   r   r   r   r   r   r   r   rU   c   sb   rU   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   r0   r[   r4   r   r   r   r   r_   )  s    
zIRIXCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`   0  r)   zIRIXCPUInfo._not_implc                 C   s   | j ddkS )NNUM_PROCESSORS1)r   getrD   r   r   r   r   2  s    zIRIXCPUInfo._is_singleCPUc                 C   s   t | jddS )Nr   r   intr   r   rD   r   r   r   rE   5  s    zIRIXCPUInfo._getNCPUsc                 C   s    | j d d  d| kS )NZ
PROCESSORSr   zr%s)r   r   r+   lowerr4   nr   r   r   Z	__cputype8  s    zIRIXCPUInfo.__cputypec                 C   s
   |  dS )Ni  _IRIXCPUInfo__cputyperD   r   r   r   	_is_r2000:  r)   zIRIXCPUInfo._is_r2000c                 C   s
   |  dS )Ni  r   rD   r   r   r   	_is_r3000;  r)   zIRIXCPUInfo._is_r3000c                 C   s
   |  dS )Ni<  r   rD   r   r   r   	_is_r3900<  r)   zIRIXCPUInfo._is_r3900c                 C   s
   |  dS )Ni  r   rD   r   r   r   	_is_r4000=  r)   zIRIXCPUInfo._is_r4000c                 C   s
   |  dS )Ni  r   rD   r   r   r   	_is_r4100>  r)   zIRIXCPUInfo._is_r4100c                 C   s
   |  dS )Ni  r   rD   r   r   r   	_is_r4300?  r)   zIRIXCPUInfo._is_r4300c                 C   s
   |  dS )Ni0  r   rD   r   r   r   	_is_r4400@  r)   zIRIXCPUInfo._is_r4400c                 C   s
   |  dS )Ni  r   rD   r   r   r   	_is_r4600A  r)   zIRIXCPUInfo._is_r4600c                 C   s
   |  dS )Ni*  r   rD   r   r   r   	_is_r4650B  r)   zIRIXCPUInfo._is_r4650c                 C   s
   |  dS )Ni  r   rD   r   r   r   	_is_r5000C  r)   zIRIXCPUInfo._is_r5000c                 C   s
   |  dS )Nip  r   rD   r   r   r   	_is_r6000D  r)   zIRIXCPUInfo._is_r6000c                 C   s
   |  dS )Ni@  r   rD   r   r   r   	_is_r8000E  r)   zIRIXCPUInfo._is_r8000c                 C   s
   |  dS )Ni'  r   rD   r   r   r   
_is_r10000F  r)   zIRIXCPUInfo._is_r10000c                 C   s
   |  dS )Ni.  r   rD   r   r   r   
_is_r12000G  r)   zIRIXCPUInfo._is_r12000c                 C   s
   |  dS )NZorionr   rD   r   r   r   
_is_rorionH  r)   zIRIXCPUInfo._is_rorionc                 C   s&   z| j dW S  ty    Y n0 d S )NMACHINE)r   r   r3   rD   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   s
   |  dS )N   _IRIXCPUInfo__machinerD   r   r   r   _is_IP19O  r)   zIRIXCPUInfo._is_IP19c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP20P  r)   zIRIXCPUInfo._is_IP20c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP21Q  r)   zIRIXCPUInfo._is_IP21c                 C   s
   |  dS N   r   rD   r   r   r   _is_IP22R  r)   zIRIXCPUInfo._is_IP22c                 C   s   |  do|  S r   )r   r   rD   r   r   r   _is_IP22_4kS  r)   zIRIXCPUInfo._is_IP22_4kc                 C   s   |  do|  S r   r   r   rD   r   r   r   _is_IP22_5kT  r)   zIRIXCPUInfo._is_IP22_5kc                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP24U  r)   zIRIXCPUInfo._is_IP24c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP25V  r)   zIRIXCPUInfo._is_IP25c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP26W  r)   zIRIXCPUInfo._is_IP26c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP27X  r)   zIRIXCPUInfo._is_IP27c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP28Y  r)   zIRIXCPUInfo._is_IP28c                 C   s
   |  dS )N   r   rD   r   r   r   _is_IP30Z  r)   zIRIXCPUInfo._is_IP30c                 C   s
   |  dS N    r   rD   r   r   r   _is_IP32[  r)   zIRIXCPUInfo._is_IP32c                 C   s   |  do|  S r   r   rD   r   r   r   _is_IP32_5k\  r)   zIRIXCPUInfo._is_IP32_5kc                 C   s   |  do|  S r   )r   r   rD   r   r   r   _is_IP32_10k]  r)   zIRIXCPUInfo._is_IP32_10k))rQ   rR   rS   r   r_   r`   r   rE   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   &  sL   r   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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    r0   r[   r   r   r   r   r_   c  s    
zDarwinCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`   k  r)   zDarwinCPUInfo._not_implc                 C   s   t | jd ddS )Nr   zhw.ncpur   r   rD   r   r   r   rE   m  s    zDarwinCPUInfo._getNCPUsc                 C   s   | j d d dkS )Nr   z
hw.machinezPower Macintoshrc   rD   r   r   r   _is_Power_Macintoshp  s    z!DarwinCPUInfo._is_Power_Macintoshc                 C   s   | j d dkS )Nr   i386rc   rD   r   r   r   r   s  s    zDarwinCPUInfo._is_i386c                 C   s   | j d dkS )Nr   ppcrc   rD   r   r   r   _is_ppcu  s    zDarwinCPUInfo._is_ppcc                 C   s   | j d d| kS )Nr   zppc%src   r   r   r   r   r   x  s    zDarwinCPUInfo.__machinec                 C   s
   |  dS )NiY  _DarwinCPUInfo__machinerD   r   r   r   
_is_ppc601z  r)   zDarwinCPUInfo._is_ppc601c                 C   s
   |  dS )NiZ  r   rD   r   r   r   
_is_ppc602{  r)   zDarwinCPUInfo._is_ppc602c                 C   s
   |  dS )Ni[  r   rD   r   r   r   
_is_ppc603|  r)   zDarwinCPUInfo._is_ppc603c                 C   s
   |  dS )NZ603er   rD   r   r   r   _is_ppc603e}  r)   zDarwinCPUInfo._is_ppc603ec                 C   s
   |  dS )Ni\  r   rD   r   r   r   
_is_ppc604~  r)   zDarwinCPUInfo._is_ppc604c                 C   s
   |  dS )NZ604er   rD   r   r   r   _is_ppc604e  r)   zDarwinCPUInfo._is_ppc604ec                 C   s
   |  dS )Nil  r   rD   r   r   r   
_is_ppc620  r)   zDarwinCPUInfo._is_ppc620c                 C   s
   |  dS )Niv  r   rD   r   r   r   
_is_ppc630  r)   zDarwinCPUInfo._is_ppc630c                 C   s
   |  dS )Ni  r   rD   r   r   r   
_is_ppc740  r)   zDarwinCPUInfo._is_ppc740c                 C   s
   |  dS )Ni  r   rD   r   r   r   _is_ppc7400  r)   zDarwinCPUInfo._is_ppc7400c                 C   s
   |  dS )Ni  r   rD   r   r   r   _is_ppc7450  r)   zDarwinCPUInfo._is_ppc7450c                 C   s
   |  dS )Ni  r   rD   r   r   r   
_is_ppc750  r)   zDarwinCPUInfo._is_ppc750c                 C   s
   |  dS )Ni  r   rD   r   r   r   
_is_ppc403  r)   zDarwinCPUInfo._is_ppc403c                 C   s
   |  dS )Ni  r   rD   r   r   r   
_is_ppc505  r)   zDarwinCPUInfo._is_ppc505c                 C   s
   |  dS )Ni!  r   rD   r   r   r   
_is_ppc801  r)   zDarwinCPUInfo._is_ppc801c                 C   s
   |  dS )Ni5  r   rD   r   r   r   
_is_ppc821  r)   zDarwinCPUInfo._is_ppc821c                 C   s
   |  dS )Ni7  r   rD   r   r   r   
_is_ppc823  r)   zDarwinCPUInfo._is_ppc823c                 C   s
   |  dS )Ni\  r   rD   r   r   r   
_is_ppc860  r)   zDarwinCPUInfo._is_ppc860)rQ   rR   rS   r   r_   r`   rE   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   `  s4   r   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d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS )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|}|r8|d|d<  q`q8|| 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    r0   r#   rH   rm   rK   r[   )r4   r   r"   mr   r   r   r_     s    
zSunOSCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`     r)   zSunOSCPUInfo._not_implc                 C   s   | j d dkS )Nr	  r   rc   rD   r   r   r   r     s    zSunOSCPUInfo._is_i386c                 C   s   | j d dkS )Nr	  Zsparcrc   rD   r   r   r   	_is_sparc  s    zSunOSCPUInfo._is_sparcc                 C   s   | j d dkS )Nr	  sparcv9rc   rD   r   r   r   _is_sparcv9  s    zSunOSCPUInfo._is_sparcv9c                 C   s   t | jd ddS )Nr
  ZNumCPUr   r   rD   r   r   r   rE     s    zSunOSCPUInfo._getNCPUsc                 C   s   | j d dkS )Nr   Zsun4rc   rD   r   r   r   _is_sun4  s    zSunOSCPUInfo._is_sun4c                 C   s   t d| jd d uS )NZSUNWr  rl   rD   r   r   r   _is_SUNW  s    zSunOSCPUInfo._is_SUNWc                 C   s   t d| jd d uS )Nz.*SPARCstation-5r  rl   rD   r   r   r   _is_sparcstation5  s    zSunOSCPUInfo._is_sparcstation5c                 C   s   t d| jd d uS )Nz	.*Ultra-1r  rl   rD   r   r   r   
_is_ultra1  s    zSunOSCPUInfo._is_ultra1c                 C   s   t d| jd d uS )Nz.*Ultra-250r  rl   rD   r   r   r   _is_ultra250  s    zSunOSCPUInfo._is_ultra250c                 C   s   t d| jd d uS )Nz	.*Ultra-2r  rl   rD   r   r   r   
_is_ultra2  s    zSunOSCPUInfo._is_ultra2c                 C   s   t d| jd d uS )Nz
.*Ultra-30r  rl   rD   r   r   r   _is_ultra30  s    zSunOSCPUInfo._is_ultra30c                 C   s   t d| jd d uS )Nz	.*Ultra-4r  rl   rD   r   r   r   
_is_ultra4  s    zSunOSCPUInfo._is_ultra4c                 C   s   t d| jd d uS )Nz.*Ultra-5_10r  rl   rD   r   r   r   _is_ultra5_10  s    zSunOSCPUInfo._is_ultra5_10c                 C   s   t d| jd d uS )Nz	.*Ultra-5r  rl   rD   r   r   r   
_is_ultra5  s    zSunOSCPUInfo._is_ultra5c                 C   s   t d| jd d uS )Nz
.*Ultra-60r  rl   rD   r   r   r   _is_ultra60  s    zSunOSCPUInfo._is_ultra60c                 C   s   t d| jd d uS )Nz
.*Ultra-80r  rl   rD   r   r   r   _is_ultra80  s    zSunOSCPUInfo._is_ultra80c                 C   s   t d| jd d uS )Nz.*Ultra-Enterpriser  rl   rD   r   r   r   _is_ultraenterprice  s    z SunOSCPUInfo._is_ultraenterpricec                 C   s   t d| jd d uS )Nz.*Ultra-Enterprise-10000r  rl   rD   r   r   r   _is_ultraenterprice10k  s    z#SunOSCPUInfo._is_ultraenterprice10kc                 C   s   t d| jd d uS )Nz
.*Sun-Firer  rl   rD   r   r   r   _is_sunfire  s    zSunOSCPUInfo._is_sunfirec                 C   s   t d| jd d uS )Nz.*Ultrar  rl   rD   r   r   r   	_is_ultra  s    zSunOSCPUInfo._is_ultrac                 C   s   | j d dkS )Nr  Zsparcv7rc   rD   r   r   r   _is_cpusparcv7  s    zSunOSCPUInfo._is_cpusparcv7c                 C   s   | j d dkS )Nr  Zsparcv8rc   rD   r   r   r   _is_cpusparcv8  s    zSunOSCPUInfo._is_cpusparcv8c                 C   s   | j d dkS )Nr  r  rc   rD   r   r   r   _is_cpusparcv9  s    zSunOSCPUInfo._is_cpusparcv9)rQ   rR   rS   r   r_   r`   r   r  r  rE   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r   r   r   r   r    s4   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   sr  | j d urd S g }z dd l}tdtj}||j| j}d}z|||}W n |j	yj   Y q2Y q@0 |d7 }|
d|i |||}d}z|||\}	}
}W n |j	y   Y q@Y q0 |d }|
|d |	< |	dkr||
}|rt|d|d d< t|d	|d d
< t|d|d d< qq@W n0 tyd } zt|d W Y d }~n
d }~0 0 || j_ d S )Nr   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)r   Z	ProcessorrW   Z
IdentifierZFMLFamilyZMDLModelZSTPZSteppingz
(ignoring))r   winregrH   rI   r   OpenKeyHKEY_LOCAL_MACHINEpkeyEnumKeyerrorrY   Z	EnumValuerJ   r   rK   r3   printr[   )r4   r   r'  ZprgxZchndZpnumprocZphndZpidxrA   r^   ZvtpeZsrchr   r   r   r   r_     sB    


 zWin32CPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`     r)   zWin32CPUInfo._not_implc                 C   s   | j d d dkS )Nr   VendorIdentifierrb   rc   rD   r   r   r   rd     s    zWin32CPUInfo._is_AMDc                 C   s   |   o| jd d dkS Nr   r%     rs   rD   r   r   r   	_is_Am486  s    zWin32CPUInfo._is_Am486c                 C   s   |   o| jd d dkS r0  rs   rD   r   r   r   
_is_Am5x86  s    zWin32CPUInfo._is_Am5x86c                 C   s,   |   o*| jd d dko*| jd d dv S )Nr   r%     r&  )r   r   r*      rs   rD   r   r   r   	_is_AMDK5  s    zWin32CPUInfo._is_AMDK5c                 C   s,   |   o*| jd d dko*| jd d dv S )Nr   r%  r4  r&  )      rs   rD   r   r   r   	_is_AMDK6  s    zWin32CPUInfo._is_AMDK6c                 C   s,   |   o*| jd d dko*| jd d dkS )Nr   r%  r4  r&     rs   rD   r   r   r   _is_AMDK6_2  s    zWin32CPUInfo._is_AMDK6_2c                 C   s,   |   o*| jd d dko*| jd d dkS )Nr   r%  r4  r&  	   rs   rD   r   r   r   _is_AMDK6_3!  s    zWin32CPUInfo._is_AMDK6_3c                 C   s   |   o| jd d dkS Nr   r%  r7  rs   rD   r   r   r   	_is_AMDK7%  s    zWin32CPUInfo._is_AMDK7c                 C   s   |   o| jd d dkS Nr   r%     rs   rD   r   r   r   ru   ,  s    zWin32CPUInfo._is_AMD64c                 C   s   | j d d dkS )Nr   r/  r   rc   rD   r   r   r   r   1  s    zWin32CPUInfo._is_Intelc                 C   s   | j d d dkS )Nr   r%  r5  rc   rD   r   r   r   r   4  s    zWin32CPUInfo._is_i386c                 C   s   | j d d dkS r0  rc   rD   r   r   r   r   7  s    zWin32CPUInfo._is_i486c                 C   s   |   o| jd d dkS Nr   r%  r4  r   rD   r   r   r   r   :  s    zWin32CPUInfo._is_i586c                 C   s   |   o| jd d dkS r>  r   rD   r   r   r   r   =  s    zWin32CPUInfo._is_i686c                 C   s   |   o| jd d dkS rB  r   rD   r   r   r   r   @  s    zWin32CPUInfo._is_Pentiumc                 C   s,   |   o*| jd d dko*| jd d dkS )Nr   r%  r4  r&  r1  r   rD   r   r   r   r   C  s    zWin32CPUInfo._is_PentiumMMXc                 C   s,   |   o*| jd d dko*| jd d dkS )Nr   r%  r7  r&  r   r   rD   r   r   r   r   G  s    zWin32CPUInfo._is_PentiumProc                 C   s,   |   o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  )r5  r4  r7  r   rD   r   r   r   r   K  s    zWin32CPUInfo._is_PentiumIIc                 C   s,   |   o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  r8  r:  r<  
      r   rD   r   r   r   r   O  s    zWin32CPUInfo._is_PentiumIIIc                 C   s   |   o| jd d dkS r@  r   rD   r   r   r   r   S  s    zWin32CPUInfo._is_PentiumIVc                 C   s,   |   o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  )r<        r   rD   r   r   r   r   V  s    zWin32CPUInfo._is_PentiumMc                 C   s,   |   o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  )rA        r   rD   r   r   r   r   Z  s    zWin32CPUInfo._is_Core2c                 C   s   t | jdkS rC   r   rD   r   r   r   r   `  s    zWin32CPUInfo._is_singleCPUc                 C   s
   t | jS r2   r   rD   r   r   r   rE   c  s    zWin32CPUInfo._getNCPUsc                 C   s`   |   r>| jd d dkr,| jd d dkp<| jd d dv S |  rX| jd d dv S dS d S )	Nr   r%  r4  r&  r1  r7  rA  r4  r7  rA  Fr   r   rt   rD   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rj| jd d dv pz| jd d dkS dS d S )	Nr   r%  r7  r&  rC  rA  )r7  r8  r:  rD  FrL  rD   r   r   r   r   o  s    zWin32CPUInfo._has_ssec                 C   s8   |   r |  p|  p|  S |  r0|  S dS d S )NF)r   Zis_Pentium4Zis_PentiumMZis_Core2rt   Zis_AMD64rD   r   r   r   r   {  s    zWin32CPUInfo._has_sse2c                 C   s   |   o| jd d dv S )Nr   r%  rK  rs   rD   r   r   r   r     s    zWin32CPUInfo._has_3dnowc                 C   s   |   o| jd d dv S )Nr   r%  rJ  rs   rD   r   r   r   r     s    zWin32CPUInfo._has_3dnowext)$rQ   rR   rS   r   r*  r_   r`   rd   r2  r3  r6  r9  r;  r=  r?  ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   r   r   r   r   r   r   r   r   r   r$    sB   (		r$  linuxZirixdarwinsunoswin32cygwin)r   r   )r   r   )r   r   )r   r   )rT   __all__r   rF   rH   sysr>   r
   
subprocessr   r   r    r#   r0   r1   rU   r   r   r  r$  r:   Zcpuinfor   r   r   r   r   <module>   sH   


	
  

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