o
    Ô­joX  ã                   @   sH  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¡rqeZn.ej d¡rzeZn%e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y% } ztjt|ƒt|d� W Y d }~dS d }~ww t |¡r6t |¡|v r6d|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   úT/var/www/html/CropPilot/venv/lib/python3.10/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 ]}dd„ | |d¡D ƒ}t|ƒdkr&|d ||d < q|S )Nr   r   c                 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   
ÿ€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S )ÚCPUInfoBasezkHolds CPU information and provides methods for requiring
    the availability of various CPU features.
    c                 C   s   z|ƒ W S  t y   Y d S w ©N)Ú	Exception)ÚselfÚfuncr   r   r   Ú	_try_callE   s
   ÿzCPUInfoBase._try_callc                 C   sZ   |  d¡s)t| d| ƒr%t| d| ƒ}t|tjƒr!| j|fdd„S t|ƒ‚dd„ S t|ƒ‚)NÚ_c                 S   s   | |ƒS r3   r   )r6   Úattrr   r   r   Ú<lambda>P   s    z)CPUInfoBase.__getattr__.<locals>.<lambda>c                   S   ó   d S r3   r   r   r   r   r   r:   R   ó    )Ú
startswithÚhasattrÚgetattrÚ
isinstanceÚtypesÚ
MethodTyper7   ÚAttributeError)r5   Únamer9   r   r   r   Ú__getattr__K   s   
ÿzCPUInfoBase.__getattr__c                 C   s   dS ©Nr   r   ©r5   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)r5   ÚabitsÚnbitsr   r   r   Ú__get_nbitsX   s   zCPUInfoBase.__get_nbitsc                 C   ó   |   ¡ dkS )NÚ32©Ú_CPUInfoBase__get_nbitsrG   r   r   r   Ú	_is_32bit]   ó   zCPUInfoBase._is_32bitc                 C   rR   )NÚ64rT   rG   r   r   r   Ú	_is_64bit`   rW   zCPUInfoBase._is_64bitN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   rE   rH   rU   rV   rY   r   r   r   r   r2   @   s    
r2   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ƒ\}}|r| ¡ |d d< ztdƒ}W n ty< } ztjt|ƒtdd� W Y d }~n7d }~ww |D ]+}dd„ | 	d	d
¡D ƒ}t
|ƒdkrSq?|\}}	|r_||d v rd| i ¡ |	|d |< q?| ¡  || j_ d S )Nzuname -mr   Úuname_mz/proc/cpuinfor+   r   c                 S   r$   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__)
r5   r   r   r   Úfor   r"   Ú
name_valuerD   Úvaluer   r   r   Ú__init__g   s,   
 €ÿ
zLinuxCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   Ú	_not_impl~   r<   zLinuxCPUInfo._not_implc                 C   ó   | j d d dkS )Nr   Ú	vendor_idÚAuthenticAMD©r   rG   r   r   r   Ú_is_AMD‚   ó   zLinuxCPUInfo._is_AMDc                 C   ó   |   ¡ o| jd d dkS )Nr   ÚmodelÚ2©ro   r   rG   r   r   r   Ú_is_AthlonK6_2…   ó   zLinuxCPUInfo._is_AthlonK6_2c                 C   rq   )Nr   rr   Ú3rt   rG   r   r   r   Ú_is_AthlonK6_3ˆ   rv   zLinuxCPUInfo._is_AthlonK6_3c                 C   ó   t  d| jd d ¡d uS )Nz	.*?AMD-K6r   ú
model name©rK   Úmatchr   rG   r   r   r   Ú_is_AthlonK6‹   rv   zLinuxCPUInfo._is_AthlonK6c                 C   ry   )Nz	.*?AMD-K7r   rz   r{   rG   r   r   r   Ú_is_AthlonK7Ž   rv   zLinuxCPUInfo._is_AthlonK7c                 C   ry   )Nz.*?Athlon\(tm\) MP\br   rz   r{   rG   r   r   r   Ú_is_AthlonMP‘   ó
   ÿÿzLinuxCPUInfo._is_AthlonMPc                 C   rq   )Nr   ÚfamilyÚ15©Úis_AMDr   rG   r   r   r   Ú	_is_AMD64•   rv   zLinuxCPUInfo._is_AMD64c                 C   ry   )Nz.*?Athlon\(tm\) 64\br   rz   r{   rG   r   r   r   Ú_is_Athlon64˜   r€   zLinuxCPUInfo._is_Athlon64c                 C   ry   )Nz.*?Athlon HX\br   rz   r{   rG   r   r   r   Ú_is_AthlonHXœ   r€   zLinuxCPUInfo._is_AthlonHXc                 C   ry   )Nz.*?Opteron\br   rz   r{   rG   r   r   r   Ú_is_Opteron    r€   zLinuxCPUInfo._is_Opteronc                 C   ry   )Nz.*?Hammer\br   rz   r{   rG   r   r   r   Ú
_is_Hammer¤   r€   zLinuxCPUInfo._is_Hammerc                 C   rk   )Nr   r   ÚAlpharn   rG   r   r   r   Ú	_is_Alphaª   rp   zLinuxCPUInfo._is_Alphac                 C   rq   )Nr   ú	cpu modelÚEV4©Úis_Alphar   rG   r   r   r   Ú_is_EV4­   rv   zLinuxCPUInfo._is_EV4c                 C   rq   )Nr   rŒ   ÚEV5rŽ   rG   r   r   r   Ú_is_EV5°   rv   zLinuxCPUInfo._is_EV5c                 C   rq   )Nr   rŒ   ÚEV56rŽ   rG   r   r   r   Ú_is_EV56³   rv   zLinuxCPUInfo._is_EV56c                 C   rq   )Nr   rŒ   ÚPCA56rŽ   rG   r   r   r   Ú	_is_PCA56¶   rv   zLinuxCPUInfo._is_PCA56c                 C   rk   )Nr   rl   ÚGenuineIntelrn   rG   r   r   r   Ú	_is_Intel¾   rp   zLinuxCPUInfo._is_Intelc                 C   rk   )Nr   r   Úi486rn   rG   r   r   r   Ú_is_i486Á   rp   zLinuxCPUInfo._is_i486c                 C   rq   )Nr   ú
cpu familyÚ5©Úis_Intelr   rG   r   r   r   Ú_is_i586Ä   rv   zLinuxCPUInfo._is_i586c                 C   rq   )Nr   r›   Ú6r�   rG   r   r   r   Ú_is_i686Ç   rv   zLinuxCPUInfo._is_i686c                 C   ry   )Nz
.*?Celeronr   rz   r{   rG   r   r   r   Ú_is_CeleronÊ   r€   zLinuxCPUInfo._is_Celeronc                 C   ry   )Nz
.*?Pentiumr   rz   r{   rG   r   r   r   Ú_is_PentiumÎ   r€   zLinuxCPUInfo._is_Pentiumc                 C   ry   )Nz.*?Pentium.*?II\br   rz   r{   rG   r   r   r   Ú_is_PentiumIIÒ   r€   zLinuxCPUInfo._is_PentiumIIc                 C   ry   )Nz.*?PentiumPro\br   rz   r{   rG   r   r   r   Ú_is_PentiumProÖ   r€   zLinuxCPUInfo._is_PentiumProc                 C   ry   )Nz.*?Pentium.*?MMX\br   rz   r{   rG   r   r   r   Ú_is_PentiumMMXÚ   r€   zLinuxCPUInfo._is_PentiumMMXc                 C   ry   )Nz.*?Pentium.*?III\br   rz   r{   rG   r   r   r   Ú_is_PentiumIIIÞ   r€   zLinuxCPUInfo._is_PentiumIIIc                 C   ry   )Nz.*?Pentium.*?(IV|4)\br   rz   r{   rG   r   r   r   Ú_is_PentiumIVâ   r€   zLinuxCPUInfo._is_PentiumIVc                 C   ry   )Nz.*?Pentium.*?M\br   rz   r{   rG   r   r   r   Ú_is_PentiumMæ   r€   zLinuxCPUInfo._is_PentiumMc                 C   s   |   ¡ o|  ¡ S r3   )Úis_PentiumIVÚhas_sse3rG   r   r   r   Ú_is_Prescottê   ó   zLinuxCPUInfo._is_Prescottc                 C   sX   |   ¡ o+| jd d dkp| jd d dko+|  ¡ o|  ¡  o+t d| jd d ¡d uS )Nr   r›   r    r‚   z	.*?\blm\bÚflags)rž   r   r«   Ú	has_ssse3rK   r|   rG   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   rz   )Úis_64bitrž   rK   r|   r   rG   r   r   r   Ú	_is_Core2ô   s   ÿÿÿzLinuxCPUInfo._is_Core2c                 C   ry   )Nz.*?Itanium\br   r�   r{   rG   r   r   r   Ú_is_Itaniumù   r€   zLinuxCPUInfo._is_Itaniumc                 C   s   t  d| jd d t j¡d uS )Nz	.*?XEON\br   rz   )rK   r|   r   Ú
IGNORECASErG   r   r   r   Ú_is_XEONý   s
   ÿÿzLinuxCPUInfo._is_XEONc                 C   ó   t | jƒdkS rF   ©r-   r   rG   r   r   r   Ú_is_singleCPU  ó   zLinuxCPUInfo._is_singleCPUc                 C   ó
   t | jƒS r3   r·   rG   r   r   r   rH     ó   
zLinuxCPUInfo._getNCPUsc                 C   rk   )Nr   Úfdiv_bugÚyesrn   rG   r   r   r   Ú_has_fdiv_bug  rp   zLinuxCPUInfo._has_fdiv_bugc                 C   rk   )Nr   Úf00f_bugr½   rn   rG   r   r   r   Ú_has_f00f_bug  rp   zLinuxCPUInfo._has_f00f_bugc                 C   ry   )Nz
.*?\bmmx\br   r®   r{   rG   r   r   r   Ú_has_mmx  rv   zLinuxCPUInfo._has_mmxc                 C   ry   )Nz
.*?\bsse\br   r®   r{   rG   r   r   r   Ú_has_sse  rv   zLinuxCPUInfo._has_ssec                 C   ry   )Nz.*?\bsse2\br   r®   r{   rG   r   r   r   Ú	_has_sse2  rv   zLinuxCPUInfo._has_sse2c                 C   ry   )Nz
.*?\bpni\br   r®   r{   rG   r   r   r   Ú	_has_sse3  rv   zLinuxCPUInfo._has_sse3c                 C   ry   )Nz.*?\bssse3\br   r®   r{   rG   r   r   r   Ú
_has_ssse3  rv   zLinuxCPUInfo._has_ssse3c                 C   ry   )Nz.*?\b3dnow\br   r®   r{   rG   r   r   r   Ú
_has_3dnow   rv   zLinuxCPUInfo._has_3dnowc                 C   ry   )Nz.*?\b3dnowext\br   r®   r{   rG   r   r   r   Ú_has_3dnowext#  rv   zLinuxCPUInfo._has_3dnowext)4rZ   r[   r\   r   ri   rj   ro   ru   rx   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¸   rH   r¾   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r   r   r   r   r^   c   sd    r^   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   r1   re   ©r5   r   r   r   r   ri   )  s   
ÿzIRIXCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   rj   0  r<   zIRIXCPUInfo._not_implc                 C   s   | j  d¡dkS )NÚNUM_PROCESSORSÚ1)r   ÚgetrG   r   r   r   r¸   2  r­   zIRIXCPUInfo._is_singleCPUc                 C   s   t | j dd¡ƒS )NrÎ   r   ©Úintr   rÐ   rG   r   r   r   rH   5  rp   zIRIXCPUInfo._getNCPUsc                 C   s    | j  d¡ ¡ d  ¡ d| kS )NÚ
PROCESSORSr   zr%s)r   rÐ   r,   Úlower©r5   Únr   r   r   Ú	__cputype8  s    zIRIXCPUInfo.__cputypec                 C   ó
   |   d¡S )NiÐ  ©Ú_IRIXCPUInfo__cputyperG   r   r   r   Ú	_is_r2000:  ó   
 zIRIXCPUInfo._is_r2000c                 C   rØ   )Ni¸  rÙ   rG   r   r   r   Ú	_is_r3000;  rÜ   zIRIXCPUInfo._is_r3000c                 C   rØ   )Ni<  rÙ   rG   r   r   r   Ú	_is_r3900<  rÜ   zIRIXCPUInfo._is_r3900c                 C   rØ   )Ni   rÙ   rG   r   r   r   Ú	_is_r4000=  rÜ   zIRIXCPUInfo._is_r4000c                 C   rØ   )Ni  rÙ   rG   r   r   r   Ú	_is_r4100>  rÜ   zIRIXCPUInfo._is_r4100c                 C   rØ   )NiÌ  rÙ   rG   r   r   r   Ú	_is_r4300?  rÜ   zIRIXCPUInfo._is_r4300c                 C   rØ   )Ni0  rÙ   rG   r   r   r   Ú	_is_r4400@  rÜ   zIRIXCPUInfo._is_r4400c                 C   rØ   )Niø  rÙ   rG   r   r   r   Ú	_is_r4600A  rÜ   zIRIXCPUInfo._is_r4600c                 C   rØ   )Ni*  rÙ   rG   r   r   r   Ú	_is_r4650B  rÜ   zIRIXCPUInfo._is_r4650c                 C   rØ   )Niˆ  rÙ   rG   r   r   r   Ú	_is_r5000C  rÜ   zIRIXCPUInfo._is_r5000c                 C   rØ   )Nip  rÙ   rG   r   r   r   Ú	_is_r6000D  rÜ   zIRIXCPUInfo._is_r6000c                 C   rØ   )Ni@  rÙ   rG   r   r   r   Ú	_is_r8000E  rÜ   zIRIXCPUInfo._is_r8000c                 C   rØ   )Ni'  rÙ   rG   r   r   r   Ú
_is_r10000F  rÜ   zIRIXCPUInfo._is_r10000c                 C   rØ   )Nià.  rÙ   rG   r   r   r   Ú
_is_r12000G  rÜ   zIRIXCPUInfo._is_r12000c                 C   rØ   )NÚorionrÙ   rG   r   r   r   Ú
_is_rorionH  rÜ   zIRIXCPUInfo._is_rorionc                 C   s$   z| j  d¡W S  ty   Y d S w )NÚMACHINE)r   rÐ   r4   rG   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   rØ   )Né   ©Ú_IRIXCPUInfo__machinerG   r   r   r   Ú_is_IP19O  rÜ   zIRIXCPUInfo._is_IP19c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP20P  rÜ   zIRIXCPUInfo._is_IP20c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP21Q  rÜ   zIRIXCPUInfo._is_IP21c                 C   rØ   ©Né   rð   rG   r   r   r   Ú_is_IP22R  rÜ   zIRIXCPUInfo._is_IP22c                 C   ó   |   d¡o|  ¡ S r÷   )rñ   rß   rG   r   r   r   Ú_is_IP22_4kS  ó    zIRIXCPUInfo._is_IP22_4kc                 C   rú   r÷   ©rñ   rå   rG   r   r   r   Ú_is_IP22_5kT  rü   zIRIXCPUInfo._is_IP22_5kc                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP24U  rÜ   zIRIXCPUInfo._is_IP24c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP25V  rÜ   zIRIXCPUInfo._is_IP25c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP26W  rÜ   zIRIXCPUInfo._is_IP26c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP27X  rÜ   zIRIXCPUInfo._is_IP27c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP28Y  rÜ   zIRIXCPUInfo._is_IP28c                 C   rØ   )Né   rð   rG   r   r   r   Ú_is_IP30Z  rÜ   zIRIXCPUInfo._is_IP30c                 C   rØ   ©Né    rð   rG   r   r   r   Ú_is_IP32[  rÜ   zIRIXCPUInfo._is_IP32c                 C   rú   r  rý   rG   r   r   r   Ú_is_IP32_5k\  rü   zIRIXCPUInfo._is_IP32_5kc                 C   rú   r  )rñ   rè   rG   r   r   r   Ú_is_IP32_10k]  rü   zIRIXCPUInfo._is_IP32_10k))rZ   r[   r\   r   ri   rj   r¸   rH   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Ê   &  sN    rÊ   c                   @   óØ   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    r1   re   rÍ   r   r   r   ri   c  s   
ÿzDarwinCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   rj   k  r<   zDarwinCPUInfo._not_implc                 C   ó   t | jd  dd¡ƒS )Nr  zhw.ncpur   rÑ   rG   r   r   r   rH   m  ó   zDarwinCPUInfo._getNCPUsc                 C   rk   )Nr  z
hw.machinezPower Macintoshrn   rG   r   r   r   Ú_is_Power_Macintoshp  rp   z!DarwinCPUInfo._is_Power_Macintoshc                 C   ó   | j d dkS )Nr  Úi386rn   rG   r   r   r   rÈ   s  r¹   zDarwinCPUInfo._is_i386c                 C   r  )Nr  Úppcrn   rG   r   r   r   Ú_is_ppcu  r¹   zDarwinCPUInfo._is_ppcc                 C   s   | j d d| kS )Nr  zppc%srn   rÕ   r   r   r   rî   x  rp   zDarwinCPUInfo.__machinec                 C   rØ   )NiY  ©Ú_DarwinCPUInfo__machinerG   r   r   r   Ú
_is_ppc601z  rÜ   zDarwinCPUInfo._is_ppc601c                 C   rØ   )NiZ  r  rG   r   r   r   Ú
_is_ppc602{  rÜ   zDarwinCPUInfo._is_ppc602c                 C   rØ   )Ni[  r  rG   r   r   r   Ú
_is_ppc603|  rÜ   zDarwinCPUInfo._is_ppc603c                 C   rØ   )NÚ603er  rG   r   r   r   Ú_is_ppc603e}  rÜ   zDarwinCPUInfo._is_ppc603ec                 C   rØ   )Ni\  r  rG   r   r   r   Ú
_is_ppc604~  rÜ   zDarwinCPUInfo._is_ppc604c                 C   rØ   )NÚ604er  rG   r   r   r   Ú_is_ppc604e  rÜ   zDarwinCPUInfo._is_ppc604ec                 C   rØ   )Nil  r  rG   r   r   r   Ú
_is_ppc620€  rÜ   zDarwinCPUInfo._is_ppc620c                 C   rØ   )Niv  r  rG   r   r   r   Ú
_is_ppc630�  rÜ   zDarwinCPUInfo._is_ppc630c                 C   rØ   )Niä  r  rG   r   r   r   Ú
_is_ppc740‚  rÜ   zDarwinCPUInfo._is_ppc740c                 C   rØ   )Niè  r  rG   r   r   r   Ú_is_ppc7400ƒ  rÜ   zDarwinCPUInfo._is_ppc7400c                 C   rØ   )Ni  r  rG   r   r   r   Ú_is_ppc7450„  rÜ   zDarwinCPUInfo._is_ppc7450c                 C   rØ   )Niî  r  rG   r   r   r   Ú
_is_ppc750…  rÜ   zDarwinCPUInfo._is_ppc750c                 C   rØ   )Ni“  r  rG   r   r   r   Ú
_is_ppc403†  rÜ   zDarwinCPUInfo._is_ppc403c                 C   rØ   )Niù  r  rG   r   r   r   Ú
_is_ppc505‡  rÜ   zDarwinCPUInfo._is_ppc505c                 C   rØ   )Ni!  r  rG   r   r   r   Ú
_is_ppc801ˆ  rÜ   zDarwinCPUInfo._is_ppc801c                 C   rØ   )Ni5  r  rG   r   r   r   Ú
_is_ppc821‰  rÜ   zDarwinCPUInfo._is_ppc821c                 C   rØ   )Ni7  r  rG   r   r   r   Ú
_is_ppc823Š  rÜ   zDarwinCPUInfo._is_ppc823c                 C   rØ   )Ni\  r  rG   r   r   r   Ú
_is_ppc860‹  rÜ   zDarwinCPUInfo._is_ppc860)rZ   r[   r\   r   ri   rj   rH   r  rÈ   r  r  r   r!  r"  r$  r%  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r   r   r   r   r  `  s6    r  c                   @   r  )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|¡}|r/| d¡|d<  nq|| j_ d S )Nr  ÚmachÚuname_iz
isainfo -bz
isainfo -n)r  r5  r6  Ú	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    r1   r#   rK   r|   rN   re   )r5   r   r"   Úmr   r   r   ri   ’  s    
üþzSunOSCPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   rj   £  r<   zSunOSCPUInfo._not_implc                 C   r  )Nr8  r  rn   rG   r   r   r   rÈ   ¥  r¹   zSunOSCPUInfo._is_i386c                 C   r  )Nr8  Úsparcrn   rG   r   r   r   Ú	_is_sparc§  r¹   zSunOSCPUInfo._is_sparcc                 C   r  )Nr8  Úsparcv9rn   rG   r   r   r   Ú_is_sparcv9©  r¹   zSunOSCPUInfo._is_sparcv9c                 C   r  )Nr9  ÚNumCPUr   rÑ   rG   r   r   r   rH   ¬  r  zSunOSCPUInfo._getNCPUsc                 C   r  )Nr  Úsun4rn   rG   r   r   r   Ú_is_sun4¯  r¹   zSunOSCPUInfo._is_sun4c                 C   ó   t  d| jd ¡d uS )NÚSUNWr6  r{   rG   r   r   r   Ú_is_SUNW²  r  zSunOSCPUInfo._is_SUNWc                 C   rD  )Nz.*SPARCstation-5r6  r{   rG   r   r   r   Ú_is_sparcstation5´  r  zSunOSCPUInfo._is_sparcstation5c                 C   rD  )Nz	.*Ultra-1r6  r{   rG   r   r   r   Ú
_is_ultra1¶  r  zSunOSCPUInfo._is_ultra1c                 C   rD  )Nz.*Ultra-250r6  r{   rG   r   r   r   Ú_is_ultra250¸  r  zSunOSCPUInfo._is_ultra250c                 C   rD  )Nz	.*Ultra-2r6  r{   rG   r   r   r   Ú
_is_ultra2º  r  zSunOSCPUInfo._is_ultra2c                 C   rD  )Nz
.*Ultra-30r6  r{   rG   r   r   r   Ú_is_ultra30¼  r  zSunOSCPUInfo._is_ultra30c                 C   rD  )Nz	.*Ultra-4r6  r{   rG   r   r   r   Ú
_is_ultra4¾  r  zSunOSCPUInfo._is_ultra4c                 C   rD  )Nz.*Ultra-5_10r6  r{   rG   r   r   r   Ú_is_ultra5_10À  r  zSunOSCPUInfo._is_ultra5_10c                 C   rD  )Nz	.*Ultra-5r6  r{   rG   r   r   r   Ú
_is_ultra5Â  r  zSunOSCPUInfo._is_ultra5c                 C   rD  )Nz
.*Ultra-60r6  r{   rG   r   r   r   Ú_is_ultra60Ä  r  zSunOSCPUInfo._is_ultra60c                 C   rD  )Nz
.*Ultra-80r6  r{   rG   r   r   r   Ú_is_ultra80Æ  r  zSunOSCPUInfo._is_ultra80c                 C   rD  )Nz.*Ultra-Enterpriser6  r{   rG   r   r   r   Ú_is_ultraenterpriceÈ  r  z SunOSCPUInfo._is_ultraenterpricec                 C   rD  )Nz.*Ultra-Enterprise-10000r6  r{   rG   r   r   r   Ú_is_ultraenterprice10kÊ  r  z#SunOSCPUInfo._is_ultraenterprice10kc                 C   rD  )Nz
.*Sun-Firer6  r{   rG   r   r   r   Ú_is_sunfireÌ  r  zSunOSCPUInfo._is_sunfirec                 C   rD  )Nz.*Ultrar6  r{   rG   r   r   r   Ú	_is_ultraÎ  r  zSunOSCPUInfo._is_ultrac                 C   r  )Nr;  Úsparcv7rn   rG   r   r   r   Ú_is_cpusparcv7Ñ  r¹   zSunOSCPUInfo._is_cpusparcv7c                 C   r  )Nr;  Úsparcv8rn   rG   r   r   r   Ú_is_cpusparcv8Ó  r¹   zSunOSCPUInfo._is_cpusparcv8c                 C   r  )Nr;  r?  rn   rG   r   r   r   Ú_is_cpusparcv9Õ  r¹   zSunOSCPUInfo._is_cpusparcv9)rZ   r[   r\   r   ri   rj   rÈ   r>  r@  rH   rC  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rV  rX  rY  r   r   r   r   r4  Ž  s6    r4  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   sh  | j d urd S g }z�dd l}t dtj¡}| |j| j¡}d}	 z| ||¡}W n
 |j	y2   Y ncw |d7 }| 
d|i¡ | ||¡}d}	 z| ||¡\}	}
}W n
 |j	y\   Y n8w |d }|
|d |	< |	dkr“| |
¡}|r“t| d¡ƒ|d d	< t| d
¡ƒ|d d< t| d¡ƒ|d d< qGq W n ty­ } zt|dƒ W Y d }~nd }~ww || j_ d S )Nr   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)Tr   Ú	Processorra   Ú
IdentifierÚFMLÚFamilyÚMDLÚModelÚSTPÚSteppingz
(ignoring))r   ÚwinregrK   rL   r´   ÚOpenKeyÚHKEY_LOCAL_MACHINEÚpkeyÚEnumKeyÚerrorrc   Ú	EnumValuerM   rÒ   rN   r4   Úprintre   )r5   r   rc  ÚprgxÚchndÚpnumÚprocÚphndÚpidxrD   rh   ÚvtpeÚsrchr   r   r   r   ri   à  sT   
ÿÿÿ
óö€ÿzWin32CPUInfo.__init__c                 C   r;   r3   r   rG   r   r   r   rj     r<   zWin32CPUInfo._not_implc                 C   rk   )Nr   ÚVendorIdentifierrm   rn   rG   r   r   r   ro     rp   zWin32CPUInfo._is_AMDc                 C   rq   ©Nr   r^  é   rƒ   rG   r   r   r   Ú	_is_Am486  rv   zWin32CPUInfo._is_Am486c                 C   rq   rt  rƒ   rG   r   r   r   Ú
_is_Am5x86  rv   zWin32CPUInfo._is_Am5x86c                 C   ó,   |   ¡ o| jd d dko| jd d dv S )Nr   r^  é   r`  )r   r   r+   é   rƒ   rG   r   r   r   Ú	_is_AMDK5  ó   ÿzWin32CPUInfo._is_AMDK5c                 C   rx  )Nr   r^  ry  r`  )é   é   rƒ   rG   r   r   r   Ú	_is_AMDK6  r|  zWin32CPUInfo._is_AMDK6c                 C   ó,   |   ¡ o| jd d dko| jd d dkS )Nr   r^  ry  r`  é   rƒ   rG   r   r   r   Ú_is_AMDK6_2  r|  zWin32CPUInfo._is_AMDK6_2c                 C   r€  )Nr   r^  ry  r`  é	   rƒ   rG   r   r   r   Ú_is_AMDK6_3!  r|  zWin32CPUInfo._is_AMDK6_3c                 C   rq   ©Nr   r^  r}  rƒ   rG   r   r   r   Ú	_is_AMDK7%  rv   zWin32CPUInfo._is_AMDK7c                 C   rq   ©Nr   r^  é   rƒ   rG   r   r   r   r…   ,  rv   zWin32CPUInfo._is_AMD64c                 C   rk   )Nr   rs  r—   rn   rG   r   r   r   r˜   1  rp   zWin32CPUInfo._is_Intelc                 C   rk   )Nr   r^  rz  rn   rG   r   r   r   rÈ   4  rp   zWin32CPUInfo._is_i386c                 C   rk   rt  rn   rG   r   r   r   rš   7  rp   zWin32CPUInfo._is_i486c                 C   rq   ©Nr   r^  ry  r�   rG   r   r   r   rŸ   :  rv   zWin32CPUInfo._is_i586c                 C   rq   r…  r�   rG   r   r   r   r¡   =  rv   zWin32CPUInfo._is_i686c                 C   rq   r‰  r�   rG   r   r   r   r£   @  rv   zWin32CPUInfo._is_Pentiumc                 C   r€  )Nr   r^  ry  r`  ru  r�   rG   r   r   r   r¦   C  r|  zWin32CPUInfo._is_PentiumMMXc                 C   r€  )Nr   r^  r}  r`  r   r�   rG   r   r   r   r¥   G  r|  zWin32CPUInfo._is_PentiumProc                 C   rx  )Nr   r^  r}  r`  )rz  ry  r}  r�   rG   r   r   r   r¤   K  r|  zWin32CPUInfo._is_PentiumIIc                 C   rx  )Nr   r^  r}  r`  ©r~  r�  rƒ  é
   é   r�   rG   r   r   r   r§   O  r|  zWin32CPUInfo._is_PentiumIIIc                 C   rq   r‡  r�   rG   r   r   r   r¨   S  rv   zWin32CPUInfo._is_PentiumIVc                 C   rx  )Nr   r^  r}  r`  )rƒ  é   é   r�   rG   r   r   r   r©   V  r|  zWin32CPUInfo._is_PentiumMc                 C   rx  )Nr   r^  r}  r`  )rˆ  é   é   r�   rG   r   r   r   r²   Z  r|  zWin32CPUInfo._is_Core2c                 C   r¶   rF   r·   rG   r   r   r   r¸   `  r¹   zWin32CPUInfo._is_singleCPUc                 C   rº   r3   r·   rG   r   r   r   rH   c  r»   zWin32CPUInfo._getNCPUsc                 C   s\   |   ¡ r| 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^  ry  r`  ru  ©r}  rˆ  ©ry  r}  rˆ  F©rž   r   r„   rG   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r5| jd d dv p=| jd d dkS dS )	Nr   r^  r}  r`  rŠ  rˆ  )r}  r~  r�  r‹  Fr“  rG   r   r   r   rÂ   o  s   ÿþÿþzWin32CPUInfo._has_ssec                 C   s4   |   ¡ r|  ¡ p|  ¡ p|  ¡ S |  ¡ r|  ¡ S dS )NF)rž   Úis_Pentium4Úis_PentiumMÚis_Core2r„   Úis_AMD64rG   r   r   r   rÃ   {  s   ÿzWin32CPUInfo._has_sse2c                 C   ó   |   ¡ o| jd d dv S )Nr   r^  r’  rƒ   rG   r   r   r   rÆ   „  rv   zWin32CPUInfo._has_3dnowc                 C   r˜  )Nr   r^  r‘  rƒ   rG   r   r   r   rÇ   ‡  rv   zWin32CPUInfo._has_3dnowext)$rZ   r[   r\   r   rf  ri   rj   ro   rv  rw  r{  r  r‚  r„  r†  r…   r˜   rÈ   rš   rŸ   r¡   r£   r¦   r¥   r¤   r§   r¨   r©   r²   r¸   rH   rÁ   rÂ   rÃ   rÆ   rÇ   r   r   r   r   rZ  Ø  sD    (		rZ  ÚlinuxÚirixÚdarwinÚsunosÚwin32Úcygwin)r   r   )r]   Ú__all__r   rI   rK   ÚsysrA   r
   Ú
subprocessr   r   r    r#   r1   r2   r^   rÊ   r  r4  rZ  r=   Úcpuinfor   r   r   r   r   Ú<module>   sJ   



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