
    3if                         S SK J r   S SKJr  S SKJrJrJrJr  S SKJ	r	  S SK
JrJrJrJrJr  S SKJrJrJr  \" \5      rS\\   S\4S	 jr " S
 S5      rg)    )fnmatch)	getLogger)CallableOptionalSetType)
Instrument)AggregationDefaultAggregation_Aggregation#_ExplicitBucketHistogramAggregation&_ExponentialBucketHistogramAggregation)'AlignedHistogramBucketExemplarReservoirExemplarReservoirBuilder SimpleFixedSizeExemplarReservoiraggregation_typereturnc                 z    [        U [        5      (       a  [        $ [        U [        5      (       a  [        $ [        $ )z*Default reservoir factory per aggregation.)
issubclassr   r   r   r   )r   s    b/home/james-whalen/.local/lib/python3.13/site-packages/opentelemetry/sdk/metrics/_internal/view.py_default_reservoir_factoryr   %   s4     "$GHH66"$JKK//++    c                       \ rS rSrSr\" 5       r           SS\\\	      S\\
   S\\
   S\\
   S\\
   S	\\
   S
\\
   S\\\
      S\\   S\\\\   /\4      S\\
   4S jjrS\	S\4S jrSrg)View0   af	  
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.

    exemplar_reservoir_factory: This is a metric stream customizing attribute:
        the exemplar reservoir factory

    instrument_unit: This is an instrument matching attribute: the unit the
        instrument must have to match the view.

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aggregationexemplar_reservoir_factoryinstrument_unitc                 t   UUs=L a  Us=L a  Us=L a  Us=L a
  Us=L a   c  O  O[        SU 35      eUb  Ub  SU;   d  SU;   a  [        SU S35      eX`l        Xl        X l        Xl        X0l        X@l        XPl        Xpl        Xl	        U	=(       d    U R                  U l        U
=(       d    [        U l        g )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_instrument_unit_meter_name_meter_version_meter_schema_url_description_attribute_keys_default_aggregation_aggregationr   _exemplar_reservoir_factory)selfr   r   r   r   r    r!   r"   r#   r$   r%   r&   s               r   __init__View.__init__j   s    "   	
    66:V=  +'3/+A v 0 0  
 / / /%+!1'-'D4+D+D&D*D 	(r   
instrumentr   c                 L   U R                   b  [        XR                   5      (       d  gU R                  b&  [        UR                  U R                  5      (       d  gU R
                  b&  [        UR                  U R
                  5      (       d  gU R                  b%  UR                  R                  U R                  :w  a  gU R                  b%  UR                  R                  U R                  :w  a  gU R                  b%  UR                  R                  U R                  :w  a  gg)NFT)r,   
isinstancer-   r   r!   r.   unitr/   instrumentation_scoper0   versionr1   
schema_url)r7   r:   s     r   _matchView._match   s      ,j*?*?@@  ,:??D,A,ABB  ,:??D,A,ABB'//448H8HH*//774;N;NN!!-00;;))* r   )r5   r3   r2   r6   r-   r,   r.   r/   r1   r0   r+   )NNNNNNNNNNN)__name__
__module____qualname____firstlineno____doc__r   r4   r   r   r	   strr   r
   r   r   r   r8   boolrA   __static_attributes__ r   r   r   r   0   s   5n ./ 7;)-$('+*."%)-1-1 )-9
!$z"239
 "#9
 SM	9

  }9
 #3-9
 sm9
 c]9
 !S*9
 k*9
 %-d<()+CCD%
9
 "#9
z  r   r   N)r   loggingr   typingr   r   r   r   opentelemetry.metricsr	   /opentelemetry.sdk.metrics._internal.aggregationr
   r   r   r   r   ,opentelemetry.sdk.metrics._internal.exemplarr   r   r   rC   _loggerr   r   rK   r   r   <module>rR      s\       0 0 ,   H
,<(,,S Sr   