o
    i                     @   sn   d dl m Z  d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZ eeZG dd dZd	S )
    )fnmatch)	getLogger)OptionalSetType)
Instrument)AggregationDefaultAggregation)finalc                   @   s   e Zd ZdZe Z									ddeee  dee	 dee	 dee	 dee	 dee	 d	ee	 d
ee
e	  dee fddZededefddZdS )Viewa  
    A `View` configuration parameters can be used for the following
    purposes:

    1. Match instruments: When an instrument matches a view, measurements
       received by that instrument will be processed.
    2. Customize metric streams: A metric stream is identified by a match
       between a view and an instrument and a set of attributes. The metric
       stream can be customized by certain attributes of the corresponding view.

    The attributes documented next serve one of the previous two purposes.

    Args:
        instrument_type: This is an instrument matching attribute: the class the
            instrument must be to match the view.

        instrument_name: This is an instrument matching attribute: the name the
            instrument must have to match the view. Wild card characters are supported. Wild
            card characters should not be used with this attribute if the view has also a
            ``name`` defined.

        meter_name: This is an instrument matching attribute: the name the
            instrument meter must have to match the view.

        meter_version: This is an instrument matching attribute: the version
            the instrument meter must have to match the view.

        meter_schema_url: This is an instrument matching attribute: the schema
            URL the instrument meter must have to match the view.

        name: This is a metric stream customizing attribute: the name of the
            metric stream. If `None`, the name of the instrument will be used.

        description: This is a metric stream customizing attribute: the
            description of the metric stream. If `None`, the description of the instrument will
            be used.

        attribute_keys: This is a metric stream customizing attribute: this is
            a set of attribute keys. If not `None` then only the measurement attributes that
            are in ``attribute_keys`` will be used to identify the metric stream.

        aggregation: This is a metric stream customizing attribute: the
            aggregation instance to use when data is aggregated for the
            corresponding metrics stream. If `None` an instance of
            `DefaultAggregation` will be used.

    This class is not intended to be subclassed by the user.
    Ninstrument_typeinstrument_name
meter_namemeter_versionmeter_schema_urlnamedescriptionattribute_keysaggregationc
           
      C   s   ||  u r|  u r|  u r|  u rd u r"n nt d| |d ur:|d ur:d|v s2d|v r:t d| d|| _|| _|| _|| _|| _|| _|| _|| _|	pV| j	| _
d S )Nz=Some instrument selection criteria must be provided for View *?zView z5 declared with wildcard characters in instrument_name)	Exception_name_instrument_type_instrument_name_meter_name_meter_version_meter_schema_url_description_attribute_keys_default_aggregation_aggregation)
selfr   r   r   r   r   r   r   r   r    r#   i/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/mysql/opentelemetry/sdk/metrics/_internal/view.py__init__T   s>   

zView.__init__
instrumentreturnc                 C   s   | j d urt|| j sdS | jd urt|j| jsdS | jd ur)|jj| jkr)dS | jd ur7|jj| jkr7dS | j	d urE|jj
| j	krEdS dS )NFT)r   
isinstancer   r   r   r   instrumentation_scoper   versionr   
schema_url)r"   r&   r#   r#   r$   _match   s    




zView._match)	NNNNNNNNN)__name__
__module____qualname____doc__r	   r    r   r   r   strr   r   r%   r
   boolr,   r#   r#   r#   r$   r       sB    1

	

1r   N)r   loggingr   typingr   r   r   mysql.opentelemetry.metricsr   5mysql.opentelemetry.sdk.metrics._internal.aggregationr   r	   typing_extensionsr
   r-   _loggerr   r#   r#   r#   r$   <module>   s   