Commit 8fc05f42 by Sébastien Eustace

Fix handling of importlib.metadata for Python 3.8

parent 285767d7
from importlib_metadata import distributions
from poetry.packages import Package from poetry.packages import Package
from poetry.utils._compat import Path from poetry.utils._compat import Path
from poetry.utils._compat import metadata
from poetry.utils.env import Env from poetry.utils.env import Env
from .repository import Repository from .repository import Repository
...@@ -17,13 +17,12 @@ class InstalledRepository(Repository): ...@@ -17,13 +17,12 @@ class InstalledRepository(Repository):
repo = cls() repo = cls()
for distribution in sorted( for distribution in sorted(
distributions(path=env.sys_path), key=lambda d: str(d._path), metadata.distributions(path=env.sys_path), key=lambda d: str(d._path),
): ):
metadata = distribution.metadata name = distribution.metadata["name"]
name = metadata["name"] version = distribution.metadata["version"]
version = metadata["version"]
package = Package(name, version, version) package = Package(name, version, version)
package.description = metadata.get("summary", "") package.description = distribution.metadata.get("summary", "")
repo.add_package(package) repo.add_package(package)
......
...@@ -12,6 +12,13 @@ except ImportError: ...@@ -12,6 +12,13 @@ except ImportError:
from glob import glob from glob import glob
try: try:
from importlib import metadata
import zipfile as zipp
except ImportError:
import importlib_metadata as metadata
import zipp
try:
import urllib.parse as urlparse import urllib.parse as urlparse
except ImportError: except ImportError:
import urlparse import urlparse
......
import zipp
from importlib_metadata import PathDistribution
from poetry.repositories.installed_repository import InstalledRepository from poetry.repositories.installed_repository import InstalledRepository
from poetry.utils._compat import Path from poetry.utils._compat import Path
from poetry.utils._compat import metadata
from poetry.utils._compat import zipp
from poetry.utils.env import MockEnv as BaseMockEnv from poetry.utils.env import MockEnv as BaseMockEnv
...@@ -11,9 +10,11 @@ ENV_DIR = (FIXTURES_DIR / "installed").resolve() ...@@ -11,9 +10,11 @@ ENV_DIR = (FIXTURES_DIR / "installed").resolve()
SITE_PACKAGES = ENV_DIR / "lib" / "python3.7" / "site-packages" SITE_PACKAGES = ENV_DIR / "lib" / "python3.7" / "site-packages"
SRC = ENV_DIR / "src" SRC = ENV_DIR / "src"
INSTALLED_RESULTS = [ INSTALLED_RESULTS = [
PathDistribution(SITE_PACKAGES / "cleo-0.7.6.dist-info"), metadata.PathDistribution(SITE_PACKAGES / "cleo-0.7.6.dist-info"),
PathDistribution(SRC / "pendulum" / "pendulum.egg-info"), metadata.PathDistribution(SRC / "pendulum" / "pendulum.egg-info"),
PathDistribution(zipp.Path(str(SITE_PACKAGES / "foo-0.1.0-py3.8.egg"), "EGG-INFO")), metadata.PathDistribution(
zipp.Path(str(SITE_PACKAGES / "foo-0.1.0-py3.8.egg"), "EGG-INFO")
),
] ]
...@@ -25,7 +26,8 @@ class MockEnv(BaseMockEnv): ...@@ -25,7 +26,8 @@ class MockEnv(BaseMockEnv):
def test_load(mocker): def test_load(mocker):
mocker.patch( mocker.patch(
"importlib_metadata.Distribution.discover", return_value=INSTALLED_RESULTS "poetry.utils._compat.metadata.Distribution.discover",
return_value=INSTALLED_RESULTS,
) )
mocker.patch( mocker.patch(
"poetry.vcs.git.Git.rev_parse", "poetry.vcs.git.Git.rev_parse",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment