
;>"^Y                 @   s7  d  Z  d d l m Z m Z m Z d g Z d d l Z d d l Z d d l Z d d l	 Z	 e j
 d d k r d d l m Z n d d l m Z d d l Z d d l Z d d l m Z d# d d	 d
  Z d$ d d d  Z d% d d d  Z d& d d d  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z e j j d  re Z n e j j d  re Z no e j d k re Z nW e j j d   re Z n< e j j d!  r	e Z n! e j 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

    )divisionabsolute_importprint_functioncpuN   )getstatusoutput)get_exception   c             C   s   y t  |   \ } } Wn; t k
 rS t   } t j t |  t d | d SYn Xt j |  r t j	 |  | k r d | f Sd | f S)N
stacklevelF T)Fr   )
r   EnvironmentErrorr   warningswarnstrUserWarningos	WIFEXITEDWEXITSTATUS)cmdsuccessful_statusr
   statusoutpute r   I/home/birch/.local/lib/python3.5/site-packages/numpy/distutils/cpuinfo.py	getoutput    s    		$
r   c             K   sW   i  } xJ | D]B } t  | | d |  d | d \ } } | r | j   | | <q W| S)Nr   r
   r	   )r   strip)r   r
   kwinfokeyokr   r   r   r   command_info+   s    r!   c             c   sR   t  |  d | d | d \ } } | s, d  Sx | j   D] } | j   Vq9 Wd  S)Nr   r
   r	   )r   
splitlinesr   )r   r   r
   r    r   liner   r   r   command_by_line4   s    r$   c             C   st   i  } xg t  |  d | d | d D]I } d d   | j | d  D } t |  d k r# | d | | d <q# W| S)Nr   r
   r	   c             S   s   g  |  ] } | j     q Sr   )r   ).0sr   r   r   
<listcomp>A   s   	 z*key_value_from_command.<locals>.<listcomp>   r   )r$   splitlen)r   sepr   r
   dr#   lr   r   r   key_value_from_command<   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 |   SWn t  k
 r Yn Xd  S)N)	Exception)selffuncr   r   r   	_try_callK   s    zCPUInfoBase._try_callc             C   sw   | j  d  sg t |  d |  r] t |  d |  } t | t j  rg |  j | d d  Sn
 d d   St |   d  S)N_c             S   s
   |  |  S)Nr   )r2   attrr   r   r   <lambda>V   s    z)CPUInfoBase.__getattr__.<locals>.<lambda>c               S   s   d  S)Nr   r   r   r   r   r6   X   s    )
startswithhasattrgetattr
isinstancetypes
MethodTyper3   AttributeError)r1   namer5   r   r   r   __getattr__Q   s    
zCPUInfoBase.__getattr__c             C   s   d S)Nr	   r   )r1   r   r   r   	_getNCPUs[   s    zCPUInfoBase._getNCPUsc             C   s5   t  j   d } t j d  j |  j d  } | S)Nr   z(\d+)bitr	   )platformarchitecturerecompilesearchgroup)r1   abitsnbitsr   r   r   __get_nbits^   s    !zCPUInfoBase.__get_nbitsc             C   s   |  j    d k S)N32)_CPUInfoBase__get_nbits)r1   r   r   r   	_is_32bitc   s    zCPUInfoBase._is_32bitc             C   s   |  j    d k S)N64)rK   )r1   r   r   r   	_is_64bitf   s    zCPUInfoBase._is_64bitN)
__name__
__module____qualname____doc__r3   r?   r@   rK   rL   rN   r   r   r   r   r/   F   s   
r/   c               @   sJ  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 d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d8 d9   Z  d: d;   Z! d< d=   Z" d> d?   Z# d@ dA   Z$ dB dC   Z% dD dE   Z& dF dG   Z' e' Z( dH dI   Z) dJ dK   Z* dL dM   Z+ dN dO   Z, dP dQ   Z- dR dS   Z. dT dU   Z/ dV dW   Z0 dX dY   Z1 dZ d[   Z2 d\ d]   Z3 d S)^LinuxCPUInfoNc       
      C   s/  |  j  d  k	 r d  Si  g } t d  \ } } | rH | j   | d d <y t d  } Wn7 t k
 r t   } t j t |  t	 d d Yn Xx | D]x } d d   | j
 d	 d
  D } t |  d k r q | \ } }	 | s | | d k r| j i   |	 | d | <q W| j   | |  j _  d  S)Nzuname -mr   uname_mz/proc/cpuinfor
   r(   c             S   s   g  |  ] } | j     q Sr   )r   )r%   r&   r   r   r   r'   {   s   	 z)LinuxCPUInfo.__init__.<locals>.<listcomp>:r	   rV   )r   r   r   openr   r   r   r   r   r   r)   r*   appendclose	__class__)
r1   r   r    r   for   r#   
name_valuer>   valuer   r   r   __init__m   s*    		!
zLinuxCPUInfo.__init__c             C   s   d  S)Nr   )r1   r   r   r   	_not_impl   s    zLinuxCPUInfo._not_implc             C   s   |  j  d d d k S)Nr   	vendor_idAuthenticAMD)r   )r1   r   r   r   _is_AMD   s    zLinuxCPUInfo._is_AMDc             C   s!   |  j    o  |  j d d d k S)Nr   model2)rb   r   )r1   r   r   r   _is_AthlonK6_2   s    zLinuxCPUInfo._is_AthlonK6_2c             C   s!   |  j    o  |  j d d d k S)Nr   rc   3)rb   r   )r1   r   r   r   _is_AthlonK6_3   s    zLinuxCPUInfo._is_AthlonK6_3c             C   s!   t  j d |  j d d  d  k	 S)Nz	.*?AMD-K6r   z
model name)rC   matchr   )r1   r   r   r   _is_AthlonK6   s    zLinuxCPUInfo._is_AthlonK6c             C   s!   t  j d |  j d d  d  k	 S)Nz	.*?AMD-K7r   z
model name)rC   rh   r   )r1   r   r   r   _is_AthlonK7   s    zLinuxCPUInfo._is_AthlonK7c             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Athlon\(tm\) MP\br   z
model name)rC   rh   r   )r1   r   r   r   _is_AthlonMP   s    	zLinuxCPUInfo._is_AthlonMPc             C   s!   |  j    o  |  j d d d k S)Nr   family15)is_AMDr   )r1   r   r   r   	_is_AMD64   s    zLinuxCPUInfo._is_AMD64c             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Athlon\(tm\) 64\br   z
model name)rC   rh   r   )r1   r   r   r   _is_Athlon64   s    	zLinuxCPUInfo._is_Athlon64c             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Athlon HX\br   z
model name)rC   rh   r   )r1   r   r   r   _is_AthlonHX   s    	zLinuxCPUInfo._is_AthlonHXc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Opteron\br   z
model name)rC   rh   r   )r1   r   r   r   _is_Opteron   s    	zLinuxCPUInfo._is_Opteronc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Hammer\br   z
model name)rC   rh   r   )r1   r   r   r   
_is_Hammer   s    	zLinuxCPUInfo._is_Hammerc             C   s   |  j  d d d k S)Nr   r   Alpha)r   )r1   r   r   r   	_is_Alpha   s    zLinuxCPUInfo._is_Alphac             C   s!   |  j    o  |  j d d d k S)Nr   z	cpu modelEV4)is_Alphar   )r1   r   r   r   _is_EV4   s    zLinuxCPUInfo._is_EV4c             C   s!   |  j    o  |  j d d d k S)Nr   z	cpu modelEV5)rw   r   )r1   r   r   r   _is_EV5   s    zLinuxCPUInfo._is_EV5c             C   s!   |  j    o  |  j d d d k S)Nr   z	cpu modelEV56)rw   r   )r1   r   r   r   _is_EV56   s    zLinuxCPUInfo._is_EV56c             C   s!   |  j    o  |  j d d d k S)Nr   z	cpu modelPCA56)rw   r   )r1   r   r   r   	_is_PCA56   s    zLinuxCPUInfo._is_PCA56c             C   s   |  j  d d d k S)Nr   r`   GenuineIntel)r   )r1   r   r   r   	_is_Intel   s    zLinuxCPUInfo._is_Intelc             C   s   |  j  d d d k S)Nr   r   i486)r   )r1   r   r   r   _is_i486   s    zLinuxCPUInfo._is_i486c             C   s!   |  j    o  |  j d d d k S)Nr   z
cpu family5)is_Intelr   )r1   r   r   r   _is_i586   s    zLinuxCPUInfo._is_i586c             C   s!   |  j    o  |  j d d d k S)Nr   z
cpu family6)r   r   )r1   r   r   r   _is_i686   s    zLinuxCPUInfo._is_i686c             C   s!   t  j d |  j d d  d  k	 S)Nz
.*?Celeronr   z
model name)rC   rh   r   )r1   r   r   r   _is_Celeron   s    	zLinuxCPUInfo._is_Celeronc             C   s!   t  j d |  j d d  d  k	 S)Nz
.*?Pentiumr   z
model name)rC   rh   r   )r1   r   r   r   _is_Pentium   s    	zLinuxCPUInfo._is_Pentiumc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Pentium.*?II\br   z
model name)rC   rh   r   )r1   r   r   r   _is_PentiumII   s    	zLinuxCPUInfo._is_PentiumIIc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?PentiumPro\br   z
model name)rC   rh   r   )r1   r   r   r   _is_PentiumPro   s    	zLinuxCPUInfo._is_PentiumProc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Pentium.*?MMX\br   z
model name)rC   rh   r   )r1   r   r   r   _is_PentiumMMX   s    	zLinuxCPUInfo._is_PentiumMMXc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Pentium.*?III\br   z
model name)rC   rh   r   )r1   r   r   r   _is_PentiumIII   s    	zLinuxCPUInfo._is_PentiumIIIc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Pentium.*?(IV|4)\br   z
model name)rC   rh   r   )r1   r   r   r   _is_PentiumIV   s    	zLinuxCPUInfo._is_PentiumIVc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Pentium.*?M\br   z
model name)rC   rh   r   )r1   r   r   r   _is_PentiumM   s    	zLinuxCPUInfo._is_PentiumMc             C   s   |  j    o |  j   S)N)is_PentiumIVhas_sse3)r1   r   r   r   _is_Prescott   s    zLinuxCPUInfo._is_Prescottc             C   st   |  j    os |  j d d d k s: |  j d d d k os |  j   os |  j   os t j d |  j d d  d  k	 S)Nr   z
cpu familyr   rm   z	.*?\blm\bflags)r   r   r   	has_ssse3rC   rh   )r1   r   r   r   
_is_Nocona   s
    zLinuxCPUInfo._is_Noconac             C   s9   |  j    o8 |  j   o8 t j d |  j d d  d  k	 S)Nz.*?Core\(TM\)2\br   z
model name)is_64bitr   rC   rh   r   )r1   r   r   r   	_is_Core2   s    	zLinuxCPUInfo._is_Core2c             C   s!   t  j d |  j d d  d  k	 S)Nz.*?Itanium\br   rl   )rC   rh   r   )r1   r   r   r   _is_Itanium   s    	zLinuxCPUInfo._is_Itaniumc             C   s'   t  j d |  j d d t  j  d  k	 S)Nz	.*?XEON\br   z
model name)rC   rh   r   
IGNORECASE)r1   r   r   r   _is_XEON  s    	zLinuxCPUInfo._is_XEONc             C   s   t  |  j  d k S)Nr	   )r*   r   )r1   r   r   r   _is_singleCPU  s    zLinuxCPUInfo._is_singleCPUc             C   s   t  |  j  S)N)r*   r   )r1   r   r   r   r@     s    zLinuxCPUInfo._getNCPUsc             C   s   |  j  d d d k S)Nr   fdiv_bugyes)r   )r1   r   r   r   _has_fdiv_bug  s    zLinuxCPUInfo._has_fdiv_bugc             C   s   |  j  d d d k S)Nr   f00f_bugr   )r   )r1   r   r   r   _has_f00f_bug  s    zLinuxCPUInfo._has_f00f_bugc             C   s!   t  j d |  j d d  d  k	 S)Nz
.*?\bmmx\br   r   )rC   rh   r   )r1   r   r   r   _has_mmx  s    zLinuxCPUInfo._has_mmxc             C   s!   t  j d |  j d d  d  k	 S)Nz
.*?\bsse\br   r   )rC   rh   r   )r1   r   r   r   _has_sse  s    zLinuxCPUInfo._has_ssec             C   s!   t  j d |  j d d  d  k	 S)Nz.*?\bsse2\br   r   )rC   rh   r   )r1   r   r   r   	_has_sse2  s    zLinuxCPUInfo._has_sse2c             C   s!   t  j d |  j d d  d  k	 S)Nz
.*?\bpni\br   r   )rC   rh   r   )r1   r   r   r   	_has_sse3!  s    zLinuxCPUInfo._has_sse3c             C   s!   t  j d |  j d d  d  k	 S)Nz.*?\bssse3\br   r   )rC   rh   r   )r1   r   r   r   
_has_ssse3$  s    zLinuxCPUInfo._has_ssse3c             C   s!   t  j d |  j d d  d  k	 S)Nz.*?\b3dnow\br   r   )rC   rh   r   )r1   r   r   r   
_has_3dnow'  s    zLinuxCPUInfo._has_3dnowc             C   s!   t  j d |  j d d  d  k	 S)Nz.*?\b3dnowext\br   r   )rC   rh   r   )r1   r   r   r   _has_3dnowext*  s    zLinuxCPUInfo._has_3dnowext)4rO   rP   rQ   r   r^   r_   rb   re   rg   ri   rj   rk   ro   rp   rq   rr   rs   ru   rx   rz   r|   r~   _is_i386r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _is_Xeonr   r@   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   i   sb   rS   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 d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d8 d9   Z d: d;   Z  d< d=   Z! d> d?   Z" d@ dA   Z# dB dC   Z$ dD dE   Z% dF dG   Z& dH dI   Z' dJ dK   Z( d S)LIRIXCPUInfoNc             C   s;   |  j  d  k	 r d  St d d d d d } | |  j _  d  S)Nsysconfr+    r   r   r	   )r   r	   )r   r.   rZ   )r1   r   r   r   r   r^   0  s
    	zIRIXCPUInfo.__init__c             C   s   d  S)Nr   )r1   r   r   r   r_   7  s    zIRIXCPUInfo._not_implc             C   s   |  j  j d  d k S)NNUM_PROCESSORS1)r   get)r1   r   r   r   r   9  s    zIRIXCPUInfo._is_singleCPUc             C   s   t  |  j j d d   S)Nr   r	   )intr   r   )r1   r   r   r   r@   <  s    zIRIXCPUInfo._getNCPUsc             C   s*   |  j  j d  j   d j   d | k S)N
PROCESSORSr   zr%s)r   r   r)   lower)r1   nr   r   r   	__cputype?  s    zIRIXCPUInfo.__cputypec             C   s   |  j  d  S)Ni  )_IRIXCPUInfo__cputype)r1   r   r   r   	_is_r2000A  s    zIRIXCPUInfo._is_r2000c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   	_is_r3000B  s    zIRIXCPUInfo._is_r3000c             C   s   |  j  d  S)Ni<  )r   )r1   r   r   r   	_is_r3900C  s    zIRIXCPUInfo._is_r3900c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   	_is_r4000D  s    zIRIXCPUInfo._is_r4000c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   	_is_r4100E  s    zIRIXCPUInfo._is_r4100c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   	_is_r4300F  s    zIRIXCPUInfo._is_r4300c             C   s   |  j  d  S)Ni0  )r   )r1   r   r   r   	_is_r4400G  s    zIRIXCPUInfo._is_r4400c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   	_is_r4600H  s    zIRIXCPUInfo._is_r4600c             C   s   |  j  d  S)Ni*  )r   )r1   r   r   r   	_is_r4650I  s    zIRIXCPUInfo._is_r4650c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   	_is_r5000J  s    zIRIXCPUInfo._is_r5000c             C   s   |  j  d  S)Nip  )r   )r1   r   r   r   	_is_r6000K  s    zIRIXCPUInfo._is_r6000c             C   s   |  j  d  S)Ni@  )r   )r1   r   r   r   	_is_r8000L  s    zIRIXCPUInfo._is_r8000c             C   s   |  j  d  S)Ni'  )r   )r1   r   r   r   
_is_r10000M  s    zIRIXCPUInfo._is_r10000c             C   s   |  j  d  S)Ni.  )r   )r1   r   r   r   
_is_r12000N  s    zIRIXCPUInfo._is_r12000c             C   s   |  j  d  S)Norion)r   )r1   r   r   r   
_is_rorionO  s    zIRIXCPUInfo._is_rorionc             C   s-   y |  j  j d  SWn t k
 r( Yn Xd  S)NMACHINE)r   r   r0   )r1   r   r   r   get_ipQ  s      zIRIXCPUInfo.get_ipc             C   s    |  j  j d  j   d | k S)Nr   zip%s)r   r   r   )r1   r   r   r   r   	__machineT  s    zIRIXCPUInfo.__machinec             C   s   |  j  d  S)N   )_IRIXCPUInfo__machine)r1   r   r   r   _is_IP19V  s    zIRIXCPUInfo._is_IP19c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP20W  s    zIRIXCPUInfo._is_IP20c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP21X  s    zIRIXCPUInfo._is_IP21c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP22Y  s    zIRIXCPUInfo._is_IP22c             C   s   |  j  d  o |  j   S)Nr   )r   r   )r1   r   r   r   _is_IP22_4kZ  s    zIRIXCPUInfo._is_IP22_4kc             C   s   |  j  d  o |  j   S)Nr   )r   r   )r1   r   r   r   _is_IP22_5k[  s    zIRIXCPUInfo._is_IP22_5kc             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP24\  s    zIRIXCPUInfo._is_IP24c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP25]  s    zIRIXCPUInfo._is_IP25c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP26^  s    zIRIXCPUInfo._is_IP26c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP27_  s    zIRIXCPUInfo._is_IP27c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP28`  s    zIRIXCPUInfo._is_IP28c             C   s   |  j  d  S)N   )r   )r1   r   r   r   _is_IP30a  s    zIRIXCPUInfo._is_IP30c             C   s   |  j  d  S)N    )r   )r1   r   r   r   _is_IP32b  s    zIRIXCPUInfo._is_IP32c             C   s   |  j  d  o |  j   S)Nr   )r   r   )r1   r   r   r   _is_IP32_5kc  s    zIRIXCPUInfo._is_IP32_5kc             C   s   |  j  d  o |  j   S)Nr   )r   r   )r1   r   r   r   _is_IP32_10kd  s    zIRIXCPUInfo._is_IP32_10k))rO   rP   rQ   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   r   r   r   -  sL   r   c               @   sB  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 d0 d1   Z d2 d3   Z d S)4DarwinCPUInfoNc             C   sN   |  j  d  k	 r d  St d d d d  } t d d d | d <| |  j _  d  S)Narchmachinez	sysctl hwr+   =	sysctl_hw)r   r!   r.   rZ   )r1   r   r   r   r   r^   j  s    	zDarwinCPUInfo.__init__c             C   s   d  S)Nr   )r1   r   r   r   r_   r  s    zDarwinCPUInfo._not_implc             C   s   t  |  j d j d d   S)Nr   zhw.ncpur	   )r   r   r   )r1   r   r   r   r@   t  s    zDarwinCPUInfo._getNCPUsc             C   s   |  j  d d d k S)Nr   z
hw.machinezPower Macintosh)r   )r1   r   r   r   _is_Power_Macintoshw  s    z!DarwinCPUInfo._is_Power_Macintoshc             C   s   |  j  d d k S)Nr   i386)r   )r1   r   r   r   r   z  s    zDarwinCPUInfo._is_i386c             C   s   |  j  d d k S)Nr   ppc)r   )r1   r   r   r   _is_ppc|  s    zDarwinCPUInfo._is_ppcc             C   s   |  j  d d | k S)Nr   zppc%s)r   )r1   r   r   r   r   r     s    zDarwinCPUInfo.__machinec             C   s   |  j  d  S)NiY  )_DarwinCPUInfo__machine)r1   r   r   r   
_is_ppc601  s    zDarwinCPUInfo._is_ppc601c             C   s   |  j  d  S)NiZ  )r   )r1   r   r   r   
_is_ppc602  s    zDarwinCPUInfo._is_ppc602c             C   s   |  j  d  S)Ni[  )r   )r1   r   r   r   
_is_ppc603  s    zDarwinCPUInfo._is_ppc603c             C   s   |  j  d  S)N603e)r   )r1   r   r   r   _is_ppc603e  s    zDarwinCPUInfo._is_ppc603ec             C   s   |  j  d  S)Ni\  )r   )r1   r   r   r   
_is_ppc604  s    zDarwinCPUInfo._is_ppc604c             C   s   |  j  d  S)N604e)r   )r1   r   r   r   _is_ppc604e  s    zDarwinCPUInfo._is_ppc604ec             C   s   |  j  d  S)Nil  )r   )r1   r   r   r   
_is_ppc620  s    zDarwinCPUInfo._is_ppc620c             C   s   |  j  d  S)Niv  )r   )r1   r   r   r   
_is_ppc630  s    zDarwinCPUInfo._is_ppc630c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   
_is_ppc740  s    zDarwinCPUInfo._is_ppc740c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   _is_ppc7400  s    zDarwinCPUInfo._is_ppc7400c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   _is_ppc7450  s    zDarwinCPUInfo._is_ppc7450c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   
_is_ppc750  s    zDarwinCPUInfo._is_ppc750c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   
_is_ppc403  s    zDarwinCPUInfo._is_ppc403c             C   s   |  j  d  S)Ni  )r   )r1   r   r   r   
_is_ppc505  s    zDarwinCPUInfo._is_ppc505c             C   s   |  j  d  S)Ni!  )r   )r1   r   r   r   
_is_ppc801  s    zDarwinCPUInfo._is_ppc801c             C   s   |  j  d  S)Ni5  )r   )r1   r   r   r   
_is_ppc821  s    zDarwinCPUInfo._is_ppc821c             C   s   |  j  d  S)Ni7  )r   )r1   r   r   r   
_is_ppc823  s    zDarwinCPUInfo._is_ppc823c             C   s   |  j  d  S)Ni\  )r   )r1   r   r   r   
_is_ppc860  s    zDarwinCPUInfo._is_ppc860)rO   rP   rQ   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   g  s4   r   c               @   sB  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 d0 d1   Z d2 d3   Z d S)4SunOSCPUInfoNc             C   s   |  j  d  k	 r d  St d d d d d d d d d d  } t d d	 d
 | d <x@ t d  D]2 } t j d |  } | r] | j d  | d <Pq] W| |  j _  d  S)Nr   machuname_i	isainfo_bz
isainfo -b	isainfo_nz
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$   rC   rh   rF   rZ   )r1   r   r#   mr   r   r   r^     s    	zSunOSCPUInfo.__init__c             C   s   d  S)Nr   )r1   r   r   r   r_     s    zSunOSCPUInfo._not_implc             C   s   |  j  d d k S)Nr  r   )r   )r1   r   r   r   r     s    zSunOSCPUInfo._is_i386c             C   s   |  j  d d k S)Nr  sparc)r   )r1   r   r   r   	_is_sparc  s    zSunOSCPUInfo._is_sparcc             C   s   |  j  d d k S)Nr  sparcv9)r   )r1   r   r   r   _is_sparcv9  s    zSunOSCPUInfo._is_sparcv9c             C   s   t  |  j d j d d   S)Nr  NumCPUr	   )r   r   r   )r1   r   r   r   r@     s    zSunOSCPUInfo._getNCPUsc             C   s   |  j  d d k S)Nr   sun4)r   )r1   r   r   r   _is_sun4  s    zSunOSCPUInfo._is_sun4c             C   s   t  j d |  j d  d  k	 S)NSUNWr  )rC   rh   r   )r1   r   r   r   _is_SUNW  s    zSunOSCPUInfo._is_SUNWc             C   s   t  j d |  j d  d  k	 S)Nz.*SPARCstation-5r  )rC   rh   r   )r1   r   r   r   _is_sparcstation5  s    zSunOSCPUInfo._is_sparcstation5c             C   s   t  j d |  j d  d  k	 S)Nz	.*Ultra-1r  )rC   rh   r   )r1   r   r   r   
_is_ultra1  s    zSunOSCPUInfo._is_ultra1c             C   s   t  j d |  j d  d  k	 S)Nz.*Ultra-250r  )rC   rh   r   )r1   r   r   r   _is_ultra250  s    zSunOSCPUInfo._is_ultra250c             C   s   t  j d |  j d  d  k	 S)Nz	.*Ultra-2r  )rC   rh   r   )r1   r   r   r   
_is_ultra2  s    zSunOSCPUInfo._is_ultra2c             C   s   t  j d |  j d  d  k	 S)Nz
.*Ultra-30r  )rC   rh   r   )r1   r   r   r   _is_ultra30  s    zSunOSCPUInfo._is_ultra30c             C   s   t  j d |  j d  d  k	 S)Nz	.*Ultra-4r  )rC   rh   r   )r1   r   r   r   
_is_ultra4  s    zSunOSCPUInfo._is_ultra4c             C   s   t  j d |  j d  d  k	 S)Nz.*Ultra-5_10r  )rC   rh   r   )r1   r   r   r   _is_ultra5_10  s    zSunOSCPUInfo._is_ultra5_10c             C   s   t  j d |  j d  d  k	 S)Nz	.*Ultra-5r  )rC   rh   r   )r1   r   r   r   
_is_ultra5  s    zSunOSCPUInfo._is_ultra5c             C   s   t  j d |  j d  d  k	 S)Nz
.*Ultra-60r  )rC   rh   r   )r1   r   r   r   _is_ultra60  s    zSunOSCPUInfo._is_ultra60c             C   s   t  j d |  j d  d  k	 S)Nz
.*Ultra-80r  )rC   rh   r   )r1   r   r   r   _is_ultra80  s    zSunOSCPUInfo._is_ultra80c             C   s   t  j d |  j d  d  k	 S)Nz.*Ultra-Enterpriser  )rC   rh   r   )r1   r   r   r   _is_ultraenterprice  s    z SunOSCPUInfo._is_ultraenterpricec             C   s   t  j d |  j d  d  k	 S)Nz.*Ultra-Enterprise-10000r  )rC   rh   r   )r1   r   r   r   _is_ultraenterprice10k  s    z#SunOSCPUInfo._is_ultraenterprice10kc             C   s   t  j d |  j d  d  k	 S)Nz
.*Sun-Firer  )rC   rh   r   )r1   r   r   r   _is_sunfire  s    zSunOSCPUInfo._is_sunfirec             C   s   t  j d |  j d  d  k	 S)Nz.*Ultrar  )rC   rh   r   )r1   r   r   r   	_is_ultra  s    zSunOSCPUInfo._is_ultrac             C   s   |  j  d d k S)Nr	  sparcv7)r   )r1   r   r   r   _is_cpusparcv7  s    zSunOSCPUInfo._is_cpusparcv7c             C   s   |  j  d d k S)Nr	  sparcv8)r   )r1   r   r   r   _is_cpusparcv8  s    zSunOSCPUInfo._is_cpusparcv8c             C   s   |  j  d d k S)Nr	  r  )r   )r1   r   r   r   _is_cpusparcv9  s    zSunOSCPUInfo._is_cpusparcv9)rO   rP   rQ   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    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 d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z d9 d:   Z  d; d<   Z! d= d>   Z" d? d@   Z# d S)AWin32CPUInfoNz,HARDWARE\DESCRIPTION\System\CentralProcessorc             C   s  |  j  d  k	 r d  Sg  } yt j d d k r> d d  l } n d d  l } t j d t j  } | j | j	 |  j
  } d } x7y | j | |  } Wn | j k
 r PYq X| d 7} | j d | i  | j | |  } d } x y | j | |  \ }	 }
 } Wn | j k
 rPYq X| d } |
 | d |	 <|	 d k r | j |
  } | r t | j d   | d d <t | j d	   | d d
 <t | j d   | d d <q Wq WWn) t k
 rt t j   d d  Yn X| |  j _  d  S)Nr   r   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)r	   	Processor
IdentifierFMLFamilyMDLModelSTPSteppingz
(ignoring)rV   rV   rV   rV   )r   sysversion_infowinreg_winregrC   rD   r   OpenKeyHKEY_LOCAL_MACHINEpkeyEnumKeyerrorrX   	EnumValuerE   r   rF   r0   printexc_inforZ   )r1   r   r2  prgxchndpnumprocphndpidxr>   r]   vtpesrchr   r   r   r^     sH    	

)zWin32CPUInfo.__init__c             C   s   d  S)Nr   )r1   r   r   r   r_     s    zWin32CPUInfo._not_implc             C   s   |  j  d d d k S)Nr   VendorIdentifierra   )r   )r1   r   r   r   rb     s    zWin32CPUInfo._is_AMDc             C   s!   |  j    o  |  j d d d k S)Nr   r+     )rn   r   )r1   r   r   r   	_is_Am486  s    zWin32CPUInfo._is_Am486c             C   s!   |  j    o  |  j d d d k S)Nr   r+  rE  )rn   r   )r1   r   r   r   
_is_Am5x86  s    zWin32CPUInfo._is_Am5x86c             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)	Nr   r+     r-  r	   r(   r   )r   r	   r(   r   )rn   r   )r1   r   r   r   	_is_AMDK5  s    #zWin32CPUInfo._is_AMDK5c             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)Nr   r+  rH  r-        )rJ  rK  )rn   r   )r1   r   r   r   	_is_AMDK6#  s    #zWin32CPUInfo._is_AMDK6c             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)Nr   r+  rH  r-     )rn   r   )r1   r   r   r   _is_AMDK6_2'  s    #zWin32CPUInfo._is_AMDK6_2c             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)Nr   r+  rH  r-  	   )rn   r   )r1   r   r   r   _is_AMDK6_3+  s    #zWin32CPUInfo._is_AMDK6_3c             C   s!   |  j    o  |  j d d d k S)Nr   r+  rJ  )rn   r   )r1   r   r   r   	_is_AMDK7/  s    zWin32CPUInfo._is_AMDK7c             C   s!   |  j    o  |  j d d d k S)Nr   r+     )rn   r   )r1   r   r   r   ro   6  s    zWin32CPUInfo._is_AMD64c             C   s   |  j  d d d k S)Nr   rD  r   )r   )r1   r   r   r   r   ;  s    zWin32CPUInfo._is_Intelc             C   s   |  j  d d d k S)Nr   r+  r   )r   )r1   r   r   r   r   >  s    zWin32CPUInfo._is_i386c             C   s   |  j  d d d k S)Nr   r+  rE  )r   )r1   r   r   r   r   A  s    zWin32CPUInfo._is_i486c             C   s!   |  j    o  |  j d d d k S)Nr   r+  rH  )r   r   )r1   r   r   r   r   D  s    zWin32CPUInfo._is_i586c             C   s!   |  j    o  |  j d d d k S)Nr   r+  rJ  )r   r   )r1   r   r   r   r   G  s    zWin32CPUInfo._is_i686c             C   s!   |  j    o  |  j d d d k S)Nr   r+  rH  )r   r   )r1   r   r   r   r   J  s    zWin32CPUInfo._is_Pentiumc             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)Nr   r+  rH  r-  rE  )r   r   )r1   r   r   r   r   M  s    #zWin32CPUInfo._is_PentiumMMXc             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)Nr   r+  rJ  r-  r	   )r   r   )r1   r   r   r   r   Q  s    #zWin32CPUInfo._is_PentiumProc             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)Nr   r+  rJ  r-  r   rH  )r   rH  rJ  )r   r   )r1   r   r   r   r   U  s    #zWin32CPUInfo._is_PentiumIIc             C   s8   |  j    o7 |  j d d d k o7 |  j d d d
 k S)Nr   r+  rJ  r-  rK  rM  rO  
      )rK  rM  rO  rS  rT  )r   r   )r1   r   r   r   r   Y  s    #zWin32CPUInfo._is_PentiumIIIc             C   s!   |  j    o  |  j d d d k S)Nr   r+  rR  )r   r   )r1   r   r   r   r   ]  s    zWin32CPUInfo._is_PentiumIVc             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)	Nr   r+  rJ  r-  rO        )rO  rU  rV  )r   r   )r1   r   r   r   r   `  s    #zWin32CPUInfo._is_PentiumMc             C   s8   |  j    o7 |  j d d d k o7 |  j d d d k S)	Nr   r+  rJ  r-  rR        )rR  rW  rX  )r   r   )r1   r   r   r   r   d  s    #zWin32CPUInfo._is_Core2c             C   s   t  |  j  d k S)Nr	   )r*   r   )r1   r   r   r   r   j  s    zWin32CPUInfo._is_singleCPUc             C   s   t  |  j  S)N)r*   r   )r1   r   r   r   r@   m  s    zWin32CPUInfo._getNCPUsc             C   sx   |  j    rO |  j d d d k r: |  j d d d k pN |  j d d d	 k S|  j   rp |  j d d d
 k Sd Sd  S)Nr   r+  rH  r-  rE  rJ  rR  F)rJ  rR  )rH  rJ  rR  )r   r   rn   )r1   r   r   r   r   p  s    .zWin32CPUInfo._has_mmxc             C   s   |  j    rO |  j d d d k r: |  j d d d k pN |  j d d d
 k S|  j   r |  j d d d k r |  j d d d k p |  j d d d
 k Sd Sd  S)Nr   r+  rJ  r-  rK  rM  rO  rS  rT  rR  F)rK  rM  rO  rS  rT  )rJ  rK  rM  rS  )r   r   rn   )r1   r   r   r   r   y  s    zWin32CPUInfo._has_ssec             C   sL   |  j    r. |  j   p- |  j   p- |  j   S|  j   rD |  j   Sd Sd  S)NF)r   is_Pentium4is_PentiumMis_Core2rn   is_AMD64)r1   r   r   r   r     s    

zWin32CPUInfo._has_sse2c             C   s!   |  j    o  |  j d d d k S)Nr   r+  rH  rJ  rR  )rH  rJ  rR  )rn   r   )r1   r   r   r   r     s    zWin32CPUInfo._has_3dnowc             C   s!   |  j    o  |  j d d d k S)Nr   r+  rJ  rR  )rJ  rR  )rn   r   )r1   r   r   r   r     s    zWin32CPUInfo._has_3dnowext)$rO   rP   rQ   r   r6  r^   r_   rb   rF  rG  rI  rL  rN  rP  rQ  ro   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'    sB   +		r'  linuxirixdarwinsunoswin32cygwin)r   )r   )r   )r   ) rR   
__future__r   r   r   __all__r0  rC   r;   r   r1  
subprocessr   commandsr   rA   numpy.distutils.compatr   r   r!   r$   r.   objectr/   rS   r   r   r  r'  r7   cpuinfor   r   r   r   r   <module>   sF   	$		#:.J						