U
    dM                     @   sZ   d dl Zd dlmZmZmZ ddlmZmZ ddl	m
Z
mZmZ G dd de
Ze ZdS )    N)AnyIterableOptional   )GaugeMetricFamilyMetric)	CollectorCollectorRegistryREGISTRYc                   @   sX   e Zd ZdZedfeee dddZe	e
 dddZed	d
 Zdd Zdd ZdS )PlatformCollectorz)Collector for python platform informationN)registryplatformc                 C   s^   |d krt n|| _|  }| j }|dkr:||   | dd|g| _|rZ||  d S )NJavaZpython_infozPython platform information)	pf	_platform_infosystemupdate_java_add_metric_metricsregister)selfr   r   infor    r   H/tmp/pip-unpacked-wheel-2bcd7zt2/prometheus_client/platform_collector.py__init__   s    
zPlatformCollector.__init__)returnc                 C   s   | j S )N)r   )r   r   r   r   collect   s    zPlatformCollector.collectc                    s8      } fdd|D }t| ||d}||d |S )Nc                    s   g | ]} | qS r   r   ).0kdatar   r   
<listcomp>    s     z1PlatformCollector._add_metric.<locals>.<listcomp>)labelsr   )keysr   Z
add_metric)nameZdocumentationr"   r$   valuesgr   r!   r   r      s
    zPlatformCollector._add_metricc                 C   s,   | j  \}}}| j  | j  |||dS )N)versionimplementationmajorminor
patchlevel)r   python_version_tuplepython_versionpython_implementation)r   r+   r,   r-   r   r   r   r   %   s    zPlatformCollector._infoc                 C   s*   | j  \}}}}|\}}}||||dS )N)Zjvm_versionZjvm_releaseZ
jvm_vendorZjvm_name)r   java_ver)r   Zjava_version_vminfoosinfovm_name
vm_release	vm_vendorr   r   r   r   /   s    
zPlatformCollector._java)__name__
__module____qualname____doc__r
   r	   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r      s   

r   )r   r   typingr   r   r   Zmetrics_corer   r   r   r   r	   r
   r   ZPLATFORM_COLLECTORr   r   r   r   <module>   s   2