Preview: metrics.py
Size: 1.42 KB
//proc/thread-self/root/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/metrics.py
import time
from typing import TYPE_CHECKING, Any, Optional
import sentry_sdk
from sentry_sdk.utils import format_attribute
if TYPE_CHECKING:
from sentry_sdk._types import Attributes, Metric, MetricType
def _capture_metric(
name: str,
metric_type: "MetricType",
value: float,
unit: "Optional[str]" = None,
attributes: "Optional[Attributes]" = None,
) -> None:
attrs: "Attributes" = {}
if attributes:
for k, v in attributes.items():
attrs[k] = format_attribute(v)
metric: "Metric" = {
"timestamp": time.time(),
"trace_id": None,
"span_id": None,
"name": name,
"type": metric_type,
"value": float(value),
"unit": unit,
"attributes": attrs,
}
sentry_sdk.get_current_scope()._capture_metric(metric)
def count(
name: str,
value: float,
unit: "Optional[str]" = None,
attributes: "Optional[dict[str, Any]]" = None,
) -> None:
_capture_metric(name, "counter", value, unit, attributes)
def gauge(
name: str,
value: float,
unit: "Optional[str]" = None,
attributes: "Optional[dict[str, Any]]" = None,
) -> None:
_capture_metric(name, "gauge", value, unit, attributes)
def distribution(
name: str,
value: float,
unit: "Optional[str]" = None,
attributes: "Optional[dict[str, Any]]" = None,
) -> None:
_capture_metric(name, "distribution", value, unit, attributes)
Directory Contents
Dirs: 5 × Files: 36