o
    Ìv›a»  ã                   @   s8   d Z ddlZddlmZ ddlmZ G dd„ deƒZdS )zStdoutCsv interface class.é    N)Úlogger)Úprintandflushc                   @   sN   e Zd ZdZdZdZddd„Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
	ddd„ZdS )ÚGlancesStdoutCsvz3
    This class manages the StdoutCsv display.
    ú,zN/ANc                 C   s    || _ || _d| _|  ¡ | _d S )NT)ÚconfigÚargsÚheaderÚ
build_listÚplugins_list)Úselfr   r   © r   úD/usr/lib/python3/dist-packages/glances/outputs/glances_stdout_csv.pyÚ__init__%   s   zGlancesStdoutCsv.__init__c                 C   sF   g }| j j d¡D ]}d|v r| d¡\}}nd}| ||f¡ q	|S )zWReturn a list of tuples taken from self.args.stdout
        [(plugin, attribute), ... ]r   Ú.N)r   Z
stdout_csvÚsplitÚappend)r   ÚretÚpÚar   r   r   r	   0   s   zGlancesStdoutCsv.build_listc                 C   s   d S )Nr   )r   r   r   r   Úend<   s   zGlancesStdoutCsv.endc              
   C   sÌ   d}|dur|d  ||| j¡7 }|S t|tƒr,| ¡ D ]}|d  |t|ƒ| j¡7 }q|S t|tƒr[|D ]%}t|tƒrXd|v rX| ¡ D ]}|d  |t||d  ƒt|ƒ| j¡7 }qBq3|S |d  || j¡7 }|S )z Build and return the header lineÚ Nz{}.{}{}Úkeyz
{}.{}.{}{}ú{}{})ÚformatÚ	separatorÚ
isinstanceÚdictÚkeysÚstrÚlist)r   ÚpluginÚ	attributeÚstatÚlineÚkÚir   r   r   Úbuild_header?   s0   
ðþ
õý€þzGlancesStdoutCsv.build_headerc                 C   sÊ   d}|dur|d  t| || j¡ƒ| j¡7 }|S t|tƒr1| ¡ D ]}|d  t|ƒ| j¡7 }q!|S t|tƒrX|D ]}t|tƒrUd|v rU| ¡ D ]}|d  t|ƒ| j¡7 }qGq8|S |d  t|ƒ| j¡7 }|S )zBuild and return the data liner   Nr   r   )	r   r   ÚgetÚnar   r   r   Úvaluesr   )r   r    r!   r"   r#   Úvr%   r   r   r   Ú
build_dataX   s&   ÿ
õ	
ø€þzGlancesStdoutCsv.build_dataé   c                 C   sœ   d}| j D ]0\}}|| ¡ v r| |¡ ¡ r| |¡ ¡ }nq| jr,||  |||¡7 }q||  |||¡7 }qt|dd… ƒ d| _|dkrLt	 
|¡ dS dS )zHDisplay stats to stdout.
        Refresh every duration second.
        r   NéÿÿÿÿFr   )r
   ZgetPluginsListZ
get_pluginZ
is_enabledZ
get_exportr   r&   r+   r   ÚtimeÚsleep)r   ZstatsZdurationr#   r    r!   r"   r   r   r   Úupdatem   s   ÿÿzGlancesStdoutCsv.update)NN)r,   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r(   r   r	   r   r&   r+   r0   r   r   r   r   r      s    
þr   )r4   r.   Zglances.loggerr   Zglances.compatr   Úobjectr   r   r   r   r   Ú<module>   s
   