B
    nb\'
                 @   s   d Z ddlZddlmZ dd Zdd Zedd	r:eZnejd
krJeZne	de
dkred eej  ee  ejd
kred eej  ee  dS )zOperating system utilities    N)programsc                 sh   ddl m} m}mm}m} ddlm  G  fddd|}| }|||_| j	
|| t|jS )zHReturn physical memory usage (float)
    Works on Windows platforms onlyr   )windll	Structurec_uint64sizeofbyref)DWORDc            
       sF   e Zd Zd fd fdfdfdfdfdfdfd	fg	Zd
S )z*windows_memory_usage.<locals>.MemoryStatusdwLengthdwMemoryLoadZullTotalPhysZullAvailPhysZullTotalPageFileZullAvailPageFileZullTotalVirtualZullAvailVirtualZullAvailExtendedVirtualN)__name__
__module____qualname__Z_fields_ )r   r   r   2lib/python3.7/site-packages/spyder/utils/system.pyMemoryStatus   s   r   )Zctypesr   r   r   r   r   Zctypes.wintypesr   r	   Zkernel32ZGlobalMemoryStatusExfloatr
   )r   r   r   r   r   Zmemorystatusr   )r   r   r   windows_memory_usage   s    

r   c              C   s2   ddl } y|  j}W n   |  j}Y nX |S )z
    Return physical memory usage (float)
    Requires the cross-platform psutil (>=v0.3) library
    (https://github.com/giampaolo/psutil)
    r   N)psutilZvirtual_memorypercentZphymem_usage)r   r   r   r   r   psutil_phymem_usage'   s    r   r   z>=0.3.0ntz5Feature requires psutil 0.3+ on non Windows platforms__main__zP********************************************************************************)__doc__osZspyder.utilsr   r   r   Zis_module_installedZmemory_usagenameImportErrorr   printr   r   r   r   <module>   s"   




