Source code for kuhl_haus.mdp.helpers.observability

"""OpenTelemetry tracer and meter factory with version resolution.

Provides centralized access to instrumented tracers and meters with automatic
package version detection. Supports multi-package deployments where servers
and libraries report distinct versions.
"""
from opentelemetry import trace
from opentelemetry import metrics
from importlib.metadata import version, PackageNotFoundError

# Get version dynamically
package_name = "kuhl-haus-mdp"
try:
    __version__ = version(package_name)
except PackageNotFoundError:
    __version__ = "0.0.0-dev"  # Fallback for dev/editable installs

tracer = trace.get_tracer(package_name, __version__)
meter = metrics.get_meter(package_name, __version__)


def _resolve_version(pkg_name=None):
    """Resolve the version for a given package name.

    Args:
        pkg_name: Package name to look up. If None, returns
                  the default kuhl-haus-mdp version.

    Returns:
        Version string for the package, or the default
        __version__ if the package is not found.

    Examples:
        >>> _resolve_version()
        '1.2.3'  # current kuhl-haus-mdp version

        >>> _resolve_version("kuhl-haus-mdp-servers")
        '2.0.0'  # version of the specified package
    """
    if not pkg_name:
        return __version__
    try:
        return version(pkg_name)
    except PackageNotFoundError:
        return __version__


[docs] def get_tracer(name, pkg_name=None): """Get an OpenTelemetry tracer. Args: name: Tracer name (typically __name__). pkg_name: Optional package name to resolve version. Defaults to kuhl-haus-mdp. Examples: Default usage (resolves kuhl-haus-mdp version):: from kuhl_haus.mdp.helpers.observability import ( get_tracer, ) tracer = get_tracer(__name__) Cross-package usage (resolves another package's version):: tracer = get_tracer( __name__, pkg_name="kuhl-haus-mdp-servers", ) """ return trace.get_tracer(name, _resolve_version(pkg_name))
[docs] def get_meter(name, pkg_name=None): """Get an OpenTelemetry meter. Args: name: Meter name (typically __name__). pkg_name: Optional package name to resolve version. Defaults to kuhl-haus-mdp. Examples: Default usage (resolves kuhl-haus-mdp version):: from kuhl_haus.mdp.helpers.observability import ( get_meter, ) meter = get_meter(__name__) Cross-package usage (resolves another package's version):: meter = get_meter( __name__, pkg_name="kuhl-haus-mdp-servers", ) """ return metrics.get_meter(name, _resolve_version(pkg_name))