Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/opentelemetry/util/_providers.py: 41%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

17 statements  

1# Copyright The OpenTelemetry Authors 

2# SPDX-License-Identifier: Apache-2.0 

3 

4from logging import getLogger 

5from os import environ 

6from typing import TYPE_CHECKING, TypeVar, cast 

7 

8if TYPE_CHECKING: 

9 from opentelemetry.metrics import MeterProvider 

10 from opentelemetry.trace import TracerProvider 

11 

12Provider = TypeVar("Provider", "TracerProvider", "MeterProvider") 

13 

14logger = getLogger(__name__) 

15 

16 

17def _load_provider(provider_environment_variable: str, provider: str) -> Provider: # type: ignore[type-var] 

18 # pylint: disable=import-outside-toplevel,no-name-in-module 

19 from opentelemetry.util._importlib_metadata import ( # noqa: PLC0415 

20 entry_points, 

21 ) 

22 

23 try: 

24 provider_name = cast( 

25 str, 

26 environ.get(provider_environment_variable, f"default_{provider}"), 

27 ) 

28 

29 return cast( 

30 Provider, 

31 next( # type: ignore 

32 iter( # type: ignore 

33 entry_points( # type: ignore 

34 group=f"opentelemetry_{provider}", 

35 name=provider_name, 

36 ) 

37 ) 

38 ).load()(), 

39 ) 

40 except Exception: # pylint: disable=broad-exception-caught 

41 logger.exception("Failed to load configured provider %s", provider) 

42 raise