Файловый менеджер - Редактировать - /opt/imh-python/lib/python3.9/site-packages/prometheus_client/__pycache__/exposition.cpython-39.pyc
Ðазад
a e�hOY � @ s� d dl Z d dlmZ d dlZd dlmZ d dlZd dlZd dlm Z d dl Z d dlZd dlm Z mZmZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZmZ d dlZd d l m!Z!m"Z"m#Z# d dl$m%Z$ d dl&m'Z'm(Z( d d l)m*Z* dZ+dZ,e j-dkZ.G dd� de�Z/dd� Z0e(dfe'e1ed�dd�Z2G dd� de"�Z3G dd� de e#�Z4dd� Z5de(fe6e7e'dd �d!d"�Z8e8Z9e(fe'e:d#�d$d%�Z;e7eee'ge:f e7f d&�d'd(�Z<e7eee'ge:f e7f d&�d)d*�Z=e7e1d+�d,d-�Z>G d.d/� d/e�Z?e7e'dd0�d1d2�Z@e7e7eeA eee7e7f e:eBeg df d3�d4d5�ZCe7e7eeA eee7e7f e:eg df d6�d7d8�ZDe7e7eeA eee7e7f e:eg df d6�d9d:�ZEdPe7e7eeA eee7e7f e:e7e7eg df d;�d<d=�ZFdd>eDfe7e7e'eee7e f eeA edd?�d@dA�ZGdd>eDfe7e7ee' eee7e f eeA edd?�dBdC�ZHdd>eDfe7e7eee7e f eeA eddD�dEdF�ZIe7e7e7ee' eee7e f eeA eddG�dHdI�ZJdJdK� ZKee7e f dL�dMdN�ZLd dOlMmNZN dS )Q� N)�closing)�BaseHTTPRequestHandler)�ThreadingMixIn)�Any�Callable�Dict�List�Optional�Sequence�Tuple)� HTTPError)�parse_qs� quote_plus�urlparse)�build_opener�HTTPHandler�HTTPRedirectHandler�Request)�make_server�WSGIRequestHandler� WSGIServer� )� exposition)�CollectorRegistry�REGISTRY)�floatToGoString)�CONTENT_TYPE_LATEST�delete_from_gateway�generate_latest�instance_ip_grouping_key� make_asgi_app� make_wsgi_app�MetricsHandler�push_to_gateway�pushadd_to_gateway�start_http_server�start_wsgi_server�write_to_textfilez(text/plain; version=0.0.4; charset=utf-8)� � � c @ s e Zd ZdZdd� ZdS )�_PrometheusRedirectHandleraw Allow additional methods (e.g. PUT) and data forwarding in redirects. Use of this class constitute a user's explicit agreement to the redirect responses the Prometheus client will receive when using it. You should only use this class if you control or otherwise trust the redirect behavior involved and are certain it is safe to full transfer the original request (method and data) to the redirected URL. For example, if you know there is a cosmetic URL redirect in front of a local deployment of a Prometheus server, and all redirects are safe, this is the class to use to handle redirects in that case. The standard HTTPRedirectHandler does not forward request data nor does it allow redirected PUT requests (which Prometheus uses for some operations, for example `push_to_gateway`) because these cannot generically guarantee no violations of HTTP RFC 2616 requirements for the user to explicitly confirm redirects that could have unexpected side effects (such as rendering a PUT request non-idempotent or creating multiple resources not named in the original request). c C sl t |d|�� �}|dv r |dv sB|dv r0|dv sBt|j||||��t|�dd�|j|jd|jd �}||_ |S ) a� Apply redirect logic to a request. See parent HTTPRedirectHandler.redirect_request for parameter info. If the redirect is disallowed, this raises the corresponding HTTP error. If the redirect can't be determined, return None to allow other handlers to try. If the redirect is allowed, return the new request. This method specialized for the case when (a) the user knows that the redirect will not cause unacceptable side effects for any request method, and (b) the user knows that any request data should be passed through to the redirect. If either condition is not met, this should not be used. �method)�- �. �/ i3 )�GET�HEAD)r- r. r/ )�POST�PUT� z%20T)�headers�origin_req_host�unverifiable�data) �getattr� get_methodr �full_urlr �replacer5 r6 r8 r, ) �self�req�fp�code�msgr5 �newurl�mZnew_request� rD ��/root/rpmbuild/BUILDROOT/imh-python39-modules-3.9.7-92.el8.x86_64/opt/imh-python/lib/python3.9/site-packages/prometheus_client/exposition.py�redirect_requestA s �� �z+_PrometheusRedirectHandler.redirect_requestN)�__name__� __module__�__qualname__�__doc__rF rD rD rD rE r+ + s r+ c C s^ t |�\}}d|v r"| �|d �} || �}d|fg}|sTt|�rTt�|�}|�d� d||fS )zBake output for metrics output.zname[]�Content-Type)zContent-Encoding�gzip�200 OK)�choose_encoderZrestricted_registry� gzip_acceptedrL �compress�append) �registry� accept_header�accept_encoding_header�params�disable_compression�encoder�content_type�outputr5 rD rD rE �_bake_outputb s rZ F)rR rV �returnc s � �fdd�}|S )z;Create a WSGI app which serves the metrics from a registry.c sf | � d�}| � d�}t| � dd��}| d dkr@d}dg}d }nt�|||� �\}}}|||� |gS ) NZHTTP_ACCEPTZHTTP_ACCEPT_ENCODINGZQUERY_STRING� Z PATH_INFOz/favicon.icorM )r\ r\ � )�getr rZ )�environZstart_responserS rT rU �statusr5 rY �rV rR rD rE �prometheus_appt s z%make_wsgi_app.<locals>.prometheus_apprD )rR rV rb rD ra rE r! q s r! c @ s e Zd ZdZdd� ZdS )�_SilentHandlerz(WSGI handler that does not log requests.c G s dS �zLog nothing.NrD �r= �format�argsrD rD rE �log_message� s z_SilentHandler.log_messageN)rG rH rI rJ rh rD rD rD rE rc � s rc c @ s e Zd ZdZdZdS )�ThreadingWSGIServerzThread per request HTTP server.TN)rG rH rI rJ �daemon_threadsrD rD rD rE ri � s ri c C s. t �| |�}tt|��\}}}}}||d fS )z8Automatically select address family depending on addressr )�socket�getaddrinfo�next�iter)�address�port�infos�family�_ZsockaddrrD rD rE �_get_best_family� s rt z0.0.0.0)rp �addrrR r[ c C sZ G dd� dt �}t|| �\|_}t|�}t|| ||td�}tj|jd�}d|_ |� � dS )z?Starts a WSGI server for prometheus metrics as a daemon thread.c @ s e Zd ZdZdS )z$start_wsgi_server.<locals>.TmpServerz<Copy of ThreadingWSGIServer to update address_family locallyN)rG rH rI rJ rD rD rD rE � TmpServer� s rv )Z handler_class)�targetTN)ri rt �address_familyr! r rc � threading�Thread� serve_forever�daemon�start)rp ru rR rv ZappZhttpd�trD rD rE r&