B
    GŽ0dX  ã               @   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¡rÞeZnfej d¡ ròe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   sp   yt | ƒ\}}W n6 tk
rF } ztjt|ƒt|d dS d }~X Y nX t |¡rht |¡|krhd|fS d|fS )N)Ú
stacklevel)FÚ TF)	r   ÚEnvironmentErrorÚwarningsÚwarnÚstrÚUserWarningÚosÚ	WIFEXITEDÚWEXITSTATUS)ÚcmdÚsuccessful_statusr   ÚstatusÚoutputÚe© r   úI/var/www/html/venv/lib/python3.7/site-packages/numpy/distutils/cpuinfo.pyÚ	getoutput   s    r   c             K   s@   i }x6|D ].}t || | |d d\}}|r
| ¡ ||< q
W |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 x| ¡ D ]}| ¡ V  q(W d S )Nr   )r   r   )r   Ú
splitlinesr   )r   r   r   r   r   Úliner   r   r   Úcommand_by_line.   s    r    c             C   sV   i }xLt | ||d dD ]6}dd„ | |d¡D ƒ}t|ƒdkr|d ||d < qW |S )Nr   )r   r   c             S   s   g | ]}|  ¡ ‘qS r   )r   )Ú.0Úsr   r   r   ú
<listcomp>;   s    z*key_value_from_command.<locals>.<listcomp>é   r   )r    ÚsplitÚlen)r   Úsepr   r   Údr   Úlr   r   r   Úkey_value_from_command6   s    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S )ÚCPUInfoBasezkHolds CPU information and provides methods for requiring
    the availability of various CPU features.
    c             C   s    y|ƒ S  t k
r   Y nX 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 )Nr   )r.   Úattrr   r   r   Ú<lambda>P   ó    z)CPUInfoBase.__getattr__.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r2   R   r3   )Ú
startswithÚhasattrÚgetattrÚ
isinstanceÚtypesÚ
MethodTyper/   ÚAttributeError)r-   Únamer1   r   r   r   Ú__getattr__K   s    
zCPUInfoBase.__getattr__c             C   s   dS )Nr   r   )r-   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)r-   ZabitsÚnbitsr   r   r   Z__get_nbitsX   s    zCPUInfoBase.__get_nbitsc             C   s   |   ¡ dkS )NZ32)Ú_CPUInfoBase__get_nbits)r-   r   r   r   Ú	_is_32bit]   s    zCPUInfoBase._is_32bitc             C   s   |   ¡ dkS )NZ64)rE   )r-   r   r   r   Ú	_is_64bit`   s    zCPUInfoBase._is_64bitN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   r<   r=   rE   rF   rG   r   r   r   r   r+   @   s   
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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 k	rd S i g}tdƒ\}}|r4| ¡ |d d< ytdƒ}W n6 tk
rv } ztjt|ƒtdd W d d }~X Y njX x^|D ]V}dd„ | 	d	d
¡D ƒ}t
|ƒdkr¦q~|\}}	|r¾||d krÈ| i ¡ |	|d |< q~W | ¡  || 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   r#   t   s    z)LinuxCPUInfo.__init__.<locals>.<listcomp>ú:r   éÿÿÿÿ)r   r   r   Úopenr   r	   r
   r   r   r%   r&   ÚappendÚcloseÚ	__class__)
r-   r   r   r   Úfor   r   Ú
name_valuer;   Úvaluer   r   r   Ú__init__g   s(    
&

zLinuxCPUInfo.__init__c             C   s   d S )Nr   )r-   r   r   r   Ú	_not_impl~   r3   zLinuxCPUInfo._not_implc             C   s   | j d d dkS )Nr   Ú	vendor_idÚAuthenticAMD)r   )r-   r   r   r   Ú_is_AMD‚   s    zLinuxCPUInfo._is_AMDc             C   s   |   ¡ o| jd d dkS )Nr   ÚmodelÚ2)rZ   r   )r-   r   r   r   Ú_is_AthlonK6_2…   s    zLinuxCPUInfo._is_AthlonK6_2c             C   s   |   ¡ o| jd d dkS )Nr   r[   Ú3)rZ   r   )r-   r   r   r   Ú_is_AthlonK6_3ˆ   s    zLinuxCPUInfo._is_AthlonK6_3c             C   s   t  d| jd d ¡d k	S )Nz	.*?AMD-K6r   z
model name)r@   Úmatchr   )r-   r   r   r   Ú_is_AthlonK6‹   s    zLinuxCPUInfo._is_AthlonK6c             C   s   t  d| jd d ¡d k	S )Nz	.*?AMD-K7r   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_AthlonK7Ž   s    zLinuxCPUInfo._is_AthlonK7c             C   s   t  d| jd d ¡d k	S )Nz.*?Athlon\(tm\) MP\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_AthlonMP‘   s    zLinuxCPUInfo._is_AthlonMPc             C   s   |   ¡ o| jd d dkS )Nr   ÚfamilyÚ15)Úis_AMDr   )r-   r   r   r   Ú	_is_AMD64•   s    zLinuxCPUInfo._is_AMD64c             C   s   t  d| jd d ¡d k	S )Nz.*?Athlon\(tm\) 64\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_Athlon64˜   s    zLinuxCPUInfo._is_Athlon64c             C   s   t  d| jd d ¡d k	S )Nz.*?Athlon HX\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_AthlonHXœ   s    zLinuxCPUInfo._is_AthlonHXc             C   s   t  d| jd d ¡d k	S )Nz.*?Opteron\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_Opteron    s    zLinuxCPUInfo._is_Opteronc             C   s   t  d| jd d ¡d k	S )Nz.*?Hammer\br   z
model name)r@   r`   r   )r-   r   r   r   Ú
_is_Hammer¤   s    zLinuxCPUInfo._is_Hammerc             C   s   | j d d dkS )Nr   r   ÚAlpha)r   )r-   r   r   r   Ú	_is_Alphaª   s    zLinuxCPUInfo._is_Alphac             C   s   |   ¡ o| jd d dkS )Nr   z	cpu modelZEV4)Úis_Alphar   )r-   r   r   r   Ú_is_EV4­   s    zLinuxCPUInfo._is_EV4c             C   s   |   ¡ o| jd d dkS )Nr   z	cpu modelZEV5)rn   r   )r-   r   r   r   Ú_is_EV5°   s    zLinuxCPUInfo._is_EV5c             C   s   |   ¡ o| jd d dkS )Nr   z	cpu modelZEV56)rn   r   )r-   r   r   r   Ú_is_EV56³   s    zLinuxCPUInfo._is_EV56c             C   s   |   ¡ o| jd d dkS )Nr   z	cpu modelZPCA56)rn   r   )r-   r   r   r   Ú	_is_PCA56¶   s    zLinuxCPUInfo._is_PCA56c             C   s   | j d d dkS )Nr   rX   ÚGenuineIntel)r   )r-   r   r   r   Ú	_is_Intel¾   s    zLinuxCPUInfo._is_Intelc             C   s   | j d d dkS )Nr   r   Zi486)r   )r-   r   r   r   Ú_is_i486Á   s    zLinuxCPUInfo._is_i486c             C   s   |   ¡ o| jd d dkS )Nr   z
cpu familyÚ5)Úis_Intelr   )r-   r   r   r   Ú_is_i586Ä   s    zLinuxCPUInfo._is_i586c             C   s   |   ¡ o| jd d dkS )Nr   z
cpu familyÚ6)rw   r   )r-   r   r   r   Ú_is_i686Ç   s    zLinuxCPUInfo._is_i686c             C   s   t  d| jd d ¡d k	S )Nz
.*?Celeronr   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_CeleronÊ   s    zLinuxCPUInfo._is_Celeronc             C   s   t  d| jd d ¡d k	S )Nz
.*?Pentiumr   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumÎ   s    zLinuxCPUInfo._is_Pentiumc             C   s   t  d| jd d ¡d k	S )Nz.*?Pentium.*?II\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumIIÒ   s    zLinuxCPUInfo._is_PentiumIIc             C   s   t  d| jd d ¡d k	S )Nz.*?PentiumPro\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumProÖ   s    zLinuxCPUInfo._is_PentiumProc             C   s   t  d| jd d ¡d k	S )Nz.*?Pentium.*?MMX\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumMMXÚ   s    zLinuxCPUInfo._is_PentiumMMXc             C   s   t  d| jd d ¡d k	S )Nz.*?Pentium.*?III\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumIIIÞ   s    zLinuxCPUInfo._is_PentiumIIIc             C   s   t  d| jd d ¡d k	S )Nz.*?Pentium.*?(IV|4)\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumIVâ   s    zLinuxCPUInfo._is_PentiumIVc             C   s   t  d| jd d ¡d k	S )Nz.*?Pentium.*?M\br   z
model name)r@   r`   r   )r-   r   r   r   Ú_is_PentiumMæ   s    zLinuxCPUInfo._is_PentiumMc             C   s   |   ¡ o|  ¡ S )N)Zis_PentiumIVÚhas_sse3)r-   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 k	S )Nr   z
cpu familyry   re   z	.*?\blm\bÚflags)rw   r   rƒ   Z	has_ssse3r@   r`   )r-   r   r   r   Ú
_is_Noconaí   s
    zLinuxCPUInfo._is_Noconac             C   s*   |   ¡ o(|  ¡ o(t d| jd d ¡d k	S )Nz.*?Core\(TM\)2\br   z
model name)Zis_64bitrw   r@   r`   r   )r-   r   r   r   Ú	_is_Core2ô   s    zLinuxCPUInfo._is_Core2c             C   s   t  d| jd d ¡d k	S )Nz.*?Itanium\br   rd   )r@   r`   r   )r-   r   r   r   Ú_is_Itaniumù   s    zLinuxCPUInfo._is_Itaniumc             C   s   t  d| jd d t j¡d k	S )Nz	.*?XEON\br   z
model name)r@   r`   r   Ú
IGNORECASE)r-   r   r   r   Ú_is_XEONý   s    zLinuxCPUInfo._is_XEONc             C   s   t | jƒdkS )Nr   )r&   r   )r-   r   r   r   Ú_is_singleCPU  s    zLinuxCPUInfo._is_singleCPUc             C   s
   t | jƒS )N)r&   r   )r-   r   r   r   r=     s    zLinuxCPUInfo._getNCPUsc             C   s   | j d d dkS )Nr   Zfdiv_bugÚyes)r   )r-   r   r   r   Ú_has_fdiv_bug  s    zLinuxCPUInfo._has_fdiv_bugc             C   s   | j d d dkS )Nr   Zf00f_bugrŒ   )r   )r-   r   r   r   Ú_has_f00f_bug  s    zLinuxCPUInfo._has_f00f_bugc             C   s   t  d| jd d ¡d k	S )Nz
.*?\bmmx\br   r…   )r@   r`   r   )r-   r   r   r   Ú_has_mmx  s    zLinuxCPUInfo._has_mmxc             C   s   t  d| jd d ¡d k	S )Nz
.*?\bsse\br   r…   )r@   r`   r   )r-   r   r   r   Ú_has_sse  s    zLinuxCPUInfo._has_ssec             C   s   t  d| jd d ¡d k	S )Nz.*?\bsse2\br   r…   )r@   r`   r   )r-   r   r   r   Ú	_has_sse2  s    zLinuxCPUInfo._has_sse2c             C   s   t  d| jd d ¡d k	S )Nz
.*?\bpni\br   r…   )r@   r`   r   )r-   r   r   r   Ú	_has_sse3  s    zLinuxCPUInfo._has_sse3c             C   s   t  d| jd d ¡d k	S )Nz.*?\bssse3\br   r…   )r@   r`   r   )r-   r   r   r   Ú
_has_ssse3  s    zLinuxCPUInfo._has_ssse3c             C   s   t  d| jd d ¡d k	S )Nz.*?\b3dnow\br   r…   )r@   r`   r   )r-   r   r   r   Ú
_has_3dnow   s    zLinuxCPUInfo._has_3dnowc             C   s   t  d| jd d ¡d k	S )Nz.*?\b3dnowext\br   r…   )r@   r`   r   )r-   r   r   r   Ú_has_3dnowext#  s    zLinuxCPUInfo._has_3dnowext)4rH   rI   rJ   r   rV   rW   rZ   r]   r_   ra   rb   rc   rg   rh   ri   rj   rk   rm   ro   rp   rq   rr   Ú_is_i386rt   ru   rx   rz   r{   r|   r}   r~   r   r€   r   r‚   r„   r†   r‡   rˆ   rŠ   Z_is_Xeonr‹   r=   r   rŽ   r   r   r‘   r’   r“   r”   r•   r   r   r   r   rL   c   sb   rL   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 k	rd S tdddd}|| j_ d S )NÚsysconfú )r   r   )r'   r   )r   r*   rR   )r-   r   r   r   r   rV   )  s
    
zIRIXCPUInfo.__init__c             C   s   d S )Nr   )r-   r   r   r   rW   0  r3   zIRIXCPUInfo._not_implc             C   s   | j  d¡dkS )NÚNUM_PROCESSORSÚ1)r   Úget)r-   r   r   r   r‹   2  s    zIRIXCPUInfo._is_singleCPUc             C   s   t | j dd¡ƒS )Nrš   r   )Úintr   rœ   )r-   r   r   r   r=   5  s    zIRIXCPUInfo._getNCPUsc             C   s    | j  d¡ ¡ d  ¡ d| kS )NZ
PROCESSORSr   zr%s)r   rœ   r%   Úlower)r-   Únr   r   r   Z	__cputype8  s    zIRIXCPUInfo.__cputypec             C   s
   |   d¡S )NiÐ  )Ú_IRIXCPUInfo__cputype)r-   r   r   r   Ú	_is_r2000:  r3   zIRIXCPUInfo._is_r2000c             C   s
   |   d¡S )Ni¸  )r    )r-   r   r   r   Ú	_is_r3000;  r3   zIRIXCPUInfo._is_r3000c             C   s
   |   d¡S )Ni<  )r    )r-   r   r   r   Ú	_is_r3900<  r3   zIRIXCPUInfo._is_r3900c             C   s
   |   d¡S )Ni   )r    )r-   r   r   r   Ú	_is_r4000=  r3   zIRIXCPUInfo._is_r4000c             C   s
   |   d¡S )Ni  )r    )r-   r   r   r   Ú	_is_r4100>  r3   zIRIXCPUInfo._is_r4100c             C   s
   |   d¡S )NiÌ  )r    )r-   r   r   r   Ú	_is_r4300?  r3   zIRIXCPUInfo._is_r4300c             C   s
   |   d¡S )Ni0  )r    )r-   r   r   r   Ú	_is_r4400@  r3   zIRIXCPUInfo._is_r4400c             C   s
   |   d¡S )Niø  )r    )r-   r   r   r   Ú	_is_r4600A  r3   zIRIXCPUInfo._is_r4600c             C   s
   |   d¡S )Ni*  )r    )r-   r   r   r   Ú	_is_r4650B  r3   zIRIXCPUInfo._is_r4650c             C   s
   |   d¡S )Niˆ  )r    )r-   r   r   r   Ú	_is_r5000C  r3   zIRIXCPUInfo._is_r5000c             C   s
   |   d¡S )Nip  )r    )r-   r   r   r   Ú	_is_r6000D  r3   zIRIXCPUInfo._is_r6000c             C   s
   |   d¡S )Ni@  )r    )r-   r   r   r   Ú	_is_r8000E  r3   zIRIXCPUInfo._is_r8000c             C   s
   |   d¡S )Ni'  )r    )r-   r   r   r   Ú
_is_r10000F  r3   zIRIXCPUInfo._is_r10000c             C   s
   |   d¡S )Nià.  )r    )r-   r   r   r   Ú
_is_r12000G  r3   zIRIXCPUInfo._is_r12000c             C   s
   |   d¡S )NZorion)r    )r-   r   r   r   Ú
_is_rorionH  r3   zIRIXCPUInfo._is_rorionc             C   s&   y| j  d¡S  tk
r    Y nX d S )NÚMACHINE)r   rœ   r,   )r-   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   r   Ú	__machineM  s    zIRIXCPUInfo.__machinec             C   s
   |   d¡S )Né   )Ú_IRIXCPUInfo__machine)r-   r   r   r   Ú_is_IP19O  r3   zIRIXCPUInfo._is_IP19c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP20P  r3   zIRIXCPUInfo._is_IP20c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP21Q  r3   zIRIXCPUInfo._is_IP21c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP22R  r3   zIRIXCPUInfo._is_IP22c             C   s   |   d¡o|  ¡ S )Nrº   )r´   r¤   )r-   r   r   r   Ú_is_IP22_4kS  r3   zIRIXCPUInfo._is_IP22_4kc             C   s   |   d¡o|  ¡ S )Nrº   )r´   rª   )r-   r   r   r   Ú_is_IP22_5kT  r3   zIRIXCPUInfo._is_IP22_5kc             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP24U  r3   zIRIXCPUInfo._is_IP24c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP25V  r3   zIRIXCPUInfo._is_IP25c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP26W  r3   zIRIXCPUInfo._is_IP26c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP27X  r3   zIRIXCPUInfo._is_IP27c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP28Y  r3   zIRIXCPUInfo._is_IP28c             C   s
   |   d¡S )Né   )r´   )r-   r   r   r   Ú_is_IP30Z  r3   zIRIXCPUInfo._is_IP30c             C   s
   |   d¡S )Né    )r´   )r-   r   r   r   Ú_is_IP32[  r3   zIRIXCPUInfo._is_IP32c             C   s   |   d¡o|  ¡ S )NrÊ   )r´   rª   )r-   r   r   r   Ú_is_IP32_5k\  r3   zIRIXCPUInfo._is_IP32_5kc             C   s   |   d¡o|  ¡ S )NrÊ   )r´   r­   )r-   r   r   r   Ú_is_IP32_10k]  r3   zIRIXCPUInfo._is_IP32_10k))rH   rI   rJ   r   rV   rW   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   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 k	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   r*   rR   )r-   r   r   r   r   rV   c  s    
zDarwinCPUInfo.__init__c             C   s   d S )Nr   )r-   r   r   r   rW   k  r3   zDarwinCPUInfo._not_implc             C   s   t | jd  dd¡ƒS )NrÒ   zhw.ncpur   )r   r   rœ   )r-   r   r   r   r=   m  s    zDarwinCPUInfo._getNCPUsc             C   s   | j d d dkS )NrÒ   z
hw.machinezPower Macintosh)r   )r-   r   r   r   Ú_is_Power_Macintoshp  s    z!DarwinCPUInfo._is_Power_Macintoshc             C   s   | j d dkS )NrÏ   Úi386)r   )r-   r   r   r   r–   s  s    zDarwinCPUInfo._is_i386c             C   s   | j d dkS )NrÏ   Úppc)r   )r-   r   r   r   Ú_is_ppcu  s    zDarwinCPUInfo._is_ppcc             C   s   | j d d| kS )NrÐ   zppc%s)r   )r-   rŸ   r   r   r   r²   x  s    zDarwinCPUInfo.__machinec             C   s
   |   d¡S )NiY  )Ú_DarwinCPUInfo__machine)r-   r   r   r   Ú
_is_ppc601z  r3   zDarwinCPUInfo._is_ppc601c             C   s
   |   d¡S )NiZ  )r×   )r-   r   r   r   Ú
_is_ppc602{  r3   zDarwinCPUInfo._is_ppc602c             C   s
   |   d¡S )Ni[  )r×   )r-   r   r   r   Ú
_is_ppc603|  r3   zDarwinCPUInfo._is_ppc603c             C   s
   |   d¡S )NZ603e)r×   )r-   r   r   r   Ú_is_ppc603e}  r3   zDarwinCPUInfo._is_ppc603ec             C   s
   |   d¡S )Ni\  )r×   )r-   r   r   r   Ú
_is_ppc604~  r3   zDarwinCPUInfo._is_ppc604c             C   s
   |   d¡S )NZ604e)r×   )r-   r   r   r   Ú_is_ppc604e  r3   zDarwinCPUInfo._is_ppc604ec             C   s
   |   d¡S )Nil  )r×   )r-   r   r   r   Ú
_is_ppc620€  r3   zDarwinCPUInfo._is_ppc620c             C   s
   |   d¡S )Niv  )r×   )r-   r   r   r   Ú
_is_ppc630  r3   zDarwinCPUInfo._is_ppc630c             C   s
   |   d¡S )Niä  )r×   )r-   r   r   r   Ú
_is_ppc740‚  r3   zDarwinCPUInfo._is_ppc740c             C   s
   |   d¡S )Niè  )r×   )r-   r   r   r   Ú_is_ppc7400ƒ  r3   zDarwinCPUInfo._is_ppc7400c             C   s
   |   d¡S )Ni  )r×   )r-   r   r   r   Ú_is_ppc7450„  r3   zDarwinCPUInfo._is_ppc7450c             C   s
   |   d¡S )Niî  )r×   )r-   r   r   r   Ú
_is_ppc750…  r3   zDarwinCPUInfo._is_ppc750c             C   s
   |   d¡S )Ni“  )r×   )r-   r   r   r   Ú
_is_ppc403†  r3   zDarwinCPUInfo._is_ppc403c             C   s
   |   d¡S )Niù  )r×   )r-   r   r   r   Ú
_is_ppc505‡  r3   zDarwinCPUInfo._is_ppc505c             C   s
   |   d¡S )Ni!  )r×   )r-   r   r   r   Ú
_is_ppc801ˆ  r3   zDarwinCPUInfo._is_ppc801c             C   s
   |   d¡S )Ni5  )r×   )r-   r   r   r   Ú
_is_ppc821‰  r3   zDarwinCPUInfo._is_ppc821c             C   s
   |   d¡S )Ni7  )r×   )r-   r   r   r   Ú
_is_ppc823Š  r3   zDarwinCPUInfo._is_ppc823c             C   s
   |   d¡S )Ni\  )r×   )r-   r   r   r   Ú
_is_ppc860‹  r3   zDarwinCPUInfo._is_ppc860)rH   rI   rJ   r   rV   rW   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Î   `  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   sn   | j d k	rd S tdddddd}tddd	|d
< x0tdƒD ]$}t d|¡}|r:| d¡|d< P q:W || 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   r*   r    r@   r`   rC   rR   )r-   r   r   Úmr   r   r   rV   ’  s    
zSunOSCPUInfo.__init__c             C   s   d S )Nr   )r-   r   r   r   rW   £  r3   zSunOSCPUInfo._not_implc             C   s   | j d dkS )Nrí   rÔ   )r   )r-   r   r   r   r–   ¥  s    zSunOSCPUInfo._is_i386c             C   s   | j d dkS )Nrí   Zsparc)r   )r-   r   r   r   Ú	_is_sparc§  s    zSunOSCPUInfo._is_sparcc             C   s   | j d dkS )Nrí   Úsparcv9)r   )r-   r   r   r   Ú_is_sparcv9©  s    zSunOSCPUInfo._is_sparcv9c             C   s   t | jd  dd¡ƒS )Nrî   ZNumCPUr   )r   r   rœ   )r-   r   r   r   r=   ¬  s    zSunOSCPUInfo._getNCPUsc             C   s   | j d dkS )NrÏ   Zsun4)r   )r-   r   r   r   Ú_is_sun4¯  s    zSunOSCPUInfo._is_sun4c             C   s   t  d| jd ¡d k	S )NZSUNWrì   )r@   r`   r   )r-   r   r   r   Ú_is_SUNW²  s    zSunOSCPUInfo._is_SUNWc             C   s   t  d| jd ¡d k	S )Nz.*SPARCstation-5rì   )r@   r`   r   )r-   r   r   r   Ú_is_sparcstation5´  s    zSunOSCPUInfo._is_sparcstation5c             C   s   t  d| jd ¡d k	S )Nz	.*Ultra-1rì   )r@   r`   r   )r-   r   r   r   Ú
_is_ultra1¶  s    zSunOSCPUInfo._is_ultra1c             C   s   t  d| jd ¡d k	S )Nz.*Ultra-250rì   )r@   r`   r   )r-   r   r   r   Ú_is_ultra250¸  s    zSunOSCPUInfo._is_ultra250c             C   s   t  d| jd ¡d k	S )Nz	.*Ultra-2rì   )r@   r`   r   )r-   r   r   r   Ú
_is_ultra2º  s    zSunOSCPUInfo._is_ultra2c             C   s   t  d| jd ¡d k	S )Nz
.*Ultra-30rì   )r@   r`   r   )r-   r   r   r   Ú_is_ultra30¼  s    zSunOSCPUInfo._is_ultra30c             C   s   t  d| jd ¡d k	S )Nz	.*Ultra-4rì   )r@   r`   r   )r-   r   r   r   Ú
_is_ultra4¾  s    zSunOSCPUInfo._is_ultra4c             C   s   t  d| jd ¡d k	S )Nz.*Ultra-5_10rì   )r@   r`   r   )r-   r   r   r   Ú_is_ultra5_10À  s    zSunOSCPUInfo._is_ultra5_10c             C   s   t  d| jd ¡d k	S )Nz	.*Ultra-5rì   )r@   r`   r   )r-   r   r   r   Ú
_is_ultra5Â  s    zSunOSCPUInfo._is_ultra5c             C   s   t  d| jd ¡d k	S )Nz
.*Ultra-60rì   )r@   r`   r   )r-   r   r   r   Ú_is_ultra60Ä  s    zSunOSCPUInfo._is_ultra60c             C   s   t  d| jd ¡d k	S )Nz
.*Ultra-80rì   )r@   r`   r   )r-   r   r   r   Ú_is_ultra80Æ  s    zSunOSCPUInfo._is_ultra80c             C   s   t  d| jd ¡d k	S )Nz.*Ultra-Enterpriserì   )r@   r`   r   )r-   r   r   r   Ú_is_ultraenterpriceÈ  s    z SunOSCPUInfo._is_ultraenterpricec             C   s   t  d| jd ¡d k	S )Nz.*Ultra-Enterprise-10000rì   )r@   r`   r   )r-   r   r   r   Ú_is_ultraenterprice10kÊ  s    z#SunOSCPUInfo._is_ultraenterprice10kc             C   s   t  d| jd ¡d k	S )Nz
.*Sun-Firerì   )r@   r`   r   )r-   r   r   r   Ú_is_sunfireÌ  s    zSunOSCPUInfo._is_sunfirec             C   s   t  d| jd ¡d k	S )Nz.*Ultrarì   )r@   r`   r   )r-   r   r   r   Ú	_is_ultraÎ  s    zSunOSCPUInfo._is_ultrac             C   s   | j d dkS )Nrð   Zsparcv7)r   )r-   r   r   r   Ú_is_cpusparcv7Ñ  s    zSunOSCPUInfo._is_cpusparcv7c             C   s   | j d dkS )Nrð   Zsparcv8)r   )r-   r   r   r   Ú_is_cpusparcv8Ó  s    zSunOSCPUInfo._is_cpusparcv8c             C   s   | j d dkS )Nrð   ró   )r   )r-   r   r   r   Ú_is_cpusparcv9Õ  s    zSunOSCPUInfo._is_cpusparcv9)rH   rI   rJ   r   rV   rW   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ê   Ž  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   sv  | j d k	rd S g }y&dd l}t dtj¡}| |j| j¡}d}xöy| ||¡}W n |j	k
rj   P Y qBX |d7 }| 
d|i¡ | ||¡}d}x y| ||¡\}	}
}W n |j	k
rÂ   P Y q”X |d }|
|d |	< |	dkr”| |
¡}|r”t| d¡ƒ|d d< t| d	¡ƒ|d d
< t| d¡ƒ|d d< q”W qBW W n. tk
rh } zt|dƒ W d d }~X Y nX || j_ d S )Nr   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)r   Z	ProcessorrN   Z
IdentifierZFMLÚFamilyZMDLÚModelZSTPZSteppingz
(ignoring))r   Úwinregr@   rA   r‰   ÚOpenKeyÚHKEY_LOCAL_MACHINEÚpkeyÚEnumKeyÚerrorrP   Z	EnumValuerB   r   rC   r,   ÚprintrR   )r-   r   r  ZprgxZchndZpnumÚprocZphndZpidxr;   rU   ZvtpeZsrchr   r   r   r   rV   à  sD    

"zWin32CPUInfo.__init__c             C   s   d S )Nr   )r-   r   r   r   rW     r3   zWin32CPUInfo._not_implc             C   s   | j d d dkS )Nr   ÚVendorIdentifierrY   )r   )r-   r   r   r   rZ     s    zWin32CPUInfo._is_AMDc             C   s   |   ¡ o| jd d dkS )Nr   r	  é   )rf   r   )r-   r   r   r   Ú	_is_Am486  s    zWin32CPUInfo._is_Am486c             C   s   |   ¡ o| jd d dkS )Nr   r	  r  )rf   r   )r-   r   r   r   Ú
_is_Am5x86  s    zWin32CPUInfo._is_Am5x86c             C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r	  é   r
  )r   r   r$   é   )rf   r   )r-   r   r   r   Ú	_is_AMDK5  s    zWin32CPUInfo._is_AMDK5c             C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r	  r  r
  )é   é   )rf   r   )r-   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	  r  r
  é   )rf   r   )r-   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	  r  r
  é	   )rf   r   )r-   r   r   r   Ú_is_AMDK6_3!  s    zWin32CPUInfo._is_AMDK6_3c             C   s   |   ¡ o| jd d dkS )Nr   r	  r  )rf   r   )r-   r   r   r   Ú	_is_AMDK7%  s    zWin32CPUInfo._is_AMDK7c             C   s   |   ¡ o| jd d dkS )Nr   r	  é   )rf   r   )r-   r   r   r   rg   ,  s    zWin32CPUInfo._is_AMD64c             C   s   | j d d dkS )Nr   r  rs   )r   )r-   r   r   r   rt   1  s    zWin32CPUInfo._is_Intelc             C   s   | j d d dkS )Nr   r	  r  )r   )r-   r   r   r   r–   4  s    zWin32CPUInfo._is_i386c             C   s   | j d d dkS )Nr   r	  r  )r   )r-   r   r   r   ru   7  s    zWin32CPUInfo._is_i486c             C   s   |   ¡ o| jd d dkS )Nr   r	  r  )rw   r   )r-   r   r   r   rx   :  s    zWin32CPUInfo._is_i586c             C   s   |   ¡ o| jd d dkS )Nr   r	  r  )rw   r   )r-   r   r   r   rz   =  s    zWin32CPUInfo._is_i686c             C   s   |   ¡ o| jd d dkS )Nr   r	  r  )rw   r   )r-   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	  r  r
  r  )rw   r   )r-   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	  r  r
  r   )rw   r   )r-   r   r   r   r~   G  s    zWin32CPUInfo._is_PentiumProc             C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r	  r  r
  )r  r  r  )rw   r   )r-   r   r   r   r}   K  s    zWin32CPUInfo._is_PentiumIIc             C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r	  r  r
  )r  r  r  é
   é   )rw   r   )r-   r   r   r   r€   O  s    zWin32CPUInfo._is_PentiumIIIc             C   s   |   ¡ o| jd d dkS )Nr   r	  r"  )rw   r   )r-   r   r   r   r   S  s    zWin32CPUInfo._is_PentiumIVc             C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r	  r  r
  )r  é   é   )rw   r   )r-   r   r   r   r‚   V  s    zWin32CPUInfo._is_PentiumMc             C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r	  r  r
  )r"  é   é   )rw   r   )r-   r   r   r   r‡   Z  s    zWin32CPUInfo._is_Core2c             C   s   t | jƒdkS )Nr   )r&   r   )r-   r   r   r   r‹   `  s    zWin32CPUInfo._is_singleCPUc             C   s
   t | jƒS )N)r&   r   )r-   r   r   r   r=   c  s    zWin32CPUInfo._getNCPUsc             C   s`   |   ¡ r>| jd d dkr,| jd d dkp<| jd d dkS |  ¡ rX| jd d dkS dS d S )	Nr   r	  r  r
  r  )r  r"  )r  r  r"  F)rw   r   rf   )r-   r   r   r   r   f  s    $zWin32CPUInfo._has_mmxc             C   s„   |   ¡ r>| jd d dkr,| jd d dkp<| jd d dkS |  ¡ r|| jd d dkrj| jd d dkpz| jd d dkS dS d S )	Nr   r	  r  r
  )r  r  r  r#  r$  r"  )r  r  r  r#  F)rw   r   rf   )r-   r   r   r   r   o  s    zWin32CPUInfo._has_ssec             C   s8   |   ¡ r |  ¡ p|  ¡ p|  ¡ S |  ¡ r0|  ¡ S dS d S )NF)rw   Zis_Pentium4Zis_PentiumMZis_Core2rf   Zis_AMD64)r-   r   r   r   r‘   {  s    zWin32CPUInfo._has_sse2c             C   s   |   ¡ o| jd d dkS )Nr   r	  )r  r  r"  )rf   r   )r-   r   r   r   r”   „  s    zWin32CPUInfo._has_3dnowc             C   s   |   ¡ o| jd d dkS )Nr   r	  )r  r"  )rf   r   )r-   r   r   r   r•   ‡  s    zWin32CPUInfo._has_3dnowext)$rH   rI   rJ   r   r  rV   rW   rZ   r  r  r  r  r  r   r!  rg   rt   r–   ru   rx   rz   r|   r   r~   r}   r€   r   r‚   r‡   r‹   r=   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   )rK   Ú__all__r   r>   r@   Úsysr8   r	   Ú
subprocessr   r   r   r    r*   r+   rL   r—   rÎ   rê   r  r4   Zcpuinfor   r   r   r   r   Ú<module>   sF   


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