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

16 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:35 +0000

1# Copyright The OpenTelemetry Authors 

2# 

3# Licensed under the Apache License, Version 2.0 (the "License"); 

4# you may not use this file except in compliance with the License. 

5# You may obtain a copy of the License at 

6# 

7# http://www.apache.org/licenses/LICENSE-2.0 

8# 

9# Unless required by applicable law or agreed to in writing, software 

10# distributed under the License is distributed on an "AS IS" BASIS, 

11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

12# See the License for the specific language governing permissions and 

13# limitations under the License. 

14 

15from logging import getLogger 

16from os import environ 

17from typing import TYPE_CHECKING, TypeVar, cast 

18 

19from pkg_resources import iter_entry_points 

20 

21if TYPE_CHECKING: 

22 from opentelemetry.metrics import MeterProvider 

23 from opentelemetry.trace import TracerProvider 

24 

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

26 

27logger = getLogger(__name__) 

28 

29 

30def _load_provider( 

31 provider_environment_variable: str, provider: str 

32) -> Provider: 

33 try: 

34 entry_point = next( 

35 iter_entry_points( 

36 f"opentelemetry_{provider}", 

37 name=cast( 

38 str, 

39 environ.get( 

40 provider_environment_variable, 

41 f"default_{provider}", 

42 ), 

43 ), 

44 ) 

45 ) 

46 return cast( 

47 Provider, 

48 entry_point.load()(), 

49 ) 

50 except Exception: # pylint: disable=broad-except 

51 logger.error("Failed to load configured provider %s", provider) 

52 raise