Skip to content

Commit 71f951d

Browse files
committed
refactor(database): Let the ImportError exception propagate
Instead of catching the exception during import of the database driver, change the behavior to let the `ImportError` exception propagate. This allow to lazy-import the drivers and gracefully handle the missing dependencies during the configuration.
1 parent ae509e6 commit 71f951d

File tree

4 files changed

+7
-26
lines changed

4 files changed

+7
-26
lines changed

src/powerapi/database/__init__.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,3 @@
3030
from powerapi.database.driver import ReadableDatabase, WritableDatabase, ReadableWritableDatabase, DatabaseDriver
3131
from powerapi.database.codec import CodecOptions, ReportEncoder, ReportEncoderRegistry, ReportDecoder, ReportDecoderRegistry
3232
from powerapi.database.exceptions import DBError, ConnectionFailed, NotConnected, WriteFailed, ReadFailed
33-
from powerapi.database.csv import CSVInput, CSVOutput
34-
from powerapi.database.mongodb import MongodbInput, MongodbOutput
35-
from powerapi.database.opentsdb import OpenTSDB
36-
from powerapi.database.influxdb2 import InfluxDB2
37-
from powerapi.database.prometheus import Prometheus
38-
from powerapi.database.socket import Socket
39-
from powerapi.database.json import JsonInput, JsonOutput

src/powerapi/database/mongodb/driver.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,14 @@
2929

3030
from collections.abc import Iterable
3131

32+
from pymongo import MongoClient
33+
from pymongo.errors import PyMongoError
34+
3235
from powerapi.database.driver import DatabaseDriver, ReadableDatabase, WritableDatabase
3336
from powerapi.database.exceptions import ConnectionFailed, ReadFailed, WriteFailed
3437
from powerapi.database.mongodb.codecs import ReportEncoders, ReportDecoders
3538
from powerapi.report import Report
3639

37-
try:
38-
from pymongo import MongoClient
39-
from pymongo.errors import PyMongoError
40-
except ImportError:
41-
MongoClient = None
42-
PyMongoError = None
43-
4440

4541
class _MongodbDriver(DatabaseDriver):
4642
"""

src/powerapi/database/opentsdb/driver.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,13 @@
2929

3030
from collections.abc import Iterable
3131

32+
from opentsdb import TSDBClient, TSDBClientException
33+
3234
from powerapi.database.driver import WritableDatabase
3335
from powerapi.database.exceptions import ConnectionFailed, WriteFailed
3436
from powerapi.database.opentsdb.codecs import ReportEncoders
3537
from powerapi.report import Report
3638

37-
try:
38-
from opentsdb import TSDBClient, TSDBClientException
39-
except ImportError:
40-
TSDBClient = None
41-
TSDBClientException = None
42-
4339

4440
class OpenTSDB(WritableDatabase):
4541
"""

src/powerapi/database/prometheus/driver.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,14 @@
2929

3030
from collections.abc import Iterable
3131

32+
from prometheus_client import start_http_server, CollectorRegistry
33+
3234
from powerapi.database.driver import WritableDatabase
3335
from powerapi.database.exceptions import ConnectionFailed, WriteFailed
3436
from powerapi.database.prometheus.codecs import ReportEncoders, EncoderOptions
3537
from powerapi.database.prometheus.collectors import ReportProcessorFactory
3638
from powerapi.report import Report
3739

38-
try:
39-
from prometheus_client import start_http_server, CollectorRegistry
40-
except ImportError:
41-
start_http_server = None
42-
CollectorRegistry = None
43-
4440

4541
class Prometheus(WritableDatabase):
4642
"""

0 commit comments

Comments
 (0)