Commit 44f9a43f by Randy Döring

locker: sort by source type, url, subdirectory and reference

parent a8f6b5b5
......@@ -483,7 +483,18 @@ class Locker:
def _lock_packages(self, packages: list[Package]) -> list[dict[str, Any]]:
locked = []
for package in sorted(packages, key=lambda x: (x.name, x.version)):
for package in sorted(
packages,
key=lambda x: (
x.name,
x.version,
x.source_type or "",
x.source_url or "",
x.source_subdirectory or "",
x.source_reference or "",
x.source_resolved_reference or "",
),
):
spec = self._dump_package(package)
locked.append(spec)
......
......@@ -55,7 +55,26 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
source_reference="develop",
source_resolved_reference="123456",
)
packages = [package_a2, package_a, get_package("B", "1.2"), package_git]
package_url_linux = Package(
"url-package",
"1.0",
source_type="url",
source_url="https://example.org/url-package-1.0-cp39-manylinux_2_17_x86_64.whl",
)
package_url_win32 = Package(
"url-package",
"1.0",
source_type="url",
source_url="https://example.org/url-package-1.0-cp39-win_amd64.whl",
)
packages = [
package_a2,
package_a,
get_package("B", "1.2"),
package_git,
package_url_win32,
package_url_linux,
]
locker.set_lock_data(root, packages)
......@@ -105,6 +124,30 @@ url = "https://github.com/python-poetry/poetry.git"
reference = "develop"
resolved_reference = "123456"
[[package]]
name = "url-package"
version = "1.0"
description = ""
category = "main"
optional = false
python-versions = "*"
[package.source]
type = "url"
url = "https://example.org/url-package-1.0-cp39-manylinux_2_17_x86_64.whl"
[[package]]
name = "url-package"
version = "1.0"
description = ""
category = "main"
optional = false
python-versions = "*"
[package.source]
type = "url"
url = "https://example.org/url-package-1.0-cp39-win_amd64.whl"
[metadata]
lock-version = "1.1"
python-versions = "*"
......@@ -118,6 +161,7 @@ A = [
]
B = []
git-package = []
url-package = []
"""
assert content == expected
......
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