Skip to content

Commit ff71225

Browse files
Refactor package imports to use importlib for better compatibility
1 parent 8be8400 commit ff71225

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

asimov/__init__.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,25 @@
1010
import os
1111
import logging
1212

13-
from pkg_resources import DistributionNotFound, get_distribution, resource_string
13+
try:
14+
from importlib.metadata import version, PackageNotFoundError
15+
from importlib.resources import files
16+
except ImportError:
17+
from importlib_metadata import version, PackageNotFoundError
18+
from importlib_resources import files
1419

1520
try:
16-
__version__ = get_distribution(__name__).version
17-
except DistributionNotFound:
21+
__version__ = version(__name__)
22+
except PackageNotFoundError:
1823
# package is not installed
1924
__version__ = "dev"
20-
pass
2125

2226
try:
2327
import ConfigParser as configparser
2428
except ImportError:
2529
import configparser
26-
default_config = resource_string(__name__, "{}.conf".format(__packagename__))
30+
31+
default_config = files(__name__).joinpath(f"{__packagename__}.conf").read_bytes()
2732

2833
config = configparser.ConfigParser()
2934
# if not config_file:

asimov/analysis.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,12 @@ def make_config(self, filename, template_directory=None, dryrun=False):
314314
if hasattr(pipeline, "config_template"):
315315
template_file = pipeline.config_template
316316
else:
317-
from pkg_resources import resource_filename
317+
try:
318+
from importlib.resources import files
319+
except ImportError:
320+
from importlib_resources import files
318321

319-
template_file = resource_filename("asimov", f"configs/{template}")
322+
template_file = str(files("asimov").joinpath(f"configs/{template}"))
320323

321324
liq = Liquid(template_file)
322325
rendered = liq.render(production=self, analysis=self, config=config)

asimov/cli/report.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import click
1010
import pytz
1111
import yaml
12-
from pkg_resources import resource_filename
12+
try:
13+
from importlib.resources import files
14+
except ImportError:
15+
from importlib_resources import files
1316

1417
import otter
1518
import otter.bootstrap as bt
@@ -45,7 +48,7 @@ def html(event, webdir):
4548
f"{webdir}/index.html",
4649
author="Asimov",
4750
title="Asimov project report",
48-
theme_location=resource_filename("asimov.cli", "report-theme"),
51+
theme_location=str(files("asimov.cli").joinpath("report-theme")),
4952
config_file=os.path.join(".asimov", "asimov.conf"),
5053
)
5154
with report:

tests/test_asimov.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55
from importlib import reload
66
import asimov
77

8-
from pkg_resources import DistributionNotFound
8+
try:
9+
from importlib.metadata import PackageNotFoundError
10+
except ImportError:
11+
from importlib_metadata import PackageNotFoundError
912

1013
class TestAsimovBase(unittest.TestCase):
1114

12-
@patch("pkg_resources.get_distribution",
15+
@patch("importlib.metadata.version",
1316
**{
14-
'side_effect': DistributionNotFound,#("Not found", "asimov"),
17+
'side_effect': PackageNotFoundError,
1518
})
1619
def testImports(self, blah):
1720
reload(asimov)

0 commit comments

Comments
 (0)