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( 

18 provider_environment_variable: str, provider: str 

19) -> Provider: # type: ignore[type-var] 

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

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

22 entry_points, 

23 ) 

24 

25 try: 

26 provider_name = cast( 

27 str, 

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

29 ) 

30 

31 return cast( 

32 Provider, 

33 next( # type: ignore 

34 iter( # type: ignore 

35 entry_points( # type: ignore 

36 group=f"opentelemetry_{provider}", 

37 name=provider_name, 

38 ) 

39 ) 

40 ).load()(), 

41 ) 

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

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

44 raise