Skip to content

Commit d881aea

Browse files
authored
Add lazy import mechanism to the base package (#19838)
1 parent 8c28772 commit d881aea

File tree

29 files changed

+590
-466
lines changed

29 files changed

+590
-466
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add lazy import mechanism
Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,11 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4-
from datadog_checks.base.agent import datadog_agent
4+
import lazy_loader
55

6-
from .__about__ import __version__
7-
from .checks import AgentCheck
8-
from .checks.openmetrics import OpenMetricsBaseCheck
9-
from .checks.openmetrics.v2.base import OpenMetricsBaseCheckV2
10-
from .config import is_affirmative
11-
from .errors import ConfigurationError
12-
from .utils.common import ensure_bytes, ensure_unicode, to_native_string, to_string
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
137

14-
if datadog_agent.get_config('use_boringssl'):
8+
if __getattr__('datadog_agent').get_config('use_boringssl'):
159
import urllib3.contrib.pyopenssl
1610

1711
urllib3.contrib.pyopenssl.inject_into_urllib3()
18-
19-
# Windows-only
20-
try:
21-
from .checks.win import PDHBaseCheck
22-
except ImportError:
23-
PDHBaseCheck = None
24-
25-
# Windows-only and Python 3+
26-
try:
27-
from .checks.windows.perf_counters import PerfCountersBaseCheck
28-
except Exception:
29-
PerfCountersBaseCheck = None
30-
31-
# Kubernetes dep will not always be installed
32-
try:
33-
from .checks.kube_leader import KubeLeaderElectionBaseCheck
34-
except ImportError:
35-
KubeLeaderElectionBaseCheck = None
36-
37-
__all__ = [
38-
'__version__',
39-
'AgentCheck',
40-
'KubeLeaderElectionBaseCheck',
41-
'OpenMetricsBaseCheck',
42-
'OpenMetricsBaseCheckV2',
43-
'PDHBaseCheck',
44-
'PerfCountersBaseCheck',
45-
'ConfigurationError',
46-
'ensure_bytes',
47-
'ensure_unicode',
48-
'is_affirmative',
49-
'to_native_string',
50-
'to_string', # For backwards compat (was renamed to `to_native_string`).
51-
]
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .__about__ import __version__
5+
from .agent import datadog_agent
6+
from .checks import AgentCheck
7+
from .checks.kube_leader import KubeLeaderElectionBaseCheck
8+
from .checks.openmetrics import OpenMetricsBaseCheck
9+
from .checks.openmetrics.v2.base import OpenMetricsBaseCheckV2
10+
from .checks.win import PDHBaseCheck
11+
from .checks.windows.perf_counters import PerfCountersBaseCheck
12+
from .config import is_affirmative
13+
from .errors import ConfigurationError
14+
from .utils.common import ensure_bytes, ensure_unicode, to_native_string, to_string
15+
16+
__all__ = [
17+
'__version__',
18+
'AgentCheck',
19+
'ConfigurationError',
20+
'KubeLeaderElectionBaseCheck',
21+
'OpenMetricsBaseCheck',
22+
'OpenMetricsBaseCheckV2',
23+
'PDHBaseCheck',
24+
'PerfCountersBaseCheck',
25+
'datadog_agent',
26+
'ensure_bytes',
27+
'ensure_unicode',
28+
'is_affirmative',
29+
'to_native_string',
30+
'to_string',
31+
]
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
import lazy_loader
45

5-
from .base import AgentCheck
6-
from .network import EventType, NetworkCheck, Status
7-
8-
__all__ = ['AgentCheck', 'NetworkCheck', 'Status', 'EventType']
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .base import AgentCheck
5+
from .network import EventType, NetworkCheck, Status
6+
7+
__all__ = ['AgentCheck', 'EventType', 'NetworkCheck', 'Status']
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
import lazy_loader
45

5-
from .base_check import KubeLeaderElectionBaseCheck
6-
from .mixins import KubeLeaderElectionMixin
7-
from .record import ElectionRecordAnnotation, ElectionRecordLease
8-
9-
__all__ = ['KubeLeaderElectionMixin', 'ElectionRecordAnnotation', 'ElectionRecordLease', 'KubeLeaderElectionBaseCheck']
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .base_check import KubeLeaderElectionBaseCheck
5+
from .mixins import KubeLeaderElectionMixin
6+
from .record import ElectionRecordAnnotation, ElectionRecordLease
7+
8+
__all__ = ['ElectionRecordAnnotation', 'ElectionRecordLease', 'KubeLeaderElectionBaseCheck', 'KubeLeaderElectionMixin']
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
import lazy_loader
5+
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .base import KubeletBase
5+
6+
__all__ = ['KubeletBase']
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
import lazy_loader
45

5-
6-
from .base_check import OpenMetricsBaseCheck
7-
8-
__all__ = ['OpenMetricsBaseCheck']
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .base_check import OpenMetricsBaseCheck
5+
6+
__all__ = ['OpenMetricsBaseCheck']
Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
# (C) Datadog, Inc. 2020-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4-
from .counter import get_counter
5-
from .counter_gauge import get_counter_gauge
6-
from .gauge import get_gauge
7-
from .histogram import get_histogram
8-
from .metadata import get_metadata
9-
from .rate import get_rate
10-
from .service_check import get_service_check
11-
from .summary import get_summary
12-
from .temporal_percent import get_temporal_percent
13-
from .time_elapsed import get_time_elapsed
4+
import lazy_loader
5+
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .counter import get_counter
5+
from .counter_gauge import get_counter_gauge
6+
from .gauge import get_gauge
7+
from .histogram import get_histogram
8+
from .metadata import get_metadata
9+
from .rate import get_rate
10+
from .service_check import get_service_check
11+
from .summary import get_summary
12+
from .temporal_percent import get_temporal_percent
13+
from .time_elapsed import get_time_elapsed
14+
15+
__all__ = [
16+
'get_counter',
17+
'get_counter_gauge',
18+
'get_gauge',
19+
'get_histogram',
20+
'get_metadata',
21+
'get_rate',
22+
'get_service_check',
23+
'get_summary',
24+
'get_temporal_percent',
25+
'get_time_elapsed',
26+
]
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
import lazy_loader
45

5-
from .base_check import GenericPrometheusCheck, PrometheusScraper
6-
from .mixins import PrometheusFormat, UnknownFormatError
7-
from .prometheus_base import PrometheusCheck
8-
9-
__all__ = ['PrometheusFormat', 'UnknownFormatError', 'PrometheusCheck', 'GenericPrometheusCheck', 'PrometheusScraper']
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .base_check import GenericPrometheusCheck, PrometheusScraper
5+
from .mixins import PrometheusFormat, UnknownFormatError
6+
from .prometheus_base import PrometheusCheck
7+
8+
__all__ = ['GenericPrometheusCheck', 'PrometheusCheck', 'PrometheusFormat', 'PrometheusScraper', 'UnknownFormatError']
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
import lazy_loader
45

5-
from .winpdh import WinPDHCounter
6-
from .winpdh_base import PDHBaseCheck
7-
8-
__all__ = ['PDHBaseCheck', 'WinPDHCounter']
6+
__getattr__, __dir__, __all__ = lazy_loader.attach_stub(__name__, __file__)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# (C) Datadog, Inc. 2025-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .winpdh import WinPDHCounter
5+
from .winpdh_base import PDHBaseCheck
6+
7+
__all__ = ['PDHBaseCheck', 'WinPDHCounter']

0 commit comments

Comments
 (0)