U
    /e                     @  s`   d dl mZ d dlmZ d dlZd dlmZ G dd dZG dd deZ	d	d	d
dddZ
dS )    )annotations)import_moduleN)RequestHandlerc                   @  s   e Zd Zdd Zdd ZdS )PrometheusCollectorc                 C  s   || _ tjd| _d | _d S )Nz*distributed.dashboard.prometheus.namespace)serverdaskconfigget	namespace	subsystem)selfr    r   ?/tmp/pip-unpacked-wheel-g426oqom/distributed/http/prometheus.py__init__   s    zPrometheusCollector.__init__c                 C  s<   g }| j r|| j  | jr(|| j || d|S )N_)r
   appendr   join)r   nameZ	full_namer   r   r   
build_name   s    
zPrometheusCollector.build_nameN)__name__
__module____qualname__r   r   r   r   r   r   r   
   s   r   c                   @  s   e Zd Zdd ZdS )PrometheusNotAvailableHandlerc                 C  s   |  d | dd d S )Nz# Prometheus metrics are not available, see: https://docs.dask.org/en/stable/how-to/setup-prometheus.html#setup-prometheus-monitoringzContent-Typeztext/plain; version=0.0.4)writeZ
set_header)r   r   r   r   r	      s    z!PrometheusNotAvailableHandler.getN)r   r   r   r	   r   r   r   r   r      s   r   strztype[RequestHandler])module_namehandler_namereturnc                 C  sJ   zddl }W n tk
r$   t Y S X t| }t||}t|tsFt|S )zImport ``handler_name`` from ``module_name`` if ``prometheus_client``
    is installed, import the ``PrometheusNotAvailableHandler`` otherwise.r   N)prometheus_clientModuleNotFoundErrorr   r   getattr
issubclassr   AssertionError)r   r   r   modulehandlerr   r   r   import_metrics_handler#   s    

r%   )
__future__r   	importlibr   Zdask.configr   Zdistributed.http.utilsr   r   r   r%   r   r   r   r   <module>   s   	