Skip to content

Commit

Permalink
fix: use pypi importlib_metadata on python < 3.10 (#1467)
Browse files Browse the repository at this point in the history
  • Loading branch information
frostming authored Oct 27, 2022
1 parent 8ef9276 commit 012ced9
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 20 deletions.
1 change: 1 addition & 0 deletions news/1467.bugfix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Use `importlib-metadata` from PyPI for Python < 3.10.
2 changes: 1 addition & 1 deletion pdm.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ dependencies = [
"cachecontrol[filecache]>=0.12.11",
"tomli>=1.1.0; python_version < \"3.11\"",
"typing-extensions; python_version < \"3.8\"",
"importlib-metadata<5.0.0; python_version < \"3.8\"",
"importlib-metadata>=3.6; python_version < \"3.10\"",
"certifi>=2022.6.15",
]
name = "pdm"
Expand Down
8 changes: 6 additions & 2 deletions src/pdm/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,16 @@


if sys.version_info >= (3, 8):
import importlib.metadata as importlib_metadata
from typing import Literal, Protocol, TypedDict
else:
import importlib_metadata
from typing_extensions import Literal, Protocol, TypedDict

if sys.version_info >= (3, 10):
import importlib.metadata as importlib_metadata
else:
import importlib_metadata


Distribution = importlib_metadata.Distribution


Expand Down
11 changes: 6 additions & 5 deletions src/pdm/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import pkgutil
import sys
from pathlib import Path
from typing import Any, cast
from typing import Any, Iterable, cast

from resolvelib import Resolver

Expand Down Expand Up @@ -238,10 +238,11 @@ def my_plugin(core: pdm.core.Core) -> None:
...
```
"""
entry_points = importlib_metadata.entry_points()
for plugin in itertools.chain(
entry_points.get("pdm", []), entry_points.get("pdm.plugin", [])
):
entry_points: Iterable[importlib_metadata.EntryPoint] = itertools.chain(
importlib_metadata.entry_points(group="pdm"),
importlib_metadata.entry_points(group="pdm.plugin"),
)
for plugin in entry_points:
try:
plugin.load()(self)
except Exception as e:
Expand Down
22 changes: 11 additions & 11 deletions tests/test_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def test_plugin_new_command(invoke, mocker, project, core):
mocker.patch.object(
importlib_metadata,
"entry_points",
return_value={"pdm": [make_entry_point(new_command)]},
return_value=[make_entry_point(new_command)],
)
core.init_parser()
core.load_plugins()
Expand All @@ -56,7 +56,7 @@ def test_plugin_replace_command(invoke, mocker, project, core):
mocker.patch.object(
importlib_metadata,
"entry_points",
return_value={"pdm": [make_entry_point(replace_command)]},
return_value=[make_entry_point(replace_command)],
)
core.init_parser()
core.load_plugins()
Expand All @@ -72,9 +72,7 @@ def test_load_multiple_plugings(invoke, mocker, core):
mocker.patch.object(
importlib_metadata,
"entry_points",
return_value={
"pdm": [make_entry_point(new_command), make_entry_point(add_new_config)]
},
return_value=[make_entry_point(new_command), make_entry_point(add_new_config)],
)
core.init_parser()
core.load_plugins()
Expand All @@ -87,13 +85,15 @@ def test_load_multiple_plugings(invoke, mocker, core):


def test_old_entry_point_compatibility(invoke, mocker, core):
def get_entry_points(group):
if group == "pdm":
return [make_entry_point(new_command)]
if group == "pdm.plugin":
return [make_entry_point(add_new_config)]
return []

mocker.patch.object(
importlib_metadata,
"entry_points",
return_value={
"pdm": [make_entry_point(new_command)],
"pdm.plugin": [make_entry_point(add_new_config)],
},
importlib_metadata, "entry_points", side_effect=get_entry_points
)
core.init_parser()
core.load_plugins()
Expand Down

0 comments on commit 012ced9

Please sign in to comment.