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

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 

8from opentelemetry.util._importlib_metadata import entry_points 

9 

10if TYPE_CHECKING: 

11 from opentelemetry.metrics import MeterProvider 

12 from opentelemetry.trace import TracerProvider 

13 

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

15 

16logger = getLogger(__name__) 

17 

18 

19def _load_provider( 

20 provider_environment_variable: str, provider: str 

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

22 try: 

23 provider_name = cast( 

24 str, 

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

26 ) 

27 

28 return cast( 

29 Provider, 

30 next( # type: ignore 

31 iter( # type: ignore 

32 entry_points( # type: ignore 

33 group=f"opentelemetry_{provider}", 

34 name=provider_name, 

35 ) 

36 ) 

37 ).load()(), 

38 ) 

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

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

41 raise