
    G/PhoX                     l   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Z
ddZdd	Z	 	 dd
Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zej                            d          reZnej                            d          reZngej        dk    reZnYe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                    	 t          |           \  }}nA# t          $ r4}t          j        t	          |          t
          |           Y d }~dS d }~ww xY wt          j        |          rt          j        |          |v rd|fS d|fS )N
stacklevel)F TF)	r   OSErrorwarningswarnstrUserWarningos	WIFEXITEDWEXITSTATUS)cmdsuccessful_statusr	   statusoutputes         W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/distutils/cpuinfo.py	getoutputr      s    (--   c!ffkjAAAAyyyyy 
|F v 6 6:K K KV|&=s    
A)AAc                     i }|D ]9}t          ||         | |dz             \  }}|r|                                ||<   :|S Nr   r   r	   )r   strip)r   r	   kwinfokeyokr   s          r   command_infor"   %   s]    D ' 'r#w:K*4Q,8 8 8
F 	'DIK    c              #      K   t          | ||dz             \  }}|sd S |                                D ]}|                                V  d S r   )r   
splitlinesr   )r   r   r	   r!   r   lines         r   command_by_liner'   .   ss      32C&0l4 4 4JB !!##  jjll r#   c                     i }t          | ||dz             D ]F}d |                    |d          D             }t          |          dk    r|d         ||d         <   G|S )Nr   r   c                 6    g | ]}|                                 S  r   .0ss     r   
<listcomp>z*key_value_from_command.<locals>.<listcomp>;   s     3331QWWYY333r#      r   )r'   splitlen)r   sepr   r	   dr&   ls          r   key_value_from_commandr6   6   sx    
A7H+5a<9 9 9  33

3 2 2333q66Q;;dAadGHr#   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	CPUInfoBasezkHolds CPU information and provides methods for requiring
    the availability of various CPU features.
    c                 :    	  |            S # t           $ r Y d S w xY wN)	Exception)selffuncs     r   	_try_callzCPUInfoBase._try_callE   s4    	466M 	 	 	DD	s   	 
c                     |                     d          sOt          | d|z             r9t          | d|z             }t          |t          j                  r| j        |fdS nd S t          |          )N_c                      | |          S r:   r*   )r=   attrs     r   <lambda>z)CPUInfoBase.__getattr__.<locals>.<lambda>P   s    $$t** r#   c                      d S r:   r*   r*   r#   r   rC   z)CPUInfoBase.__getattr__.<locals>.<lambda>R   s     r#   )
startswithhasattrgetattr
isinstancetypes
MethodTyper>   AttributeError)r<   namerB   s      r   __getattr__zCPUInfoBase.__getattr__K   s    s## 	%tSX&& %tSX..dE$455 M'+~4LLLLM %}$T"""r#   c                     dS Nr   r*   r<   s    r   	_getNCPUszCPUInfoBase._getNCPUsU   s    qr#   c                     t          j                    d         }t          j        d                              |                              d          }|S )Nr   z(\d+)bitr   )platformarchitecturerecompilesearchgroup)r<   abitsnbitss      r   __get_nbitszCPUInfoBase.__get_nbitsX   sE    %''*
;''..u55;;A>>r#   c                 2    |                                  dk    S )N32_CPUInfoBase__get_nbitsrP   s    r   	_is_32bitzCPUInfoBase._is_32bit]       !!T))r#   c                 2    |                                  dk    S )N64r^   rP   s    r   	_is_64bitzCPUInfoBase._is_64bit`   ra   r#   N)
__name__
__module____qualname____doc__r>   rM   rQ   r_   r`   rd   r*   r#   r   r8   r8   @   sx           # # #    
* * ** * * * *r#   r8   c                   .   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'e'Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3dS )0LinuxCPUInfoNc                 6   | j         d S i g}t          d          \  }}|r|                                |d         d<   	 t          d          }|D ]g}d |                    dd          D             }t          |          dk    r6|\  }}|r
||d	         v r|                    i            ||d	         |<   h|                                 n@# t          $ r3}	t          j
        t          |	          t          d
           Y d }	~	nd }	~	ww xY w|| j        _         d S )Nzuname -mr   uname_mz/proc/cpuinfoc                 6    g | ]}|                                 S r*   r+   r,   s     r   r/   z)LinuxCPUInfo.__init__.<locals>.<listcomp>t   s     DDDAaggiiDDDr#   :r   r0   r   )r   r   r   openr1   r2   appendcloser   r   r   r   r   	__class__)
r<   r   r!   r   for&   
name_valuerL   valuer   s
             r   __init__zLinuxCPUInfo.__init__g   sH   9 Fvz**
F 	0!'DGI	o&&B  ' 'DDC1C1CDDD
z??a''(e $ttBx//KKOOO!&RHHJJJJ  	= 	= 	=M#a&&+!<<<<<<<<<	= #s   C 
D
)DD
c                     d S r:   r*   rP   s    r   	_not_implzLinuxCPUInfo._not_impl~         r#   c                 0    | j         d         d         dk    S )Nr   	vendor_idAuthenticAMDr   rP   s    r   _is_AMDzLinuxCPUInfo._is_AMD       y|K(.88r#   c                 X    |                                  o| j        d         d         dk    S )Nr   model2r   r   rP   s    r   _is_AthlonK6_2zLinuxCPUInfo._is_AthlonK6_2   %    ||~~>$)A,w"73">>r#   c                 X    |                                  o| j        d         d         dk    S )Nr   r   3r   rP   s    r   _is_AthlonK6_3zLinuxCPUInfo._is_AthlonK6_3   r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz	.*?AMD-K6r   
model namerU   matchr   rP   s    r   _is_AthlonK6zLinuxCPUInfo._is_AthlonK6   $    xdil<&@AAMMr#   c                 R    t          j        d| j        d         d                   d uS )Nz	.*?AMD-K7r   r   r   rP   s    r   _is_AthlonK7zLinuxCPUInfo._is_AthlonK7   r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Athlon\(tm\) MP\br   r   r   rP   s    r   _is_AthlonMPzLinuxCPUInfo._is_AthlonMP   1    x/	!\24 4;?@ 	@r#   c                 X    |                                  o| j        d         d         dk    S )Nr   family15is_AMDr   rP   s    r   	_is_AMD64zLinuxCPUInfo._is_AMD64   s%    {{}}?1h!74!??r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Athlon\(tm\) 64\br   r   r   rP   s    r   _is_Athlon64zLinuxCPUInfo._is_Athlon64   r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Athlon HX\br   r   r   rP   s    r   _is_AthlonHXzLinuxCPUInfo._is_AthlonHX   s1    x)	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Opteron\br   r   r   rP   s    r   _is_OpteronzLinuxCPUInfo._is_Opteron   s0    x	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Hammer\br   r   r   rP   s    r   
_is_HammerzLinuxCPUInfo._is_Hammer   s0    x	!\24 4;?@ 	@r#   c                 0    | j         d         d         dk    S )Nr   r   Alphar~   rP   s    r   	_is_AlphazLinuxCPUInfo._is_Alpha   s    y|E"G++r#   c                 X    |                                  o| j        d         d         dk    S )Nr   	cpu modelEV4is_Alphar   rP   s    r   _is_EV4zLinuxCPUInfo._is_EV4   %    }}E49Q<#<#EEr#   c                 X    |                                  o| j        d         d         dk    S )Nr   r   EV5r   rP   s    r   _is_EV5zLinuxCPUInfo._is_EV5   r   r#   c                 X    |                                  o| j        d         d         dk    S )Nr   r   EV56r   rP   s    r   _is_EV56zLinuxCPUInfo._is_EV56   s%    }}F49Q<#<#FFr#   c                 X    |                                  o| j        d         d         dk    S )Nr   r   PCA56r   rP   s    r   	_is_PCA56zLinuxCPUInfo._is_PCA56   s%    }}G49Q<#<#GGr#   c                 0    | j         d         d         dk    S )Nr   r|   GenuineIntelr~   rP   s    r   	_is_IntelzLinuxCPUInfo._is_Intel   r   r#   c                 0    | j         d         d         dk    S )Nr   r   i486r~   rP   s    r   _is_i486zLinuxCPUInfo._is_i486   s    y|E"F**r#   c                 X    |                                  o| j        d         d         dk    S )Nr   
cpu family5is_Intelr   rP   s    r   _is_i586zLinuxCPUInfo._is_i586   %    }}D49Q<#=#DDr#   c                 X    |                                  o| j        d         d         dk    S )Nr   r   6r   rP   s    r   _is_i686zLinuxCPUInfo._is_i686   r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz
.*?Celeronr   r   r   rP   s    r   _is_CeleronzLinuxCPUInfo._is_Celeron   0    x	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz
.*?Pentiumr   r   r   rP   s    r   _is_PentiumzLinuxCPUInfo._is_Pentium   r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Pentium.*?II\br   r   r   rP   s    r   _is_PentiumIIzLinuxCPUInfo._is_PentiumII   s1    x,	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?PentiumPro\br   r   r   rP   s    r   _is_PentiumProzLinuxCPUInfo._is_PentiumPro   s1    x*	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Pentium.*?MMX\br   r   r   rP   s    r   _is_PentiumMMXzLinuxCPUInfo._is_PentiumMMX   1    x-	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Pentium.*?III\br   r   r   rP   s    r   _is_PentiumIIIzLinuxCPUInfo._is_PentiumIII   r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Pentium.*?(IV|4)\br   r   r   rP   s    r   _is_PentiumIVzLinuxCPUInfo._is_PentiumIV   s1    x0	!\24 4;?@ 	@r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Pentium.*?M\br   r   r   rP   s    r   _is_PentiumMzLinuxCPUInfo._is_PentiumM   s1    x+	!\24 4;?@ 	@r#   c                 R    |                                  o|                                 S r:   )is_PentiumIVhas_sse3rP   s    r   _is_PrescottzLinuxCPUInfo._is_Prescott   s!      ""6t}}6r#   c                 (   |                                  o~| j        d         d         dk    p| j        d         d         dk    oP|                                 o|                                  o't	          j        d| j        d         d                   d uS )Nr   r   r   r   z	.*?\blm\bflags)r   r   r   	has_ssse3rU   r   rP   s    r   
_is_NoconazLinuxCPUInfo._is_Nocona   s     NYq\,/36 ;	!\2d:N ]]__=T^^-=-=)=N H\49Q<+@AAM		Or#   c                     |                                  o;|                                 o't          j        d| j        d         d                   d uS )Nz.*?Core\(TM\)2\br   r   )is_64bitr   rU   r   r   rP   s    r   	_is_Core2zLinuxCPUInfo._is_Core2   sR     ADMMOO A,1l35 5<@A	Br#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?Itanium\br   r   r   rP   s    r   _is_ItaniumzLinuxCPUInfo._is_Itanium   s.    x	!X.0 07;< 	<r#   c                 h    t          j        d| j        d         d         t           j                  d uS )Nz	.*?XEON\br   r   )rU   r   r   
IGNORECASErP   s    r   _is_XEONzLinuxCPUInfo._is_XEON   s6    x	!\2BMC CJNO 	Or#   c                 2    t          | j                  dk    S rO   r2   r   rP   s    r   _is_singleCPUzLinuxCPUInfo._is_singleCPU      49~~""r#   c                 *    t          | j                  S r:   r   rP   s    r   rQ   zLinuxCPUInfo._getNCPUs      49~~r#   c                 0    | j         d         d         dk    S )Nr   fdiv_bugyesr~   rP   s    r   _has_fdiv_bugzLinuxCPUInfo._has_fdiv_bug      y|J'..r#   c                 0    | j         d         d         dk    S )Nr   f00f_bugr   r~   rP   s    r   _has_f00f_bugzLinuxCPUInfo._has_f00f_bug  r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz
.*?\bmmx\br   r   r   rP   s    r   _has_mmxzLinuxCPUInfo._has_mmx  $    xty|G'<==TIIr#   c                 R    t          j        d| j        d         d                   d uS )Nz
.*?\bsse\br   r   r   rP   s    r   _has_ssezLinuxCPUInfo._has_sse  r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?\bsse2\br   r   r   rP   s    r   	_has_sse2zLinuxCPUInfo._has_sse2  s$    x	!W(=>>dJJr#   c                 R    t          j        d| j        d         d                   d uS )Nz
.*?\bpni\br   r   r   rP   s    r   	_has_sse3zLinuxCPUInfo._has_sse3  r   r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?\bssse3\br   r   r   rP   s    r   
_has_ssse3zLinuxCPUInfo._has_ssse3  $    x1g)>??tKKr#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?\b3dnow\br   r   r   rP   s    r   
_has_3dnowzLinuxCPUInfo._has_3dnow   r  r#   c                 R    t          j        d| j        d         d                   d uS )Nz.*?\b3dnowext\br   r   r   rP   s    r   _has_3dnowextzLinuxCPUInfo._has_3dnowext#  s%    x*DIaL,ABB$NNr#   )4re   rf   rg   r   rw   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _is_i386r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _is_Xeonr   rQ   r   r   r   r   r   r   r   r  r  r*   r#   r   rj   rj   c   s7       D# # #. 9 9 9? ? ?? ? ?N N NN N N@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @, , ,F F FF F FG G GH H H H9 9 9+ + +E E EE E E@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @7 7 7O O OB B B
< < <O O O H# # #  / / // / /J J JJ J JK K KJ J JL L LL L LO O O O Or#   rj   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(dS )'IRIXCPUInfoNc                 T    | j         d S t          ddd          }|| j        _         d S )Nsysconf )r   r   )r3   r   )r   r6   rs   r<   r   s     r   rw   zIRIXCPUInfo.__init__)  s=    9 F%iS8>@ @ @"r#   c                     d S r:   r*   rP   s    r   ry   zIRIXCPUInfo._not_impl0  rz   r#   c                 >    | j                             d          dk    S )NNUM_PROCESSORS1)r   getrP   s    r   r   zIRIXCPUInfo._is_singleCPU2  s    y}}-..#55r#   c                 R    t          | j                            dd                    S )Nr  r   intr   r  rP   s    r   rQ   zIRIXCPUInfo._getNCPUs5  s!    49==!1155666r#   c                     | j                             d                                          d                                         d|z  k    S )N
PROCESSORSr   zr%s)r   r  r1   lowerr<   ns     r   	__cputypezIRIXCPUInfo.__cputype8  s<    y}}\**002215;;==!LLr#   c                 ,    |                      d          S )Ni  _IRIXCPUInfo__cputyperP   s    r   	_is_r2000zIRIXCPUInfo._is_r2000:      t 4 44r#   c                 ,    |                      d          S )Ni  r  rP   s    r   	_is_r3000zIRIXCPUInfo._is_r3000;  r   r#   c                 ,    |                      d          S )Ni<  r  rP   s    r   	_is_r3900zIRIXCPUInfo._is_r3900<  r   r#   c                 ,    |                      d          S )Ni  r  rP   s    r   	_is_r4000zIRIXCPUInfo._is_r4000=  r   r#   c                 ,    |                      d          S )Ni  r  rP   s    r   	_is_r4100zIRIXCPUInfo._is_r4100>  r   r#   c                 ,    |                      d          S )Ni  r  rP   s    r   	_is_r4300zIRIXCPUInfo._is_r4300?  r   r#   c                 ,    |                      d          S )Ni0  r  rP   s    r   	_is_r4400zIRIXCPUInfo._is_r4400@  r   r#   c                 ,    |                      d          S )Ni  r  rP   s    r   	_is_r4600zIRIXCPUInfo._is_r4600A  r   r#   c                 ,    |                      d          S )Ni*  r  rP   s    r   	_is_r4650zIRIXCPUInfo._is_r4650B  r   r#   c                 ,    |                      d          S )Ni  r  rP   s    r   	_is_r5000zIRIXCPUInfo._is_r5000C  r   r#   c                 ,    |                      d          S )Nip  r  rP   s    r   	_is_r6000zIRIXCPUInfo._is_r6000D  r   r#   c                 ,    |                      d          S )Ni@  r  rP   s    r   	_is_r8000zIRIXCPUInfo._is_r8000E  r   r#   c                 ,    |                      d          S )Ni'  r  rP   s    r   
_is_r10000zIRIXCPUInfo._is_r10000F      !6!66r#   c                 ,    |                      d          S )Ni.  r  rP   s    r   
_is_r12000zIRIXCPUInfo._is_r12000G  r9  r#   c                 ,    |                      d          S )Norionr  rP   s    r   
_is_rorionzIRIXCPUInfo._is_rorionH  s    !8!88r#   c                 X    | j                             d          S # t          $ r Y d S w xY w)NMACHINE)r   r  r;   rP   s    r   get_ipzIRIXCPUInfo.get_ipJ  s/    IMM),,,$$$s    
))c                 h    | j                             d                                          d|z  k    S )Nr@  zip%s)r   r  r  r  s     r   	__machinezIRIXCPUInfo.__machineM  s+    y}}Y''--//6Q<??r#   c                 ,    |                      d          S )N   _IRIXCPUInfo__machinerP   s    r   _is_IP19zIRIXCPUInfo._is_IP19O      t~~b111r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP20zIRIXCPUInfo._is_IP20P  rI  r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP21zIRIXCPUInfo._is_IP21Q  rI  r#   c                 ,    |                      d          S N   rF  rP   s    r   _is_IP22zIRIXCPUInfo._is_IP22R  rI  r#   c                 T    |                      d          o|                                 S rQ  )rG  r&  rP   s    r   _is_IP22_4kzIRIXCPUInfo._is_IP22_4kS  "    $.."4"4"I9I9IIr#   c                 T    |                      d          o|                                 S rQ  rG  r2  rP   s    r   _is_IP22_5kzIRIXCPUInfo._is_IP22_5kT  s"    $.."4"4"J$..:J:JJr#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP24zIRIXCPUInfo._is_IP24U  rI  r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP25zIRIXCPUInfo._is_IP25V  rI  r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP26zIRIXCPUInfo._is_IP26W  rI  r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP27zIRIXCPUInfo._is_IP27X  rI  r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP28zIRIXCPUInfo._is_IP28Y  rI  r#   c                 ,    |                      d          S )N   rF  rP   s    r   _is_IP30zIRIXCPUInfo._is_IP30Z  rI  r#   c                 ,    |                      d          S N    rF  rP   s    r   _is_IP32zIRIXCPUInfo._is_IP32[  rI  r#   c                 T    |                      d          o|                                 S rm  rX  rP   s    r   _is_IP32_5kzIRIXCPUInfo._is_IP32_5k\  rV  r#   c                 T    |                      d          o|                                 S rm  )rG  r8  rP   s    r   _is_IP32_10kzIRIXCPUInfo._is_IP32_10k]  s"    4>>"#5#5#K$//:K:KKr#   ))re   rf   rg   r   rw   ry   r   rQ   r  r  r"  r$  r&  r(  r*  r,  r.  r0  r2  r4  r6  r8  r;  r>  rA  rG  rH  rL  rO  rS  rU  rY  r\  r_  rb  re  rh  rk  ro  rq  rs  r*   r#   r   r	  r	  &  s       D# # # 6 6 67 7 7M M M444444444444444444444444444444444444666666888  @ @ @111111111111IIIJJJ111111111111111111111IIIKKKKKr#   r	  c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )DarwinCPUInfoNc                 z    | j         d S t          dd          }t          dd          |d<   || j        _         d S )Narchmachine)rw  rx  z	sysctl hw=r3   	sysctl_hw)r   r"   r6   rs   r  s     r   rw   zDarwinCPUInfo.__init__c  sO    9 F$-/ / /2;CHHH["r#   c                     d S r:   r*   rP   s    r   ry   zDarwinCPUInfo._not_implk  rz   r#   c                 ^    t          | j        d                             dd                    S )Nr{  zhw.ncpur   r  rP   s    r   rQ   zDarwinCPUInfo._getNCPUsm  s'    49[)--i;;<<<r#   c                 0    | j         d         d         dk    S )Nr{  z
hw.machinezPower Macintoshr~   rP   s    r   _is_Power_Macintoshz!DarwinCPUInfo._is_Power_Macintoshp  s    y%l35FFFr#   c                 $    | j         d         dk    S )Nrw  i386r~   rP   s    r   r  zDarwinCPUInfo._is_i386s      y &((r#   c                 $    | j         d         dk    S )Nrw  ppcr~   rP   s    r   _is_ppczDarwinCPUInfo._is_ppcu  s    y %''r#   c                 *    | j         d         d|z  k    S )Nrx  zppc%sr~   r  s     r   rC  zDarwinCPUInfo.__machinex  s    y#wqy00r#   c                 ,    |                      d          S )NiY  _DarwinCPUInfo__machinerP   s    r   
_is_ppc601zDarwinCPUInfo._is_ppc601z      !4!44r#   c                 ,    |                      d          S )NiZ  r  rP   s    r   
_is_ppc602zDarwinCPUInfo._is_ppc602{  r  r#   c                 ,    |                      d          S )Ni[  r  rP   s    r   
_is_ppc603zDarwinCPUInfo._is_ppc603|  r  r#   c                 ,    |                      d          S )N603er  rP   s    r   _is_ppc603ezDarwinCPUInfo._is_ppc603e}      $.."8"88r#   c                 ,    |                      d          S )Ni\  r  rP   s    r   
_is_ppc604zDarwinCPUInfo._is_ppc604~  r  r#   c                 ,    |                      d          S )N604er  rP   s    r   _is_ppc604ezDarwinCPUInfo._is_ppc604e  r  r#   c                 ,    |                      d          S )Nil  r  rP   s    r   
_is_ppc620zDarwinCPUInfo._is_ppc620  r  r#   c                 ,    |                      d          S )Niv  r  rP   s    r   
_is_ppc630zDarwinCPUInfo._is_ppc630  r  r#   c                 ,    |                      d          S )Ni  r  rP   s    r   
_is_ppc740zDarwinCPUInfo._is_ppc740  r  r#   c                 ,    |                      d          S )Ni  r  rP   s    r   _is_ppc7400zDarwinCPUInfo._is_ppc7400      $.."6"66r#   c                 ,    |                      d          S )Ni  r  rP   s    r   _is_ppc7450zDarwinCPUInfo._is_ppc7450  r  r#   c                 ,    |                      d          S )Ni  r  rP   s    r   
_is_ppc750zDarwinCPUInfo._is_ppc750  r  r#   c                 ,    |                      d          S )Ni  r  rP   s    r   
_is_ppc403zDarwinCPUInfo._is_ppc403  r  r#   c                 ,    |                      d          S )Ni  r  rP   s    r   
_is_ppc505zDarwinCPUInfo._is_ppc505  r  r#   c                 ,    |                      d          S )Ni!  r  rP   s    r   
_is_ppc801zDarwinCPUInfo._is_ppc801  r  r#   c                 ,    |                      d          S )Ni5  r  rP   s    r   
_is_ppc821zDarwinCPUInfo._is_ppc821  r  r#   c                 ,    |                      d          S )Ni7  r  rP   s    r   
_is_ppc823zDarwinCPUInfo._is_ppc823  r  r#   c                 ,    |                      d          S )Ni\  r  rP   s    r   
_is_ppc860zDarwinCPUInfo._is_ppc860  r  r#   )re   rf   rg   r   rw   ry   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   ru  ru  `  s       D# # # = = =G G G) ) )( ( (1 1 144444444488844488844444444466666644444444444444444444444r#   ru  c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )SunOSCPUInfoNc                    | j         d S t          ddddd          }t          dd	          |d
<   t          d          D ]3}t	          j        d|          }|r|                    d          |d<    n4|| j        _         d S )Nrw  machuname_iz
isainfo -bz
isainfo -n)rw  r  r  	isainfo_b	isainfo_nzuname -Xry  rz  uname_Xzpsrinfo -v 0z+\s*The (?P<p>[\w\d]+) processor operates atp	processor)r   r"   r6   r'   rU   r   rX   rs   )r<   r   r&   ms       r   rw   zSunOSCPUInfo.__init__  s    9 F!'$-&2&2	   1EEEY#N33 	 	DGNNA $%GGCLL[! #r#   c                     d S r:   r*   rP   s    r   ry   zSunOSCPUInfo._not_impl  rz   r#   c                 $    | j         d         dk    S )Nr  r  r~   rP   s    r   r  zSunOSCPUInfo._is_i386  s    y%v--r#   c                 $    | j         d         dk    S )Nr  sparcr~   rP   s    r   	_is_sparczSunOSCPUInfo._is_sparc  s    y%w..r#   c                 $    | j         d         dk    S )Nr  sparcv9r~   rP   s    r   _is_sparcv9zSunOSCPUInfo._is_sparcv9      y%y00r#   c                 ^    t          | j        d                             dd                    S )Nr  NumCPUr   r  rP   s    r   rQ   zSunOSCPUInfo._getNCPUs  s'    49Y'++Ha88999r#   c                 $    | j         d         dk    S )Nrw  sun4r~   rP   s    r   _is_sun4zSunOSCPUInfo._is_sun4  r  r#   c                 F    t          j        d| j        d                   d uS )NSUNWr  r   rP   s    r   _is_SUNWzSunOSCPUInfo._is_SUNW  s     x9!566dBBr#   c                 F    t          j        d| j        d                   d uS )Nz.*SPARCstation-5r  r   rP   s    r   _is_sparcstation5zSunOSCPUInfo._is_sparcstation5  s!    x+TYy-ABB$NNr#   c                 F    t          j        d| j        d                   d uS )Nz	.*Ultra-1r  r   rP   s    r   
_is_ultra1zSunOSCPUInfo._is_ultra1       xdi	&:;;4GGr#   c                 F    t          j        d| j        d                   d uS )Nz.*Ultra-250r  r   rP   s    r   _is_ultra250zSunOSCPUInfo._is_ultra250  s     x	)(<==TIIr#   c                 F    t          j        d| j        d                   d uS )Nz	.*Ultra-2r  r   rP   s    r   
_is_ultra2zSunOSCPUInfo._is_ultra2  r  r#   c                 F    t          j        d| j        d                   d uS )Nz
.*Ultra-30r  r   rP   s    r   _is_ultra30zSunOSCPUInfo._is_ultra30       xty';<<DHHr#   c                 F    t          j        d| j        d                   d uS )Nz	.*Ultra-4r  r   rP   s    r   
_is_ultra4zSunOSCPUInfo._is_ultra4  r  r#   c                 F    t          j        d| j        d                   d uS )Nz.*Ultra-5_10r  r   rP   s    r   _is_ultra5_10zSunOSCPUInfo._is_ultra5_10  s     x9)=>>dJJr#   c                 F    t          j        d| j        d                   d uS )Nz	.*Ultra-5r  r   rP   s    r   
_is_ultra5zSunOSCPUInfo._is_ultra5  r  r#   c                 F    t          j        d| j        d                   d uS )Nz
.*Ultra-60r  r   rP   s    r   _is_ultra60zSunOSCPUInfo._is_ultra60  r  r#   c                 F    t          j        d| j        d                   d uS )Nz
.*Ultra-80r  r   rP   s    r   _is_ultra80zSunOSCPUInfo._is_ultra80  r  r#   c                 F    t          j        d| j        d                   d uS )Nz.*Ultra-Enterpriser  r   rP   s    r   _is_ultraenterpricez SunOSCPUInfo._is_ultraenterprice  s!    x-ty/CDDDPPr#   c                 F    t          j        d| j        d                   d uS )Nz.*Ultra-Enterprise-10000r  r   rP   s    r   _is_ultraenterprice10kz#SunOSCPUInfo._is_ultraenterprice10k  s"    x3TYy5IJJRVVVr#   c                 F    t          j        d| j        d                   d uS )Nz
.*Sun-Firer  r   rP   s    r   _is_sunfirezSunOSCPUInfo._is_sunfire  r  r#   c                 F    t          j        d| j        d                   d uS )Nz.*Ultrar  r   rP   s    r   	_is_ultrazSunOSCPUInfo._is_ultra  s     x
DIi$899EEr#   c                 $    | j         d         dk    S )Nr  sparcv7r~   rP   s    r   _is_cpusparcv7zSunOSCPUInfo._is_cpusparcv7  r  r#   c                 $    | j         d         dk    S )Nr  sparcv8r~   rP   s    r   _is_cpusparcv8zSunOSCPUInfo._is_cpusparcv8  r  r#   c                 $    | j         d         dk    S )Nr  r  r~   rP   s    r   _is_cpusparcv9zSunOSCPUInfo._is_cpusparcv9  r  r#   )re   rf   rg   r   rw   ry   r  r  r  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    s       D# # #" . . ./ / /1 1 1: : :) ) )C C CO O OH H HJ J JH H HI I IH H HK K KH H HI I II I IQ Q QW W WI I IF F F1 1 11 1 11 1 1 1 1r#   r  c                       e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#dS )"Win32CPUInfoNz,HARDWARE\DESCRIPTION\System\CentralProcessorc                    | j         d S g }	 dd l}t          j        dt          j                  }|                    |j        | j                  }d}	 	 |                    ||          }|dz  }|	                    d|i           |                    ||          }d}	 	 |
                    ||          \  }	}
}|dz   }|
|d         |	<   |	dk    r|                    |
          }|rt          |                    d                    |d         d	<   t          |                    d
                    |d         d<   t          |                    d                    |d         d<   n# |j        $ r Y nw xY wn# |j        $ r Y nw xY w:n'# t          $ r}t!          |d           Y d }~nd }~ww xY w|| j        _         d S )Nr   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)Tr   	Processorro   
IdentifierFMLFamilyMDLModelSTPSteppingz
(ignoring))r   winregrU   rV   r   OpenKeyHKEY_LOCAL_MACHINEpkeyEnumKeyrq   	EnumValuerW   r  rX   errorr;   printrs   )r<   r   r  prgxchndpnumprocphndpidxrL   rv   vtpesrchr   s                 r   rw   zWin32CPUInfo.__init__  s/   9 F!	#MMM: <=?]L LD 949EEDDPPd33D !GDKKT 2333d33DDPP.4.>.>tT.J.J-D% "&aD+0DHTN#\11%)[[%7%7#' !P7:4::e;L;L7M7MDHX$669$**U:K:K6L6LDHW$59<TZZ=N=N9O9ODHZ$8  &| " " "!E"P " |   EP (  	# 	# 	#!\""""""""	#"sa   AF E; *5F  E) :B/F )
E63F 5E66F ;
FF FF 
F2F--F2c                     d S r:   r*   rP   s    r   ry   zWin32CPUInfo._not_impl  rz   r#   c                 0    | j         d         d         dk    S )Nr   VendorIdentifierr}   r~   rP   s    r   r   zWin32CPUInfo._is_AMD      y|./??r#   c                 X    |                                  o| j        d         d         dk    S Nr   r     r   rP   s    r   	_is_Am486zWin32CPUInfo._is_Am486  %    {{}}:1h!7!::r#   c                 X    |                                  o| j        d         d         dk    S r  r   rP   s    r   
_is_Am5x86zWin32CPUInfo._is_Am5x86  r  r#   c                     |                                  o+| j        d         d         dk    o| j        d         d         dv S )Nr   r     r  )r   r   r0      r   rP   s    r   	_is_AMDK5zWin32CPUInfo._is_AMDK5  sA    {{}} 91h!7!: 99Q<(L8	9r#   c                     |                                  o+| j        d         d         dk    o| j        d         d         dv S )Nr   r  r  r  )      r   rP   s    r   	_is_AMDK6zWin32CPUInfo._is_AMDK6  sA    {{}} 31h!7!: 39Q<(F2	3r#   c                     |                                  o-| j        d         d         dk    o| j        d         d         dk    S )Nr   r  r  r     r   rP   s    r   _is_AMDK6_2zWin32CPUInfo._is_AMDK6_2  A    {{}} ,1h!7!: ,9Q<(!+	,r#   c                     |                                  o-| j        d         d         dk    o| j        d         d         dk    S )Nr   r  r  r  	   r   rP   s    r   _is_AMDK6_3zWin32CPUInfo._is_AMDK6_3!  r%  r#   c                 X    |                                  o| j        d         d         dk    S Nr   r  r  r   rP   s    r   	_is_AMDK7zWin32CPUInfo._is_AMDK7%  s%    {{}}<1h!71!<<r#   c                 X    |                                  o| j        d         d         dk    S Nr   r     r   rP   s    r   r   zWin32CPUInfo._is_AMD64,  s%    {{}}=1h!72!==r#   c                 0    | j         d         d         dk    S )Nr   r  r   r~   rP   s    r   r   zWin32CPUInfo._is_Intel1  r  r#   c                 0    | j         d         d         dk    S )Nr   r  r  r~   rP   s    r   r  zWin32CPUInfo._is_i3864      y|H%q((r#   c                 0    | j         d         d         dk    S r  r~   rP   s    r   r   zWin32CPUInfo._is_i4867  r1  r#   c                 X    |                                  o| j        d         d         dk    S Nr   r  r  r   rP   s    r   r   zWin32CPUInfo._is_i586:  %    }}<49Q<#91#<<r#   c                 X    |                                  o| j        d         d         dk    S r*  r   rP   s    r   r   zWin32CPUInfo._is_i686=  r5  r#   c                 X    |                                  o| j        d         d         dk    S r4  r   rP   s    r   r   zWin32CPUInfo._is_Pentium@  r5  r#   c                     |                                  o-| j        d         d         dk    o| j        d         d         dk    S )Nr   r  r  r  r  r   rP   s    r   r   zWin32CPUInfo._is_PentiumMMXC  A    }} ,49Q<#91#< ,9Q<(!+	,r#   c                     |                                  o-| j        d         d         dk    o| j        d         d         dk    S )Nr   r  r  r  r   r   rP   s    r   r   zWin32CPUInfo._is_PentiumProG  r9  r#   c                     |                                  o+| j        d         d         dk    o| j        d         d         dv S )Nr   r  r  r  )r  r  r  r   rP   s    r   r   zWin32CPUInfo._is_PentiumIIK  sA    }} 649Q<#91#< 69Q<(I5	6r#   c                     |                                  o+| j        d         d         dk    o| j        d         d         dv S )Nr   r  r  r  r   r#  r'  
      r   rP   s    r   r   zWin32CPUInfo._is_PentiumIIIO  sB    }} >49Q<#91#< >9Q<(,==	>r#   c                 X    |                                  o| j        d         d         dk    S r-  r   rP   s    r   r   zWin32CPUInfo._is_PentiumIVS  s%    }}=49Q<#92#==r#   c                     |                                  o+| j        d         d         dk    o| j        d         d         dv S )Nr   r  r  r  )r'        r   rP   s    r   r   zWin32CPUInfo._is_PentiumMV  sA    }} 849Q<#9Q#> 89Q<(K7	8r#   c                     |                                  o+| j        d         d         dk    o| j        d         d         dv S )Nr   r  r  r  )r.        r   rP   s    r   r   zWin32CPUInfo._is_Core2Z  sA    }} 949Q<#9Q#> 99Q<(L8	9r#   c                 2    t          | j                  dk    S rO   r   rP   s    r   r   zWin32CPUInfo._is_singleCPU`  r   r#   c                 *    t          | j                  S r:   r   rP   s    r   rQ   zWin32CPUInfo._getNCPUsc  r   r#   c                    |                                  rC| j        d         d         dk    r| j        d         d         dk    p| j        d         d         dv S |                                 r| j        d         d         dv S dS )	Nr   r  r  r  r  r  r.  r  r  r.  Fr   r   r   rP   s    r   r   zWin32CPUInfo._has_mmxf  s    ==?? 	IaL*A-J$)A,w2G2J :y|H-8:[[]] 	9Q<)Z775r#   c                 b   |                                  rC| j        d         d         dk    r| j        d         d         dv p| j        d         d         dk    S |                                 rC| j        d         d         dk    r| j        d         d         dv p| j        d         d         dk    S dS )	Nr   r  r  r  r=  r.  )r  r   r#  r>  FrL  rP   s    r   r   zWin32CPUInfo._has_sseo  s    ==?? 		Yq\(+Q. @Yq\'*.??3	!X.24 [[]] 	Yq\(+Q. <Yq\'*m;3	!X.24 5r#   c                     |                                  r<|                                 p'|                                 p|                                 S |                                 r|                                 S dS )NF)r   is_Pentium4is_PentiumMis_Core2r   is_AMD64rP   s    r   r   zWin32CPUInfo._has_sse2{  sl    ==?? 	##%% &)9)9);); &mmoo&[[]] 	==??"5r#   c                 T    |                                  o| j        d         d         dv S )Nr   r  rK  r   rP   s    r   r  zWin32CPUInfo._has_3dnow  s%    {{}}E1h!7:!EEr#   c                 T    |                                  o| j        d         d         dv S )Nr   r  rJ  r   rP   s    r   r  zWin32CPUInfo._has_3dnowext  s%    {{}}B1h!77!BBr#   )$re   rf   rg   r   r  rw   ry   r   r  r  r  r!  r$  r(  r+  r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   rQ   r   r   r   r  r  r*   r#   r   r  r    s       D:D
&# &# &#P @ @ @; ; ;; ; ;9 9 93 3 3, , ,, , ,= = => > >
@ @ @) ) )) ) )= = == = == = =, , ,, , ,6 6 6> > >> > >8 8 89 9 9# # #    
 
 
  F F FC C C C Cr#   r  linuxirixdarwinsunoswin32cygwin)r   r   )rh   __all__r   rS   rU   sysrI   r   
subprocessr   r   r"   r'   r6   r8   rj   r	  ru  r  r  rE   cpuinfor   r*   r#   r   <module>r_     s    ' 				  				 



   & & & & & &          8<&'   !* !* !* !* !* !* !* !*FAO AO AO AO AO; AO AO AOF7L 7L 7L 7L 7L+ 7L 7L 7Lt+5 +5 +5 +5 +5K +5 +5 +5\H1 H1 H1 H1 H1; H1 H1 H1TpC pC pC pC pC; pC pC pCd <7## GG\V$$ GG\XGG\W%% GG\W%% GG\X&& GG Ggiir#   