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
« 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.
15from logging import getLogger
16from os import environ
17from typing import TYPE_CHECKING, TypeVar, cast
19from pkg_resources import iter_entry_points
21if TYPE_CHECKING:
22 from opentelemetry.metrics import MeterProvider
23 from opentelemetry.trace import TracerProvider
25Provider = TypeVar("Provider", "TracerProvider", "MeterProvider")
27logger = getLogger(__name__)
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