Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pdm-pep517 for
openSUSE:Factory checked in at 2022-10-29 20:16:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pdm-pep517 (Old)
and /work/SRC/openSUSE:Factory/.python-pdm-pep517.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pdm-pep517"
Sat Oct 29 20:16:40 2022 rev:6 rq:1032051 version:1.0.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pdm-pep517/python-pdm-pep517.changes
2022-10-06 07:42:21.268707392 +0200
+++
/work/SRC/openSUSE:Factory/.python-pdm-pep517.new.2275/python-pdm-pep517.changes
2022-10-29 20:17:58.194486594 +0200
@@ -1,0 +2,12 @@
+Fri Oct 28 19:49:57 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to 1.0.5
+ * README.md: Fix Dynamic Version example by @hosiet in #115
+ * Support license files located in subdirectories by @crai0 in #119
+ * fix: update implementation of PEP 639 by @frostming in #120
+ * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #121
+ * feat: expand vars in req url by @frostming in #127
+ * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #124
+ * tests: Configure git for scm tests by @stanislavlevin in #126
+
+-------------------------------------------------------------------
Old:
----
pdm-pep517-1.0.4.tar.gz
New:
----
pdm-pep517-1.0.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pdm-pep517.spec ++++++
--- /var/tmp/diff_new_pack.6jjVlS/_old 2022-10-29 20:17:58.594488725 +0200
+++ /var/tmp/diff_new_pack.6jjVlS/_new 2022-10-29 20:17:58.598488747 +0200
@@ -26,7 +26,7 @@
%endif
Name: python-pdm-pep517%{psuffix}
-Version: 1.0.4
+Version: 1.0.5
Release: 0
Summary: Python Development Master
License: MIT
++++++ pdm-pep517-1.0.4.tar.gz -> pdm-pep517-1.0.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/PKG-INFO
new/pdm-pep517-1.0.5/PKG-INFO
--- old/pdm-pep517-1.0.4/PKG-INFO 2022-08-06 17:29:42.799394800 +0200
+++ new/pdm-pep517-1.0.5/PKG-INFO 2022-10-24 04:00:30.637456200 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pdm-pep517
-Version: 1.0.4
+Version: 1.0.5
Summary: A PEP 517 backend for PDM that supports PEP 621 metadata
License: MIT
Keywords: packaging,PEP 517,build
@@ -106,7 +106,7 @@
When building from a source tree where SCM is not available, you can use the
env var `PDM_PEP517_SCM_VERSION` to pretend the version is set.
```bash
-PDM_PEP517_VERSION=0.1.0 python -m build
+PDM_PEP517_SCM_VERSION=0.1.0 python -m build
```
## Writing SCM version to file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/README.md
new/pdm-pep517-1.0.5/README.md
--- old/pdm-pep517-1.0.4/README.md 2022-08-06 17:29:41.919385200 +0200
+++ new/pdm-pep517-1.0.5/README.md 2022-10-24 04:00:28.897448800 +0200
@@ -87,7 +87,7 @@
When building from a source tree where SCM is not available, you can use the
env var `PDM_PEP517_SCM_VERSION` to pretend the version is set.
```bash
-PDM_PEP517_VERSION=0.1.0 python -m build
+PDM_PEP517_SCM_VERSION=0.1.0 python -m build
```
## Writing SCM version to file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/__init__.py
new/pdm-pep517-1.0.5/pdm/pep517/__init__.py
--- old/pdm-pep517-1.0.4/pdm/pep517/__init__.py 2022-08-06 17:29:41.923385100
+0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/__init__.py 2022-10-24 04:00:28.897448800
+0200
@@ -1 +1 @@
-__version__ = "1.0.4"
+__version__ = "1.0.5"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/api.py
new/pdm-pep517-1.0.5/pdm/pep517/api.py
--- old/pdm-pep517-1.0.4/pdm/pep517/api.py 2022-08-06 17:29:41.927385300
+0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/api.py 2022-10-24 04:00:28.909448900
+0200
@@ -3,6 +3,7 @@
"""
from __future__ import annotations
+import shutil
from pathlib import Path
from typing import Any, Mapping
@@ -47,11 +48,10 @@
with (dist_info / "METADATA").open("w", encoding="utf-8") as f:
builder._write_metadata_file(f)
- (dist_info / "license_files").mkdir(exist_ok=True)
for license_file in builder.find_license_files():
- (dist_info / "license_files" / license_file).write_bytes(
- Path(license_file).read_bytes()
- )
+ full_path = dist_info / "licenses" / license_file
+ full_path.parent.mkdir(exist_ok=True, parents=True)
+ shutil.copy2(license_file, full_path)
return dist_info.name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/license.py
new/pdm-pep517-1.0.5/pdm/pep517/license.py
--- old/pdm-pep517-1.0.4/pdm/pep517/license.py 2022-08-06 17:29:41.927385300
+0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/license.py 2022-10-24 04:00:28.909448900
+0200
@@ -26,7 +26,7 @@
"""Normalize a SPDX license expression."""
validate_result = _licensing.validate(expression)
if validate_result.errors:
- raise MetadataError("license-expression", validate_result.errors)
+ raise MetadataError("license", validate_result.errors)
result = validate_result.normalized_expression or expression
if result != expression:
warnings.warn(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/metadata.py
new/pdm-pep517-1.0.5/pdm/pep517/metadata.py
--- old/pdm-pep517-1.0.4/pdm/pep517/metadata.py 2022-08-06 17:29:41.927385300
+0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/metadata.py 2022-10-24 04:00:28.909448900
+0200
@@ -5,12 +5,11 @@
from pathlib import Path
from typing import Any, Callable, Generic, Iterable, Mapping, TypeVar, cast
-from pdm.pep517._vendor.packaging.requirements import Requirement
+from pdm.pep517._vendor.packaging.requirements import InvalidRequirement,
Requirement
from pdm.pep517.exceptions import MetadataError, PDMWarning, ProjectError
-from pdm.pep517.license import normalize_expression
from pdm.pep517.utils import (
cd,
- ensure_pep440_req,
+ expand_vars,
find_packages_iter,
merge_marker,
safe_name,
@@ -161,13 +160,6 @@
PDMWarning,
stacklevel=2,
)
- # if any(line.startswith("License :: ") for line in classifers):
- # show_warning(
- # "License classifiers are deprecated in favor of PEP 639 "
- # "'license-expression' field.",
- # PDMWarning,
- # stacklevel=2,
- # )
return sorted(classifers)
@@ -176,32 +168,34 @@
@property
def license_expression(self) -> str | None:
- if "license-expression" in self.data:
- if "license" in self.data:
- raise MetadataError(
- "license-expression",
- "Can't specify both 'license' and 'license-expression'
fields",
- )
- return normalize_expression(self.data["license-expression"])
- elif "license" in self.data and "text" in self.data["license"]:
+ if "license" in self.data:
+ if isinstance(self.data["license"], str):
+ return self.data["license"]
# show_warning(
- # "'license' field is deprecated in favor of
'license-expression'",
+ # "'license.text' subtable is deprecated in favor of string
'license' "
+ # "value",
# PDMWarning,
# stacklevel=2,
# )
- # TODO: do not validate legacy license text,
- # remove this after PEP 639 is finalized
- return self.data["license"]["text"]
- elif "license-expression" not in (self.dynamic or []):
- show_warning("'license-expression' is missing", PDMWarning,
stacklevel=2)
+ if "text" in self.data["license"]:
+ return self.data["license"]["text"]
+ show_warning("'license' is missing", PDMWarning, stacklevel=2)
return None
@property
def license_files(self) -> dict[str, list[str]]:
+ subtable_files = None
+ if (
+ "license" in self.data
+ and isinstance(self.data["license"], dict)
+ and "files" in self.data["license"]
+ ):
+ subtable_files = self.data["license"]["files"]
if "license-files" not in self.data:
- if self.data.get("license", {}).get("file"):
+ if subtable_files is not None:
# show_warning(
- # "'license.file' field is deprecated in favor of
'license-files'",
+ # "'license.files' subtable is deprecated in favor of "
+ # "'license-files'",
# PDMWarning,
# stacklevel=2,
# )
@@ -215,10 +209,10 @@
"AUTHORS*",
]
}
- if "license" in self.data:
+ if subtable_files is not None:
raise MetadataError(
"license-files",
- "Can't specify both 'license' and 'license-files' fields",
+ "Can't specify both 'license.files' and 'license-files'
fields",
)
rv = self.data["license-files"]
valid_keys = {"globs", "paths"} & set(rv)
@@ -233,7 +227,20 @@
def _convert_dependencies(
self, deps: list[str], field: str = "dependencies"
) -> list[str]:
- return list(filter(None, (ensure_pep440_req(dep, field) for dep in
deps)))
+ def convert_req(req: str) -> str | None:
+ """Discard all non-PEP 440 requirements, e.g. editable VCS
requirements."""
+
+ if req.strip().startswith("-e"):
+ return None
+ try:
+ r = Requirement(req)
+ except InvalidRequirement as e:
+ raise MetadataError(field, f"Invalid requirement {req!r}\n
{e}") from e
+ if r.url and "${" in r.url:
+ r.url = expand_vars(r.url, self.root.resolve().as_posix())
+ return str(r)
+
+ return list(filter(None, map(convert_req, deps)))
def _convert_optional_dependencies(
self, deps: Mapping[str, list[str]]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/utils.py
new/pdm-pep517-1.0.5/pdm/pep517/utils.py
--- old/pdm-pep517-1.0.4/pdm/pep517/utils.py 2022-08-06 17:29:41.931385300
+0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/utils.py 2022-10-24 04:00:28.909448900
+0200
@@ -5,17 +5,17 @@
import re
import sys
import sysconfig
+import urllib
import warnings
from contextlib import contextmanager
from fnmatch import fnmatchcase
from pathlib import Path
-from typing import Callable, Generator, Iterable
+from typing import Callable, Generator, Iterable, Match
from pdm.pep517._vendor.packaging import tags
from pdm.pep517._vendor.packaging.markers import Marker
-from pdm.pep517._vendor.packaging.requirements import InvalidRequirement,
Requirement
+from pdm.pep517._vendor.packaging.requirements import Requirement
from pdm.pep517._vendor.packaging.version import InvalidVersion, Version
-from pdm.pep517.exceptions import MetadataError
from pdm.pep517.macosx_platform import calculate_macosx_platform_tag
@@ -187,18 +187,6 @@
return None
-def ensure_pep440_req(req: str, field: str) -> str | None:
- """Discard all non-PEP 440 requirements, e.g. editable VCS requirements."""
-
- if req.strip().startswith("-e"):
- return None
- try:
- Requirement(req)
- except InvalidRequirement as e:
- raise MetadataError(field, f"Invalid requirement {req!r}\n {e}") from
e
- return req
-
-
def is_relative_path(target: Path, other: Path) -> bool:
try:
target.relative_to(other)
@@ -212,3 +200,18 @@
def show_warning(message: str, category: type[Warning], stacklevel: int = 1)
-> None:
"""A cached version of warnings.warn to avoid repeated warnings."""
warnings.warn(message, category, stacklevel + 1)
+
+
+def expand_vars(line: str, root: str) -> str:
+ """Expand environment variables in a string."""
+ if "$" not in line:
+ return line
+ line = line.replace("${PROJECT_ROOT}", root.lstrip("/"))
+
+ def replace_func(match: Match[str]) -> str:
+ rv = os.getenv(match.group(1))
+ if rv is None:
+ return match.group(0)
+ return urllib.parse.quote(rv)
+
+ return re.sub(r"\$\{(.+?)\}", replace_func, line)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/validator.py
new/pdm-pep517-1.0.5/pdm/pep517/validator.py
--- old/pdm-pep517-1.0.4/pdm/pep517/validator.py 2022-08-06
17:29:41.931385300 +0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/validator.py 2022-10-24
04:00:28.909448900 +0200
@@ -22,6 +22,7 @@
]
LICENSE_RULE = [
+ {"type": "string"},
{"type": "dict", "schema": {"file": {"type": "string", "required": True}}},
{"type": "dict", "schema": {"text": {"type": "string", "required": True}}},
]
@@ -53,7 +54,6 @@
"readme": {"oneof": README_RULE},
"requires-python": {"type": "string"},
"license": {"oneof": LICENSE_RULE},
- "license-expression": {"type": "string"},
"license-files": {"oneof": LICENSE_FILE_RULE},
"authors": AUTHOR_RULE,
"maintainers": AUTHOR_RULE,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pdm/pep517/wheel.py
new/pdm-pep517-1.0.5/pdm/pep517/wheel.py
--- old/pdm-pep517-1.0.4/pdm/pep517/wheel.py 2022-08-06 17:29:41.931385300
+0200
+++ new/pdm-pep517-1.0.5/pdm/pep517/wheel.py 2022-10-24 04:00:28.909448900
+0200
@@ -230,7 +230,7 @@
for license_file in self.find_license_files():
self._add_file(
- f"{dist_info}/license_files/{license_file}",
+ f"{dist_info}/licenses/{license_file}",
self.location / license_file,
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/pyproject.toml
new/pdm-pep517-1.0.5/pyproject.toml
--- old/pdm-pep517-1.0.4/pyproject.toml 2022-08-06 17:29:41.931385300 +0200
+++ new/pdm-pep517-1.0.5/pyproject.toml 2022-10-24 04:00:28.909448900 +0200
@@ -22,7 +22,7 @@
"Programming Language :: Python :: 3.10",
]
dependencies = []
-version = "1.0.4"
+version = "1.0.5"
[project.license]
text = "MIT"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/tests/conftest.py
new/pdm-pep517-1.0.5/tests/conftest.py
--- old/pdm-pep517-1.0.4/tests/conftest.py 2022-08-06 17:29:41.931385300
+0200
+++ new/pdm-pep517-1.0.5/tests/conftest.py 2022-10-24 04:00:28.909448900
+0200
@@ -13,6 +13,8 @@
shutil.copytree(project, tmp_path / project.name)
with utils.cd(tmp_path / project.name):
subprocess.check_call(["git", "init"])
+ subprocess.check_call(["git", "config", "user.email", "[email protected]"])
+ subprocess.check_call(["git", "config", "user.name", "Name"])
subprocess.check_call(["git", "add", "."])
subprocess.check_call(["git", "commit", "-m", "initial commit"])
subprocess.check_call(["git", "tag", "-a", "0.1.0", "-m", "version
0.1.0"])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pdm-pep517-1.0.4/tests/fixtures/projects/demo-no-license/pyproject.toml
new/pdm-pep517-1.0.5/tests/fixtures/projects/demo-no-license/pyproject.toml
--- old/pdm-pep517-1.0.4/tests/fixtures/projects/demo-no-license/pyproject.toml
2022-08-06 17:29:41.931385300 +0200
+++ new/pdm-pep517-1.0.5/tests/fixtures/projects/demo-no-license/pyproject.toml
2022-10-24 04:00:28.909448900 +0200
@@ -8,7 +8,7 @@
]
dynamic = ["version"]
requires-python = ">=3.5"
-license-expression = "MIT"
+license = "MIT"
dependencies = []
description = ""
name = "demo-module"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/tests/test_api.py
new/pdm-pep517-1.0.5/tests/test_api.py
--- old/pdm-pep517-1.0.4/tests/test_api.py 2022-08-06 17:29:41.935385500
+0200
+++ new/pdm-pep517-1.0.5/tests/test_api.py 2022-10-24 04:00:28.913448800
+0200
@@ -36,7 +36,7 @@
for name in ("pyproject.toml", "LICENSE"):
assert name not in zip_names
- assert "demo_module-0.1.0.dist-info/license_files/LICENSE" in zip_names
+ assert "demo_module-0.1.0.dist-info/licenses/LICENSE" in zip_names
def test_build_package(tmp_path: Path) -> None:
@@ -200,7 +200,7 @@
namelist = zf.namelist()
assert "demo_package.pth" in namelist
assert "__editables_demo_package.py" in namelist
- assert "demo_package-0.1.0.dist-info/license_files/LICENSE" in
namelist
+ assert "demo_package-0.1.0.dist-info/licenses/LICENSE" in namelist
metadata = email.message_from_bytes(
zf.read("demo_package-0.1.0.dist-info/METADATA")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/tests/test_metadata.py
new/pdm-pep517-1.0.5/tests/test_metadata.py
--- old/pdm-pep517-1.0.4/tests/test_metadata.py 2022-08-06 17:29:41.935385500
+0200
+++ new/pdm-pep517-1.0.5/tests/test_metadata.py 2022-10-24 04:00:28.913448800
+0200
@@ -158,24 +158,6 @@
)
-def test_both_license_and_license_expression_error() -> None:
- metadata = make_metadata(
- {
- "description": "test package",
- "name": "demo",
- "version": "0.1.0",
- "license": {"text": "MIT"},
- "license-expression": "MIT",
- }
- )
- with pytest.raises(
- ValueError,
- match="license-expression: Can't specify both 'license' and "
- "'license-expression' fields",
- ):
- metadata.license_expression
-
-
@pytest.mark.deprecation
@pytest.mark.xfail(reason="Don't emit warning until PEP 639 is accepted")
def test_deprecated_license_field_warning(recwarn) -> None:
@@ -204,9 +186,7 @@
)
assert not metadata.license_expression
assert len(recwarn) == 1
- assert str(recwarn.pop(UserWarning).message).startswith(
- "'license-expression' is missing"
- )
+ assert str(recwarn.pop(UserWarning).message).startswith("'license' is
missing")
@pytest.mark.deprecation
@@ -217,7 +197,6 @@
"description": "test package",
"name": "demo",
"version": "0.1.0",
- "license-expression": "MIT",
"license": {"file": "LICENSE"},
}
)
@@ -234,7 +213,7 @@
"description": "test package",
"name": "demo",
"version": "0.1.0",
- "license-expression": "MIT",
+ "license": "MIT",
}
)
assert metadata.license_files == {
@@ -242,13 +221,14 @@
}
[email protected](reason="Don't emit warning until PEP 639 is accepted")
def test_license_normalization() -> None:
metadata = make_metadata(
{
"description": "test package",
"name": "demo",
"version": "0.1.0",
- "license-expression": "mIt",
+ "license": "mIt",
}
)
with pytest.warns(UserWarning) as record:
@@ -259,13 +239,14 @@
)
[email protected](reason="Don't emit warning until PEP 639 is accepted")
def test_invalid_license_identifier() -> None:
metadata = make_metadata(
{
"description": "test package",
"name": "demo",
"version": "0.1.0",
- "license-expression": "foo OR MIT",
+ "license": "foo OR MIT",
}
)
with pytest.raises(ValueError, match=r".*Unknown license key\(s\): foo"):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/tests/test_utils.py
new/pdm-pep517-1.0.5/tests/test_utils.py
--- old/pdm-pep517-1.0.4/tests/test_utils.py 1970-01-01 01:00:00.000000000
+0100
+++ new/pdm-pep517-1.0.5/tests/test_utils.py 2022-10-24 04:00:28.913448800
+0200
@@ -0,0 +1,10 @@
+from pdm.pep517.utils import expand_vars
+
+
+def test_expand_vars(monkeypatch):
+ monkeypatch.setenv("FOO", "foo=a")
+ monkeypatch.setenv("BAR", "bar")
+ root = "/abc/def"
+
+ line = "file:///${PROJECT_ROOT}/${FOO}:${BAR}:${BAZ}"
+ assert expand_vars(line, root) == "file:///abc/def/foo%3Da:bar:${BAZ}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pdm-pep517-1.0.4/tests/test_validator.py
new/pdm-pep517-1.0.5/tests/test_validator.py
--- old/pdm-pep517-1.0.4/tests/test_validator.py 2022-08-06
17:29:41.935385500 +0200
+++ new/pdm-pep517-1.0.5/tests/test_validator.py 2022-10-24
04:00:28.913448800 +0200
@@ -27,12 +27,12 @@
},
{
"name": "foo",
- "license-expression": "MIT",
+ "license": "MIT",
"license-files": {"paths": ["LICENSE"]},
},
{
"name": "foo",
- "license-expression": "MIT",
+ "license": "MIT",
"license-files": {"globs": ["LICENSE*"]},
},
]
@@ -53,7 +53,7 @@
{"name": "foo", "version": {"from": "foo.py"}},
{
"name": "foo",
- "license-expression": "MIT",
+ "license": "MIT",
"license-files": {"paths": ["LICENSE"], "globs": ["LICENSE*"]},
},
]