Skip to content

Commit 28dc035

Browse files
authored
Remove dependency on pkg_resources in favour of importlib (#181)
1 parent eb3c91d commit 28dc035

File tree

4 files changed

+30
-12
lines changed

4 files changed

+30
-12
lines changed

src/workflows/services/__init__.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
import pkg_resources
3+
from importlib.metadata import entry_points
44

55

66
def lookup(service: str):
@@ -25,10 +25,7 @@ def get_known_services():
2525
setattr(
2626
get_known_services,
2727
"cache",
28-
{
29-
e.name: e.load
30-
for e in pkg_resources.iter_entry_points("workflows.services")
31-
},
28+
{e.name: e.load for e in entry_points()["workflows.services"]},
3229
)
3330
register = get_known_services.cache.copy()
3431
return register

src/workflows/transport/__init__.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
import argparse
44
import optparse
5+
from importlib.metadata import entry_points
56
from typing import TYPE_CHECKING, Type
67

7-
import pkg_resources
8-
98
if TYPE_CHECKING:
109
from .common_transport import CommonTransport
1110

@@ -61,9 +60,6 @@ def get_known_transports() -> dict[str, Type[CommonTransport]]:
6160
setattr(
6261
get_known_transports,
6362
"cache",
64-
{
65-
e.name: e.load()
66-
for e in pkg_resources.iter_entry_points("workflows.transport")
67-
},
63+
{e.name: e.load() for e in entry_points()["workflows.transport"]},
6864
)
6965
return get_known_transports.cache.copy() # type: ignore

tests/services/test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
from __future__ import annotations
22

33
import workflows.services
4+
from workflows.services.common_service import CommonService
45

56

67
def test_known_services_is_a_dictionary():
78
"""Check services register build in CommonService."""
89
assert isinstance(workflows.services.get_known_services(), dict)
10+
11+
12+
def test_enumerate_services():
13+
"""Verify we can discover the installed services."""
14+
services = workflows.services.get_known_services()
15+
assert services.keys() == {
16+
"SampleConsumer",
17+
"SampleProducer",
18+
"SampleTxn",
19+
"SampleTxnProducer",
20+
}
21+
assert all([issubclass(service(), CommonService) for service in services.values()])

tests/transport/test.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
from __future__ import annotations
22

33
import workflows.transport
4+
from workflows.transport.common_transport import CommonTransport
45

56

67
def test_known_transports_is_a_dictionary():
78
"""Check transport register build in CommonTransport."""
8-
assert isinstance(workflows.transport.get_known_transports(), dict)
9+
transports = workflows.transport.get_known_transports()
10+
print(transports)
11+
assert isinstance(transports, dict)
12+
13+
14+
def test_enumerate_transports():
15+
"""Verify we can discover the installed transports."""
16+
transports = workflows.transport.get_known_transports()
17+
assert transports.keys() == {"OfflineTransport", "PikaTransport", "StompTransport"}
18+
assert all(
19+
[issubclass(transport, CommonTransport) for transport in transports.values()]
20+
)
921

1022

1123
def test_load_any_transport():

0 commit comments

Comments
 (0)