-
Notifications
You must be signed in to change notification settings - Fork 254
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(api): pass local version label to build backend interface
fix: `update`, `add` and `remove` shall not uninstall extra dependencies With this change unrequested extras dependencies will also be kept when running `install` and are only removed when running `sync`! Fix`build` help regarding `--clean` (#9994)
- Loading branch information
1 parent
c5547ec
commit f11dda9
Showing
5 changed files
with
174 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -61,6 +61,19 @@ def test_build_wheel(project: str) -> None: | |
) | ||
|
||
|
||
def test_build_wheel_with_local_version() -> None: | ||
with temporary_directory() as tmp_dir, cwd(fixtures / "complete"): | ||
filename = api.build_wheel( | ||
str(tmp_dir), config_settings={"local-version": "some-label"} | ||
) | ||
validate_wheel_contents( | ||
name="my_package", | ||
version="1.2.3+some-label", | ||
path=tmp_dir / filename, | ||
files=["entry_points.txt"], | ||
) | ||
|
||
|
||
def test_build_wheel_with_include() -> None: | ||
with temporary_directory() as tmp_dir, cwd(fixtures / "with-include"): | ||
filename = api.build_wheel(str(tmp_dir)) | ||
|
@@ -106,6 +119,19 @@ def test_build_sdist(project: str) -> None: | |
) | ||
|
||
|
||
def test_build_sdist_with_local_version() -> None: | ||
with temporary_directory() as tmp_dir, cwd(fixtures / "complete"): | ||
filename = api.build_sdist( | ||
str(tmp_dir), config_settings={"local-version": "some-label"} | ||
) | ||
validate_sdist_contents( | ||
name="my-package", | ||
version="1.2.3+some-label", | ||
path=tmp_dir / filename, | ||
files=["LICENSE"], | ||
) | ||
|
||
|
||
def test_build_sdist_with_include() -> None: | ||
with temporary_directory() as tmp_dir, cwd(fixtures / "with-include"): | ||
filename = api.build_sdist(str(tmp_dir)) | ||
|
@@ -208,6 +234,85 @@ def test_prepare_metadata_for_build_wheel(project: str) -> None: | |
assert f.read() == metadata | ||
|
||
|
||
def test_prepare_metadata_for_build_wheel_with_local_version() -> None: | ||
local_version = "some-label" | ||
entry_points = """\ | ||
[console_scripts] | ||
extra-script=my_package.extra:main | ||
my-2nd-script=my_package:main2 | ||
my-script=my_package:main | ||
[poetry.application.plugin] | ||
my-command=my_package.plugins:MyApplicationPlugin | ||
""" | ||
wheel_data = f"""\ | ||
Wheel-Version: 1.0 | ||
Generator: poetry-core {__version__} | ||
Root-Is-Purelib: true | ||
Tag: py3-none-any | ||
""" | ||
metadata = f"""\ | ||
Metadata-Version: 2.3 | ||
Name: my-package | ||
Version: 1.2.3+{local_version} | ||
Summary: Some description. | ||
License: MIT | ||
Keywords: packaging,dependency,poetry | ||
Author: Sébastien Eustace | ||
Author-email: [email protected] | ||
Maintainer: People Everywhere | ||
Maintainer-email: [email protected] | ||
Requires-Python: >=3.6,<4.0 | ||
Classifier: License :: OSI Approved :: MIT License | ||
Classifier: Programming Language :: Python :: 3 | ||
Classifier: Programming Language :: Python :: 3.6 | ||
Classifier: Programming Language :: Python :: 3.7 | ||
Classifier: Programming Language :: Python :: 3.8 | ||
Classifier: Programming Language :: Python :: 3.9 | ||
Classifier: Programming Language :: Python :: 3.10 | ||
Classifier: Programming Language :: Python :: 3.11 | ||
Classifier: Programming Language :: Python :: 3.12 | ||
Classifier: Programming Language :: Python :: 3.13 | ||
Classifier: Topic :: Software Development :: Build Tools | ||
Classifier: Topic :: Software Development :: Libraries :: Python Modules | ||
Provides-Extra: time | ||
Requires-Dist: cachy[msgpack] (>=0.2.0,<0.3.0) | ||
Requires-Dist: cleo (>=0.6,<0.7) | ||
Requires-Dist: pendulum (>=1.4,<2.0) ; (python_version ~= "2.7" and sys_platform == "win32" or python_version in "3.4 3.5") and (extra == "time") | ||
Project-URL: Documentation, https://python-poetry.org/docs | ||
Project-URL: Homepage, https://python-poetry.org/ | ||
Project-URL: Issue Tracker, https://github.com/python-poetry/poetry/issues | ||
Project-URL: Repository, https://github.com/python-poetry/poetry | ||
Description-Content-Type: text/x-rst | ||
My Package | ||
========== | ||
""" | ||
with temporary_directory() as tmp_dir, cwd(fixtures / "complete"): | ||
dirname = api.prepare_metadata_for_build_wheel( | ||
str(tmp_dir), config_settings={"local-version": local_version} | ||
) | ||
|
||
assert dirname == f"my_package-1.2.3+{local_version}.dist-info" | ||
|
||
dist_info = Path(tmp_dir, dirname) | ||
|
||
assert (dist_info / "entry_points.txt").exists() | ||
assert (dist_info / "WHEEL").exists() | ||
assert (dist_info / "METADATA").exists() | ||
|
||
with (dist_info / "entry_points.txt").open(encoding="utf-8") as f: | ||
assert f.read() == entry_points | ||
|
||
with (dist_info / "WHEEL").open(encoding="utf-8") as f: | ||
assert f.read() == wheel_data | ||
|
||
with (dist_info / "METADATA").open(encoding="utf-8") as f: | ||
assert f.read() == metadata | ||
|
||
|
||
def test_prepare_metadata_for_build_wheel_with_bad_path_dev_dep_succeeds() -> None: | ||
with temporary_directory() as tmp_dir, cwd(fixtures / "with_bad_path_dev_dep"): | ||
api.prepare_metadata_for_build_wheel(str(tmp_dir)) | ||
|
@@ -244,6 +349,21 @@ def test_build_editable_wheel(project: str) -> None: | |
assert z.read("my_package.pth").decode().strip() == pkg_dir.as_posix() | ||
|
||
|
||
def test_build_editable_wheel_with_local_version() -> None: | ||
pkg_dir = fixtures / "complete" | ||
with temporary_directory() as tmp_dir, cwd(pkg_dir): | ||
filename = api.build_editable( | ||
str(tmp_dir), config_settings={"local-version": "some-label"} | ||
) | ||
wheel_pth = Path(tmp_dir) / filename | ||
|
||
validate_wheel_contents( | ||
name="my_package", | ||
version="1.2.3+some-label", | ||
path=wheel_pth, | ||
) | ||
|
||
|
||
@pytest.mark.parametrize("project", ["complete", "complete_new", "complete_dynamic"]) | ||
def test_build_wheel_with_metadata_directory(project: str) -> None: | ||
pkg_dir = fixtures / project | ||
|