a
    hÝEboX  ã                   @   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   st   zt | ƒ\}}W n: tyJ } z"tjt|ƒt|d� W Y d }~dS d }~0 0 t |¡rlt |¡|v rld|fS d|fS )N©Ú
stacklevel)FÚ TF)	r   ÚOSErrorÚwarningsÚwarnÚstrÚUserWarningÚosÚ	WIFEXITEDÚWEXITSTATUS)ÚcmdÚsuccessful_statusr   ÚstatusÚoutputÚe© r   úW/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/distutils/cpuinfo.pyÚ	getoutput   s    r   c                 K   s<   i }|D ].}t || | |d d�\}}|r| ¡ ||< q|S ©Nr   ©r   r   )r   Ústrip)r   r   ÚkwÚinfoÚkeyÚokr   r   r   r   Úcommand_info%   s    
ÿ
r    c                 c   s:   t | ||d d�\}}|sd S | ¡ D ]}| ¡ V  q&d S r   )r   Ú
splitlinesr   )r   r   r   r   r   Úliner   r   r   Úcommand_by_line.   s    ÿ
r#   c                 C   sR   i }t | ||d d�D ]6}dd„ | |d¡D ƒ}t|ƒdkr|d ||d < q|S )Nr   r   c                 S   s   g | ]}|  ¡ ‘qS r   ©r   ©Ú.0Úsr   r   r   Ú
<listcomp>;   ó    z*key_value_from_command.<locals>.<listcomp>é   r   )r#   ÚsplitÚlen)r   Úsepr   r   Údr"   Úlr   r   r   Úkey_value_from_command6   s    ÿ
r0   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚCPUInfoBasezkHolds CPU information and provides methods for requiring
    the availability of various CPU features.
    c                 C   s    z|ƒ W S  t y   Y n0 d S ©N)Ú	Exception)ÚselfÚfuncr   r   r   Ú	_try_callE   s    zCPUInfoBase._try_callc                 C   sX   |  d¡sLt| d| ƒrDt| d| ƒ}t|tjƒrL| j|fdd„S ndd„ S t|ƒ‚d S )NÚ_c                 S   s   | |ƒS r2   r   )r5   Úattrr   r   r   Ú<lambda>P   r)   z)CPUInfoBase.__getattr__.<locals>.<lambda>c                   S   s   d S r2   r   r   r   r   r   r9   R   r)   )Ú
startswithÚhasattrÚgetattrÚ
isinstanceÚtypesÚ
MethodTyper6   ÚAttributeError)r4   Únamer8   r   r   r   Ú__getattr__K   s    
zCPUInfoBase.__getattr__c                 C   s   dS ©Nr   r   ©r4   r   r   r   Ú	_getNCPUsU   s    zCPUInfoBase._getNCPUsc                 C   s&   t  ¡ d }t d¡ |¡ d¡}|S )Nr   z(\d+)bitr   )ÚplatformÚarchitectureÚreÚcompileÚsearchÚgroup)r4   ZabitsÚnbitsr   r   r   Z__get_nbitsX   s    zCPUInfoBase.__get_nbitsc                 C   s   |   ¡ dkS )NZ32©Ú_CPUInfoBase__get_nbitsrD   r   r   r   Ú	_is_32bit]   s    zCPUInfoBase._is_32bitc                 C   s   |   ¡ dkS )NZ64rM   rD   r   r   r   Ú	_is_64bit`   s    zCPUInfoBase._is_64bitN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   rB   rE   rN   rO   rP   r   r   r   r   r1   @   s   
r1   c                   @   sˆ  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZeZd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Z d:d;„ Z!d<d=„ Z"d>d?„ Z#d@dA„ Z$dBdC„ Z%dDdE„ Z&dFdG„ Z'e'Z(dHdI„ Z)dJdK„ Z*dLdM„ Z+dNdO„ Z,dPdQ„ Z-dRdS„ Z.dTdU„ Z/dVdW„ Z0dXdY„ Z1dZd[„ Z2d\d]„ Z3dS )^ÚLinuxCPUInfoNc           
   
   C   sê   | j d urd S i g}tdƒ\}}|r4| ¡ |d d< ztdƒ}W n8 tyx } z tjt|ƒtdd� W Y d }~nnd }~0 0 |D ]V}dd„ | 	d	d
¡D ƒ}t
|ƒdkr¦q~|\}}	|r¾||d v rÈ| i ¡ |	|d |< q~| ¡  || j_ d S )Nzuname -mr   Zuname_mz/proc/cpuinfor*   r   c                 S   s   g | ]}|  ¡ ‘qS r   r$   r%   r   r   r   r(   t   r)   z)LinuxCPUInfo.__init__.<locals>.<listcomp>ú:r   éÿÿÿÿ)r   r   r   Úopenr	   r
   r   r   r   r+   r,   ÚappendÚcloseÚ	__class__)
r4   r   r   r   Úfor   r"   Ú
name_valuerA   Úvaluer   r   r   Ú__init__g   s(    
*
zLinuxCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   Ú	_not_impl~   r)   zLinuxCPUInfo._not_implc                 C   s   | j d d dkS )Nr   Ú	vendor_idÚAuthenticAMD©r   rD   r   r   r   Ú_is_AMD‚   s    zLinuxCPUInfo._is_AMDc                 C   s   |   ¡ o| jd d dkS )Nr   ÚmodelÚ2©rd   r   rD   r   r   r   Ú_is_AthlonK6_2…   s    zLinuxCPUInfo._is_AthlonK6_2c                 C   s   |   ¡ o| jd d dkS )Nr   re   Ú3rg   rD   r   r   r   Ú_is_AthlonK6_3ˆ   s    zLinuxCPUInfo._is_AthlonK6_3c                 C   s   t  d| jd d ¡d uS )Nz	.*?AMD-K6r   ú
model name©rH   Úmatchr   rD   r   r   r   Ú_is_AthlonK6‹   s    zLinuxCPUInfo._is_AthlonK6c                 C   s   t  d| jd d ¡d uS )Nz	.*?AMD-K7r   rk   rl   rD   r   r   r   Ú_is_AthlonK7Ž   s    zLinuxCPUInfo._is_AthlonK7c                 C   s   t  d| jd d ¡d uS )Nz.*?Athlon\(tm\) MP\br   rk   rl   rD   r   r   r   Ú_is_AthlonMP‘   s
    ÿÿzLinuxCPUInfo._is_AthlonMPc                 C   s   |   ¡ o| jd d dkS )Nr   ÚfamilyÚ15©Úis_AMDr   rD   r   r   r   Ú	_is_AMD64•   s    zLinuxCPUInfo._is_AMD64c                 C   s   t  d| jd d ¡d uS )Nz.*?Athlon\(tm\) 64\br   rk   rl   rD   r   r   r   Ú_is_Athlon64˜   s
    ÿÿzLinuxCPUInfo._is_Athlon64c                 C   s   t  d| jd d ¡d uS )Nz.*?Athlon HX\br   rk   rl   rD   r   r   r   Ú_is_AthlonHXœ   s
    ÿÿzLinuxCPUInfo._is_AthlonHXc                 C   s   t  d| jd d ¡d uS )Nz.*?Opteron\br   rk   rl   rD   r   r   r   Ú_is_Opteron    s
    ÿÿzLinuxCPUInfo._is_Opteronc                 C   s   t  d| jd d ¡d uS )Nz.*?Hammer\br   rk   rl   rD   r   r   r   Ú
_is_Hammer¤   s
    ÿÿzLinuxCPUInfo._is_Hammerc                 C   s   | j d d dkS )Nr   r   ÚAlpharc   rD   r   r   r   Ú	_is_Alphaª   s    zLinuxCPUInfo._is_Alphac                 C   s   |   ¡ o| jd d dkS )Nr   ú	cpu modelZEV4©Zis_Alphar   rD   r   r   r   Ú_is_EV4­   s    zLinuxCPUInfo._is_EV4c                 C   s   |   ¡ o| jd d dkS )Nr   r|   ZEV5r}   rD   r   r   r   Ú_is_EV5°   s    zLinuxCPUInfo._is_EV5c                 C   s   |   ¡ o| jd d dkS )Nr   r|   ZEV56r}   rD   r   r   r   Ú_is_EV56³   s    zLinuxCPUInfo._is_EV56c                 C   s   |   ¡ o| jd d dkS )Nr   r|   ZPCA56r}   rD   r   r   r   Ú	_is_PCA56¶   s    zLinuxCPUInfo._is_PCA56c                 C   s   | j d d dkS )Nr   ra   ÚGenuineIntelrc   rD   r   r   r   Ú	_is_Intel¾   s    zLinuxCPUInfo._is_Intelc                 C   s   | j d d dkS )Nr   r   Zi486rc   rD   r   r   r   Ú_is_i486Á   s    zLinuxCPUInfo._is_i486c                 C   s   |   ¡ o| jd d dkS )Nr   ú
cpu familyÚ5©Úis_Intelr   rD   r   r   r   Ú_is_i586Ä   s    zLinuxCPUInfo._is_i586c                 C   s   |   ¡ o| jd d dkS )Nr   r…   Ú6r‡   rD   r   r   r   Ú_is_i686Ç   s    zLinuxCPUInfo._is_i686c                 C   s   t  d| jd d ¡d uS )Nz
.*?Celeronr   rk   rl   rD   r   r   r   Ú_is_CeleronÊ   s
    ÿÿzLinuxCPUInfo._is_Celeronc                 C   s   t  d| jd d ¡d uS )Nz
.*?Pentiumr   rk   rl   rD   r   r   r   Ú_is_PentiumÎ   s
    ÿÿzLinuxCPUInfo._is_Pentiumc                 C   s   t  d| jd d ¡d uS )Nz.*?Pentium.*?II\br   rk   rl   rD   r   r   r   Ú_is_PentiumIIÒ   s
    ÿÿzLinuxCPUInfo._is_PentiumIIc                 C   s   t  d| jd d ¡d uS )Nz.*?PentiumPro\br   rk   rl   rD   r   r   r   Ú_is_PentiumProÖ   s
    ÿÿzLinuxCPUInfo._is_PentiumProc                 C   s   t  d| jd d ¡d uS )Nz.*?Pentium.*?MMX\br   rk   rl   rD   r   r   r   Ú_is_PentiumMMXÚ   s
    ÿÿzLinuxCPUInfo._is_PentiumMMXc                 C   s   t  d| jd d ¡d uS )Nz.*?Pentium.*?III\br   rk   rl   rD   r   r   r   Ú_is_PentiumIIIÞ   s
    ÿÿzLinuxCPUInfo._is_PentiumIIIc                 C   s   t  d| jd d ¡d uS )Nz.*?Pentium.*?(IV|4)\br   rk   rl   rD   r   r   r   Ú_is_PentiumIVâ   s
    ÿÿzLinuxCPUInfo._is_PentiumIVc                 C   s   t  d| jd d ¡d uS )Nz.*?Pentium.*?M\br   rk   rl   rD   r   r   r   Ú_is_PentiumMæ   s
    ÿÿzLinuxCPUInfo._is_PentiumMc                 C   s   |   ¡ o|  ¡ S r2   )Zis_PentiumIVÚhas_sse3rD   r   r   r   Ú_is_Prescottê   s    zLinuxCPUInfo._is_Prescottc                 C   sX   |   ¡ oV| jd d dks,| jd d dkoV|  ¡ oV|  ¡  oVt d| jd d ¡d uS )Nr   r…   rŠ   rr   z	.*?\blm\bÚflags)rˆ   r   r”   Z	has_ssse3rH   rm   rD   r   r   r   Ú
_is_Noconaí   s    þýüzLinuxCPUInfo._is_Noconac                 C   s*   |   ¡ o(|  ¡ o(t d| jd d ¡d uS )Nz.*?Core\(TM\)2\br   rk   )Zis_64bitrˆ   rH   rm   r   rD   r   r   r   Ú	_is_Core2ô   s    ÿÿÿzLinuxCPUInfo._is_Core2c                 C   s   t  d| jd d ¡d uS )Nz.*?Itanium\br   rq   rl   rD   r   r   r   Ú_is_Itaniumù   s
    ÿÿzLinuxCPUInfo._is_Itaniumc                 C   s   t  d| jd d t j¡d uS )Nz	.*?XEON\br   rk   )rH   rm   r   Ú
IGNORECASErD   r   r   r   Ú_is_XEONý   s
    ÿÿzLinuxCPUInfo._is_XEONc                 C   s   t | jƒdkS rC   ©r,   r   rD   r   r   r   Ú_is_singleCPU  s    zLinuxCPUInfo._is_singleCPUc                 C   s
   t | jƒS r2   rœ   rD   r   r   r   rE     s    zLinuxCPUInfo._getNCPUsc                 C   s   | j d d dkS )Nr   Zfdiv_bugÚyesrc   rD   r   r   r   Ú_has_fdiv_bug  s    zLinuxCPUInfo._has_fdiv_bugc                 C   s   | j d d dkS )Nr   Zf00f_bugrž   rc   rD   r   r   r   Ú_has_f00f_bug  s    zLinuxCPUInfo._has_f00f_bugc                 C   s   t  d| jd d ¡d uS )Nz
.*?\bmmx\br   r–   rl   rD   r   r   r   Ú_has_mmx  s    zLinuxCPUInfo._has_mmxc                 C   s   t  d| jd d ¡d uS )Nz
.*?\bsse\br   r–   rl   rD   r   r   r   Ú_has_sse  s    zLinuxCPUInfo._has_ssec                 C   s   t  d| jd d ¡d uS )Nz.*?\bsse2\br   r–   rl   rD   r   r   r   Ú	_has_sse2  s    zLinuxCPUInfo._has_sse2c                 C   s   t  d| jd d ¡d uS )Nz
.*?\bpni\br   r–   rl   rD   r   r   r   Ú	_has_sse3  s    zLinuxCPUInfo._has_sse3c                 C   s   t  d| jd d ¡d uS )Nz.*?\bssse3\br   r–   rl   rD   r   r   r   Ú
_has_ssse3  s    zLinuxCPUInfo._has_ssse3c                 C   s   t  d| jd d ¡d uS )Nz.*?\b3dnow\br   r–   rl   rD   r   r   r   Ú
_has_3dnow   s    zLinuxCPUInfo._has_3dnowc                 C   s   t  d| jd d ¡d uS )Nz.*?\b3dnowext\br   r–   rl   rD   r   r   r   Ú_has_3dnowext#  s    zLinuxCPUInfo._has_3dnowext)4rQ   rR   rS   r   r_   r`   rd   rh   rj   rn   ro   rp   ru   rv   rw   rx   ry   r{   r~   r   r€   r�   Ú_is_i386rƒ   r„   r‰   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r•   r—   r˜   r™   r›   Z_is_Xeonr�   rE   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r   r   r   r   rU   c   sb   rU   c                   @   s8  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFdG„ Z&dHdI„ Z'dJdK„ Z(dS )LÚIRIXCPUInfoNc                 C   s(   | j d urd S tdddd�}|| j_ d S )NÚsysconfú )r   r   )r-   r   )r   r0   r[   ©r4   r   r   r   r   r_   )  s    
ÿzIRIXCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`   0  r)   zIRIXCPUInfo._not_implc                 C   s   | j  d¡dkS )NÚNUM_PROCESSORSÚ1)r   ÚgetrD   r   r   r   r�   2  s    zIRIXCPUInfo._is_singleCPUc                 C   s   t | j dd¡ƒS )Nr­   r   ©Úintr   r¯   rD   r   r   r   rE   5  s    zIRIXCPUInfo._getNCPUsc                 C   s    | j  d¡ ¡ d  ¡ d| kS )NZ
PROCESSORSr   zr%s)r   r¯   r+   Úlower©r4   Únr   r   r   Z	__cputype8  s    zIRIXCPUInfo.__cputypec                 C   s
   |   d¡S )NiÐ  ©Ú_IRIXCPUInfo__cputyperD   r   r   r   Ú	_is_r2000:  r)   zIRIXCPUInfo._is_r2000c                 C   s
   |   d¡S )Ni¸  rµ   rD   r   r   r   Ú	_is_r3000;  r)   zIRIXCPUInfo._is_r3000c                 C   s
   |   d¡S )Ni<  rµ   rD   r   r   r   Ú	_is_r3900<  r)   zIRIXCPUInfo._is_r3900c                 C   s
   |   d¡S )Ni   rµ   rD   r   r   r   Ú	_is_r4000=  r)   zIRIXCPUInfo._is_r4000c                 C   s
   |   d¡S )Ni  rµ   rD   r   r   r   Ú	_is_r4100>  r)   zIRIXCPUInfo._is_r4100c                 C   s
   |   d¡S )NiÌ  rµ   rD   r   r   r   Ú	_is_r4300?  r)   zIRIXCPUInfo._is_r4300c                 C   s
   |   d¡S )Ni0  rµ   rD   r   r   r   Ú	_is_r4400@  r)   zIRIXCPUInfo._is_r4400c                 C   s
   |   d¡S )Niø  rµ   rD   r   r   r   Ú	_is_r4600A  r)   zIRIXCPUInfo._is_r4600c                 C   s
   |   d¡S )Ni*  rµ   rD   r   r   r   Ú	_is_r4650B  r)   zIRIXCPUInfo._is_r4650c                 C   s
   |   d¡S )Niˆ  rµ   rD   r   r   r   Ú	_is_r5000C  r)   zIRIXCPUInfo._is_r5000c                 C   s
   |   d¡S )Nip  rµ   rD   r   r   r   Ú	_is_r6000D  r)   zIRIXCPUInfo._is_r6000c                 C   s
   |   d¡S )Ni@  rµ   rD   r   r   r   Ú	_is_r8000E  r)   zIRIXCPUInfo._is_r8000c                 C   s
   |   d¡S )Ni'  rµ   rD   r   r   r   Ú
_is_r10000F  r)   zIRIXCPUInfo._is_r10000c                 C   s
   |   d¡S )Nià.  rµ   rD   r   r   r   Ú
_is_r12000G  r)   zIRIXCPUInfo._is_r12000c                 C   s
   |   d¡S )NZorionrµ   rD   r   r   r   Ú
_is_rorionH  r)   zIRIXCPUInfo._is_rorionc                 C   s&   z| j  d¡W S  ty    Y n0 d S )NÚMACHINE)r   r¯   r3   rD   r   r   r   Úget_ipJ  s    zIRIXCPUInfo.get_ipc                 C   s   | j  d¡ ¡ d| kS )NrÆ   zip%s)r   r¯   r²   r³   r   r   r   Ú	__machineM  s    zIRIXCPUInfo.__machinec                 C   s
   |   d¡S )Né   ©Ú_IRIXCPUInfo__machinerD   r   r   r   Ú_is_IP19O  r)   zIRIXCPUInfo._is_IP19c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP20P  r)   zIRIXCPUInfo._is_IP20c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP21Q  r)   zIRIXCPUInfo._is_IP21c                 C   s
   |   d¡S ©Né   rÊ   rD   r   r   r   Ú_is_IP22R  r)   zIRIXCPUInfo._is_IP22c                 C   s   |   d¡o|  ¡ S rÑ   )rË   rº   rD   r   r   r   Ú_is_IP22_4kS  r)   zIRIXCPUInfo._is_IP22_4kc                 C   s   |   d¡o|  ¡ S rÑ   ©rË   rÀ   rD   r   r   r   Ú_is_IP22_5kT  r)   zIRIXCPUInfo._is_IP22_5kc                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP24U  r)   zIRIXCPUInfo._is_IP24c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP25V  r)   zIRIXCPUInfo._is_IP25c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP26W  r)   zIRIXCPUInfo._is_IP26c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP27X  r)   zIRIXCPUInfo._is_IP27c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP28Y  r)   zIRIXCPUInfo._is_IP28c                 C   s
   |   d¡S )Né   rÊ   rD   r   r   r   Ú_is_IP30Z  r)   zIRIXCPUInfo._is_IP30c                 C   s
   |   d¡S ©Né    rÊ   rD   r   r   r   Ú_is_IP32[  r)   zIRIXCPUInfo._is_IP32c                 C   s   |   d¡o|  ¡ S rã   rÕ   rD   r   r   r   Ú_is_IP32_5k\  r)   zIRIXCPUInfo._is_IP32_5kc                 C   s   |   d¡o|  ¡ S rã   )rË   rÃ   rD   r   r   r   Ú_is_IP32_10k]  r)   zIRIXCPUInfo._is_IP32_10k))rQ   rR   rS   r   r_   r`   r�   rE   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÇ   rË   rÌ   rÎ   rÐ   rÓ   rÔ   rÖ   rØ   rÚ   rÜ   rÞ   rà   râ   rå   ræ   rç   r   r   r   r   r©   &  sL   r©   c                   @   sØ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ ZdS )4ÚDarwinCPUInfoNc                 C   s6   | j d urd S tddd�}tddd�|d< || j_ d S )NÚarchÚmachine)ré   rê   z	sysctl hwú=©r-   Ú	sysctl_hw)r   r    r0   r[   r¬   r   r   r   r_   c  s    
ÿzDarwinCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`   k  r)   zDarwinCPUInfo._not_implc                 C   s   t | jd  dd¡ƒS )Nrí   zhw.ncpur   r°   rD   r   r   r   rE   m  s    zDarwinCPUInfo._getNCPUsc                 C   s   | j d d dkS )Nrí   z
hw.machinezPower Macintoshrc   rD   r   r   r   Ú_is_Power_Macintoshp  s    z!DarwinCPUInfo._is_Power_Macintoshc                 C   s   | j d dkS )Nré   Úi386rc   rD   r   r   r   r¨   s  s    zDarwinCPUInfo._is_i386c                 C   s   | j d dkS )Nré   Úppcrc   rD   r   r   r   Ú_is_ppcu  s    zDarwinCPUInfo._is_ppcc                 C   s   | j d d| kS )Nrê   zppc%src   r³   r   r   r   rÈ   x  s    zDarwinCPUInfo.__machinec                 C   s
   |   d¡S )NiY  ©Ú_DarwinCPUInfo__machinerD   r   r   r   Ú
_is_ppc601z  r)   zDarwinCPUInfo._is_ppc601c                 C   s
   |   d¡S )NiZ  rò   rD   r   r   r   Ú
_is_ppc602{  r)   zDarwinCPUInfo._is_ppc602c                 C   s
   |   d¡S )Ni[  rò   rD   r   r   r   Ú
_is_ppc603|  r)   zDarwinCPUInfo._is_ppc603c                 C   s
   |   d¡S )NZ603erò   rD   r   r   r   Ú_is_ppc603e}  r)   zDarwinCPUInfo._is_ppc603ec                 C   s
   |   d¡S )Ni\  rò   rD   r   r   r   Ú
_is_ppc604~  r)   zDarwinCPUInfo._is_ppc604c                 C   s
   |   d¡S )NZ604erò   rD   r   r   r   Ú_is_ppc604e  r)   zDarwinCPUInfo._is_ppc604ec                 C   s
   |   d¡S )Nil  rò   rD   r   r   r   Ú
_is_ppc620€  r)   zDarwinCPUInfo._is_ppc620c                 C   s
   |   d¡S )Niv  rò   rD   r   r   r   Ú
_is_ppc630�  r)   zDarwinCPUInfo._is_ppc630c                 C   s
   |   d¡S )Niä  rò   rD   r   r   r   Ú
_is_ppc740‚  r)   zDarwinCPUInfo._is_ppc740c                 C   s
   |   d¡S )Niè  rò   rD   r   r   r   Ú_is_ppc7400ƒ  r)   zDarwinCPUInfo._is_ppc7400c                 C   s
   |   d¡S )Ni  rò   rD   r   r   r   Ú_is_ppc7450„  r)   zDarwinCPUInfo._is_ppc7450c                 C   s
   |   d¡S )Niî  rò   rD   r   r   r   Ú
_is_ppc750…  r)   zDarwinCPUInfo._is_ppc750c                 C   s
   |   d¡S )Ni“  rò   rD   r   r   r   Ú
_is_ppc403†  r)   zDarwinCPUInfo._is_ppc403c                 C   s
   |   d¡S )Niù  rò   rD   r   r   r   Ú
_is_ppc505‡  r)   zDarwinCPUInfo._is_ppc505c                 C   s
   |   d¡S )Ni!  rò   rD   r   r   r   Ú
_is_ppc801ˆ  r)   zDarwinCPUInfo._is_ppc801c                 C   s
   |   d¡S )Ni5  rò   rD   r   r   r   Ú
_is_ppc821‰  r)   zDarwinCPUInfo._is_ppc821c                 C   s
   |   d¡S )Ni7  rò   rD   r   r   r   Ú
_is_ppc823Š  r)   zDarwinCPUInfo._is_ppc823c                 C   s
   |   d¡S )Ni\  rò   rD   r   r   r   Ú
_is_ppc860‹  r)   zDarwinCPUInfo._is_ppc860)rQ   rR   rS   r   r_   r`   rE   rî   r¨   rñ   ró   rô   rõ   rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rÿ   r   r  r  r  r  r  r   r   r   r   rè   `  s4   rè   c                   @   sØ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ ZdS )4ÚSunOSCPUInfoNc                 C   sl   | j d urd S tdddddd�}tddd	�|d
< tdƒD ]&}t d|¡}|r8| d¡|d<  q`q8|| j_ d S )Nré   ÚmachÚuname_iz
isainfo -bz
isainfo -n)ré   r  r  Z	isainfo_bÚ	isainfo_nzuname -Xrë   rì   Úuname_Xzpsrinfo -v 0z+\s*The (?P<p>[\w\d]+) processor operates atÚpÚ	processor)r   r    r0   r#   rH   rm   rK   r[   )r4   r   r"   Úmr   r   r   r_   ’  s    
üzSunOSCPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`   £  r)   zSunOSCPUInfo._not_implc                 C   s   | j d dkS )Nr	  rï   rc   rD   r   r   r   r¨   ¥  s    zSunOSCPUInfo._is_i386c                 C   s   | j d dkS )Nr	  Zsparcrc   rD   r   r   r   Ú	_is_sparc§  s    zSunOSCPUInfo._is_sparcc                 C   s   | j d dkS )Nr	  Úsparcv9rc   rD   r   r   r   Ú_is_sparcv9©  s    zSunOSCPUInfo._is_sparcv9c                 C   s   t | jd  dd¡ƒS )Nr
  ZNumCPUr   r°   rD   r   r   r   rE   ¬  s    zSunOSCPUInfo._getNCPUsc                 C   s   | j d dkS )Nré   Zsun4rc   rD   r   r   r   Ú_is_sun4¯  s    zSunOSCPUInfo._is_sun4c                 C   s   t  d| jd ¡d uS )NZSUNWr  rl   rD   r   r   r   Ú_is_SUNW²  s    zSunOSCPUInfo._is_SUNWc                 C   s   t  d| jd ¡d uS )Nz.*SPARCstation-5r  rl   rD   r   r   r   Ú_is_sparcstation5´  s    zSunOSCPUInfo._is_sparcstation5c                 C   s   t  d| jd ¡d uS )Nz	.*Ultra-1r  rl   rD   r   r   r   Ú
_is_ultra1¶  s    zSunOSCPUInfo._is_ultra1c                 C   s   t  d| jd ¡d uS )Nz.*Ultra-250r  rl   rD   r   r   r   Ú_is_ultra250¸  s    zSunOSCPUInfo._is_ultra250c                 C   s   t  d| jd ¡d uS )Nz	.*Ultra-2r  rl   rD   r   r   r   Ú
_is_ultra2º  s    zSunOSCPUInfo._is_ultra2c                 C   s   t  d| jd ¡d uS )Nz
.*Ultra-30r  rl   rD   r   r   r   Ú_is_ultra30¼  s    zSunOSCPUInfo._is_ultra30c                 C   s   t  d| jd ¡d uS )Nz	.*Ultra-4r  rl   rD   r   r   r   Ú
_is_ultra4¾  s    zSunOSCPUInfo._is_ultra4c                 C   s   t  d| jd ¡d uS )Nz.*Ultra-5_10r  rl   rD   r   r   r   Ú_is_ultra5_10À  s    zSunOSCPUInfo._is_ultra5_10c                 C   s   t  d| jd ¡d uS )Nz	.*Ultra-5r  rl   rD   r   r   r   Ú
_is_ultra5Â  s    zSunOSCPUInfo._is_ultra5c                 C   s   t  d| jd ¡d uS )Nz
.*Ultra-60r  rl   rD   r   r   r   Ú_is_ultra60Ä  s    zSunOSCPUInfo._is_ultra60c                 C   s   t  d| jd ¡d uS )Nz
.*Ultra-80r  rl   rD   r   r   r   Ú_is_ultra80Æ  s    zSunOSCPUInfo._is_ultra80c                 C   s   t  d| jd ¡d uS )Nz.*Ultra-Enterpriser  rl   rD   r   r   r   Ú_is_ultraenterpriceÈ  s    z SunOSCPUInfo._is_ultraenterpricec                 C   s   t  d| jd ¡d uS )Nz.*Ultra-Enterprise-10000r  rl   rD   r   r   r   Ú_is_ultraenterprice10kÊ  s    z#SunOSCPUInfo._is_ultraenterprice10kc                 C   s   t  d| jd ¡d uS )Nz
.*Sun-Firer  rl   rD   r   r   r   Ú_is_sunfireÌ  s    zSunOSCPUInfo._is_sunfirec                 C   s   t  d| jd ¡d uS )Nz.*Ultrar  rl   rD   r   r   r   Ú	_is_ultraÎ  s    zSunOSCPUInfo._is_ultrac                 C   s   | j d dkS )Nr  Zsparcv7rc   rD   r   r   r   Ú_is_cpusparcv7Ñ  s    zSunOSCPUInfo._is_cpusparcv7c                 C   s   | j d dkS )Nr  Zsparcv8rc   rD   r   r   r   Ú_is_cpusparcv8Ó  s    zSunOSCPUInfo._is_cpusparcv8c                 C   s   | j d dkS )Nr  r  rc   rD   r   r   r   Ú_is_cpusparcv9Õ  s    zSunOSCPUInfo._is_cpusparcv9)rQ   rR   rS   r   r_   r`   r¨   r  r  rE   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r   r   r   r   r  Ž  s4   r  c                   @   s  e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Z d;d<„ Z!d=d>„ Z"d?d@„ Z#dS )AÚWin32CPUInfoNz,HARDWARE\DESCRIPTION\System\CentralProcessorc              
   C   sr  | j d urd S g }�z dd l}t dtj¡}| |j| j¡}d}z| ||¡}W n |j	yj   Y �q2Y q@0 |d7 }| 
d|i¡ | ||¡}d}z| ||¡\}	}
}W n |j	yÀ   Y q@Y q’0 |d }|
|d |	< |	dkr’| |
¡}|r’t| d¡ƒ|d d< t| d	¡ƒ|d d
< t| d¡ƒ|d d< q’q@W n0 t�yd } zt|dƒ W Y d }~n
d }~0 0 || j_ d S )Nr   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)r   Z	ProcessorrW   Z
IdentifierZFMLÚFamilyZMDLÚModelZSTPZSteppingz
(ignoring))r   ÚwinregrH   rI   rš   ÚOpenKeyÚHKEY_LOCAL_MACHINEÚpkeyÚEnumKeyÚerrorrY   Z	EnumValuerJ   r±   rK   r3   Úprintr[   )r4   r   r'  ZprgxZchndZpnumÚprocZphndZpidxrA   r^   ZvtpeZsrchr   r   r   r   r_   à  sB    
ÿ

 zWin32CPUInfo.__init__c                 C   s   d S r2   r   rD   r   r   r   r`     r)   zWin32CPUInfo._not_implc                 C   s   | j d d dkS )Nr   ÚVendorIdentifierrb   rc   rD   r   r   r   rd     s    zWin32CPUInfo._is_AMDc                 C   s   |   ¡ o| jd d dkS ©Nr   r%  é   rs   rD   r   r   r   Ú	_is_Am486  s    zWin32CPUInfo._is_Am486c                 C   s   |   ¡ o| jd d dkS r0  rs   rD   r   r   r   Ú
_is_Am5x86  s    zWin32CPUInfo._is_Am5x86c                 C   s,   |   ¡ o*| jd d dko*| jd d dv S )Nr   r%  é   r&  )r   r   r*   é   rs   rD   r   r   r   Ú	_is_AMDK5  s    ÿzWin32CPUInfo._is_AMDK5c                 C   s,   |   ¡ o*| jd d dko*| jd d dv S )Nr   r%  r4  r&  )é   é   rs   rD   r   r   r   Ú	_is_AMDK6  s    ÿzWin32CPUInfo._is_AMDK6c                 C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r%  r4  r&  é   rs   rD   r   r   r   Ú_is_AMDK6_2  s    ÿzWin32CPUInfo._is_AMDK6_2c                 C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r%  r4  r&  é	   rs   rD   r   r   r   Ú_is_AMDK6_3!  s    ÿzWin32CPUInfo._is_AMDK6_3c                 C   s   |   ¡ o| jd d dkS ©Nr   r%  r7  rs   rD   r   r   r   Ú	_is_AMDK7%  s    zWin32CPUInfo._is_AMDK7c                 C   s   |   ¡ o| jd d dkS ©Nr   r%  é   rs   rD   r   r   r   ru   ,  s    zWin32CPUInfo._is_AMD64c                 C   s   | j d d dkS )Nr   r/  r‚   rc   rD   r   r   r   rƒ   1  s    zWin32CPUInfo._is_Intelc                 C   s   | j d d dkS )Nr   r%  r5  rc   rD   r   r   r   r¨   4  s    zWin32CPUInfo._is_i386c                 C   s   | j d d dkS r0  rc   rD   r   r   r   r„   7  s    zWin32CPUInfo._is_i486c                 C   s   |   ¡ o| jd d dkS ©Nr   r%  r4  r‡   rD   r   r   r   r‰   :  s    zWin32CPUInfo._is_i586c                 C   s   |   ¡ o| jd d dkS r>  r‡   rD   r   r   r   r‹   =  s    zWin32CPUInfo._is_i686c                 C   s   |   ¡ o| jd d dkS rB  r‡   rD   r   r   r   r�   @  s    zWin32CPUInfo._is_Pentiumc                 C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r%  r4  r&  r1  r‡   rD   r   r   r   r�   C  s    ÿzWin32CPUInfo._is_PentiumMMXc                 C   s,   |   ¡ o*| jd d dko*| jd d dkS )Nr   r%  r7  r&  r   r‡   rD   r   r   r   r�   G  s    ÿzWin32CPUInfo._is_PentiumProc                 C   s,   |   ¡ o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  )r5  r4  r7  r‡   rD   r   r   r   rŽ   K  s    ÿzWin32CPUInfo._is_PentiumIIc                 C   s,   |   ¡ o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  ©r8  r:  r<  é
   é   r‡   rD   r   r   r   r‘   O  s    ÿzWin32CPUInfo._is_PentiumIIIc                 C   s   |   ¡ o| jd d dkS r@  r‡   rD   r   r   r   r’   S  s    zWin32CPUInfo._is_PentiumIVc                 C   s,   |   ¡ o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  )r<  é   é   r‡   rD   r   r   r   r“   V  s    ÿzWin32CPUInfo._is_PentiumMc                 C   s,   |   ¡ o*| jd d dko*| jd d dv S )Nr   r%  r7  r&  )rA  é   é   r‡   rD   r   r   r   r˜   Z  s    ÿzWin32CPUInfo._is_Core2c                 C   s   t | jƒdkS rC   rœ   rD   r   r   r   r�   `  s    zWin32CPUInfo._is_singleCPUc                 C   s
   t | jƒS r2   rœ   rD   r   r   r   rE   c  s    zWin32CPUInfo._getNCPUsc                 C   s`   |   ¡ r>| jd d dkr,| jd d dkp<| jd d dv S |  ¡ rX| jd d dv S dS d S )	Nr   r%  r4  r&  r1  ©r7  rA  ©r4  r7  rA  F©rˆ   r   rt   rD   r   r   r   r¡   f  s    $ÿzWin32CPUInfo._has_mmxc                 C   s„   |   ¡ r>| jd d dkr,| jd d dv p<| jd d dkS |  ¡ r|| jd d dkrj| jd d dv pz| jd d dkS dS d S )	Nr   r%  r7  r&  rC  rA  )r7  r8  r:  rD  FrL  rD   r   r   r   r¢   o  s    ÿþÿþzWin32CPUInfo._has_ssec                 C   s8   |   ¡ r |  ¡ p|  ¡ p|  ¡ S |  ¡ r0|  ¡ S dS d S )NF)rˆ   Zis_Pentium4Zis_PentiumMZis_Core2rt   Zis_AMD64rD   r   r   r   r£   {  s    ÿzWin32CPUInfo._has_sse2c                 C   s   |   ¡ o| jd d dv S )Nr   r%  rK  rs   rD   r   r   r   r¦   „  s    zWin32CPUInfo._has_3dnowc                 C   s   |   ¡ o| jd d dv S )Nr   r%  rJ  rs   rD   r   r   r   r§   ‡  s    zWin32CPUInfo._has_3dnowext)$rQ   rR   rS   r   r*  r_   r`   rd   r2  r3  r6  r9  r;  r=  r?  ru   rƒ   r¨   r„   r‰   r‹   r�   r�   r�   rŽ   r‘   r’   r“   r˜   r�   rE   r¡   r¢   r£   r¦   r§   r   r   r   r   r$  Ø  sB   (		r$  ÚlinuxZirixÚdarwinÚsunosÚwin32Úcygwin)r   r   )r   r   )r   r   )r   r   )rT   Ú__all__r   rF   rH   Úsysr>   r
   Ú
subprocessr   r   r    r#   r0   r1   rU   r©   rè   r  r$  r:   Zcpuinfor   r   r   r   r   Ú<module>   sH   


	
  ÿ

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