Skip to content

Commit 28c50a7

Browse files
committed
Add some doctests to cover all the changes.
1 parent 3d464ad commit 28c50a7

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

importlib_metadata/_compat/localize.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,27 @@ def dist(
1313
) -> importlib_metadata.Distribution:
1414
"""
1515
Ensure dist is an :class:`importlib_metadata.Distribution`.
16+
17+
>>> stdlib = importlib.metadata.PathDistribution('foo')
18+
>>> type(stdlib)
19+
<class 'importlib.metadata.PathDistribution'>
20+
>>> local = dist(stdlib)
21+
>>> type(local)
22+
<class 'importlib_metadata.PathDistribution'>
23+
24+
>>> class CustomDist(importlib.metadata.Distribution):
25+
... def read_text(self, name):
26+
... return
27+
... def locate_file(self, name):
28+
... return
29+
>>> subclass = CustomDist()
30+
>>> type(subclass)
31+
<class 'importlib_metadata._compat.localize.CustomDist'>
32+
>>> import pytest
33+
>>> with pytest.warns(UserWarning, match="Unrecognized distribution subclass <class 'importlib_metadata._compat.localize.CustomDist'>"):
34+
... local = dist(subclass)
35+
>>> type(local) is type(subclass)
36+
True
1637
"""
1738
if isinstance(dist, importlib_metadata.Distribution):
1839
return dist
@@ -30,6 +51,14 @@ def dist(
3051
def message(
3152
input: importlib_metadata._adapters.Message | email.message.Message,
3253
) -> importlib_metadata._adapters.Message:
54+
"""
55+
Ensure a message is adapted to an importlib_metadata.Message.
56+
57+
>>> stdlib = email.message.Message()
58+
>>> local = message(stdlib)
59+
>>> type(local)
60+
<class 'importlib_metadata._adapters.Message'>
61+
"""
3362
if isinstance(input, importlib_metadata._adapters.Message):
3463
return input
3564
return importlib_metadata._adapters.Message(input)
@@ -38,6 +67,16 @@ def message(
3867
def package_path(
3968
input: importlib_metadata.PackagePath | importlib.metadata.PackagePath,
4069
) -> importlib_metadata.PackagePath:
70+
"""
71+
Ensure a package path is adapted to an importlib_metadata.PackagePath.
72+
73+
>>> stdlib = importlib.metadata.PackagePath('foo')
74+
>>> type(stdlib)
75+
<class 'importlib.metadata.PackagePath'>
76+
>>> local = package_path(stdlib)
77+
>>> type(local)
78+
<class 'importlib_metadata.PackagePath'>
79+
"""
4180
if isinstance(input, importlib_metadata.PackagePath):
4281
return input
4382
replacement = importlib_metadata.PackagePath(input)

0 commit comments

Comments
 (0)