diff --git a/src/poetry/packages/locker.py b/src/poetry/packages/locker.py index 7fa0e6ffce9..57765ffa440 100644 --- a/src/poetry/packages/locker.py +++ b/src/poetry/packages/locker.py @@ -378,6 +378,10 @@ def _dump_package(self, package: Package) -> dict[str, Any]: constraint["tag"] = dependency.tag elif dependency.rev: constraint["rev"] = dependency.rev + + if dependency.directory: + constraint["subdirectory"] = dependency.directory + else: constraint["version"] = str(dependency.pretty_constraint) diff --git a/tests/packages/test_locker.py b/tests/packages/test_locker.py index 23022d41c66..1595b40e6ce 100644 --- a/tests/packages/test_locker.py +++ b/tests/packages/test_locker.py @@ -865,6 +865,15 @@ def test_locker_dumps_dependency_information_correctly( "F", {"git": "https://github.com/python-poetry/poetry.git", "branch": "foo"} ) ) + package_a.add_dependency( + Factory.create_dependency( + "G", + { + "git": "https://github.com/python-poetry/poetry.git", + "subdirectory": "bar", + }, + ) + ) packages = [package_a] @@ -891,6 +900,7 @@ def test_locker_dumps_dependency_information_correctly( D = {{path = "distributions/demo-0.1.0.tar.gz"}} E = {{url = "https://python-poetry.org/poetry-1.2.0.tar.gz"}} F = {{git = "https://github.com/python-poetry/poetry.git", branch = "foo"}} +G = {{git = "https://github.com/python-poetry/poetry.git", subdirectory = "bar"}} [metadata] lock-version = "2.0"