Skip to content

Commit c90cdf6

Browse files
committed
direct URL dependencies are never outdated
1 parent 5997a60 commit c90cdf6

File tree

4 files changed

+57
-13
lines changed

4 files changed

+57
-13
lines changed

src/poetry/console/commands/show.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ def find_latest_package(
502502
from poetry.version.version_selector import VersionSelector
503503

504504
# find the latest version allowed in this pool
505-
if package.source_type in ("git", "file", "directory"):
505+
if package.is_direct_origin():
506506
requires = root.all_requires
507507

508508
for dep in requires:

src/poetry/installation/pip_installer.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ def install(self, package: Package, update: bool = False) -> None:
4848

4949
args = ["install", "--no-deps"]
5050

51-
if (
52-
package.source_type not in {"git", "directory", "file", "url"}
53-
and package.source_url
54-
):
51+
if not package.is_direct_origin() and package.source_url:
5552
assert package.source_reference is not None
5653
repository = self._pool.repository(package.source_reference)
5754
parsed = urllib.parse.urlparse(package.source_url)

src/poetry/puzzle/provider.py

+3-8
Original file line numberDiff line numberDiff line change
@@ -546,12 +546,9 @@ def complete_package(
546546
package = dependency_package.package
547547
dependency = dependency_package.dependency
548548
requires = package.all_requires
549-
elif package.source_type not in {
550-
"directory",
551-
"file",
552-
"url",
553-
"git",
554-
}:
549+
elif package.is_direct_origin():
550+
requires = package.requires
551+
else:
555552
try:
556553
dependency_package = DependencyPackage(
557554
dependency,
@@ -574,8 +571,6 @@ def complete_package(
574571
package = dependency_package.package
575572
dependency = dependency_package.dependency
576573
requires = package.requires
577-
else:
578-
requires = package.requires
579574

580575
if self._load_deferred:
581576
# Retrieving constraints for deferred dependencies

tests/console/commands/test_show.py

+52
Original file line numberDiff line numberDiff line change
@@ -1992,3 +1992,55 @@ def test_show_dependency_installed_from_git_in_dev(
19921992
# packages.
19931993
tester.execute("--outdated")
19941994
assert tester.io.fetch_output() == ""
1995+
1996+
1997+
def test_url_dependency_is_not_outdated_by_repository_package(
1998+
tester: CommandTester,
1999+
poetry: Poetry,
2000+
installed: Repository,
2001+
repo: TestRepository,
2002+
):
2003+
demo_url = "https://python-poetry.org/distributions/demo-0.1.0-py2.py3-none-any.whl"
2004+
poetry.package.add_dependency(
2005+
Factory.create_dependency(
2006+
"demo",
2007+
{"url": demo_url},
2008+
)
2009+
)
2010+
2011+
# A newer version of demo is available in the repository.
2012+
demo_100 = get_package("demo", "1.0.0")
2013+
repo.add_package(demo_100)
2014+
2015+
poetry.locker.mock_lock_data(
2016+
{
2017+
"package": [
2018+
{
2019+
"name": "demo",
2020+
"version": "0.1.0",
2021+
"description": "Demo package",
2022+
"category": "main",
2023+
"optional": False,
2024+
"platform": "*",
2025+
"python-versions": "*",
2026+
"checksum": [],
2027+
"source": {
2028+
"type": "url",
2029+
"url": demo_url,
2030+
},
2031+
}
2032+
],
2033+
"metadata": {
2034+
"python-versions": "*",
2035+
"platform": "*",
2036+
"content-hash": "123456789",
2037+
"hashes": {"demo": []},
2038+
},
2039+
}
2040+
)
2041+
2042+
# The url dependency on demo is not made outdated by the existence of a newer
2043+
# version
2044+
# in the repository.
2045+
tester.execute("--outdated")
2046+
assert tester.io.fetch_output() == ""

0 commit comments

Comments
 (0)