U
    d                     @   sZ   d dl Z d dlZd dl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)Iterable   )CounterMetricFamilyMetric)	CollectorCollectorRegistryREGISTRYc                   @   s4   e Zd ZdZefedddZee dddZ	dS )	GCCollectorz,Collector for Garbage collection statistics.)registryc                 C   s(   t tdrt dkrd S ||  d S )N	get_statsCPython)hasattrgcplatformpython_implementationregister)selfr
    r   B/tmp/pip-unpacked-wheel-2bcd7zt2/prometheus_client/gc_collector.py__init__   s    zGCCollector.__init__)returnc                 C   s   t dddgd}t dddgd}t dddgd}tt D ]L\}}t|}|j|g|d	 d
 |j|g|d d
 |j|g|d d
 q<|||gS )NZpython_gc_objects_collectedzObjects collected during gc
generation)labelsZpython_gc_objects_uncollectablez$Uncollectable object found during GCZpython_gc_collectionsz-Number of times this generation was collected	collected)valueuncollectablecollections)r   	enumerater   r   strZ
add_metric)r   r   r   r   genstatr   r   r   r   collect   s*    zGCCollector.collectN)
__name__
__module____qualname____doc__r   r   r   r   r   r!   r   r   r   r   r	   	   s   r	   )r   r   typingr   Zmetrics_corer   r   r
   r   r   r   r	   ZGC_COLLECTORr   r   r   r   <module>   s   #