Commit 72db06ee by David Hotham Committed by Randy Döring

direct URL dependencies are never outdated

parent c4b22537
...@@ -519,7 +519,7 @@ lists all packages available.""" ...@@ -519,7 +519,7 @@ lists all packages available."""
from poetry.version.version_selector import VersionSelector from poetry.version.version_selector import VersionSelector
# find the latest version allowed in this pool # find the latest version allowed in this pool
if package.source_type in ("git", "file", "directory"): if package.is_direct_origin():
requires = root.all_requires requires = root.all_requires
for dep in requires: for dep in requires:
......
...@@ -48,10 +48,7 @@ class PipInstaller(BaseInstaller): ...@@ -48,10 +48,7 @@ class PipInstaller(BaseInstaller):
args = ["install", "--no-deps"] args = ["install", "--no-deps"]
if ( if not package.is_direct_origin() and package.source_url:
package.source_type not in {"git", "directory", "file", "url"}
and package.source_url
):
assert package.source_reference is not None assert package.source_reference is not None
repository = self._pool.repository(package.source_reference) repository = self._pool.repository(package.source_reference)
parsed = urllib.parse.urlparse(package.source_url) parsed = urllib.parse.urlparse(package.source_url)
......
...@@ -546,12 +546,9 @@ class Provider: ...@@ -546,12 +546,9 @@ class Provider:
package = dependency_package.package package = dependency_package.package
dependency = dependency_package.dependency dependency = dependency_package.dependency
requires = package.all_requires requires = package.all_requires
elif package.source_type not in { elif package.is_direct_origin():
"directory", requires = package.requires
"file", else:
"url",
"git",
}:
try: try:
dependency_package = DependencyPackage( dependency_package = DependencyPackage(
dependency, dependency,
...@@ -574,8 +571,6 @@ class Provider: ...@@ -574,8 +571,6 @@ class Provider:
package = dependency_package.package package = dependency_package.package
dependency = dependency_package.dependency dependency = dependency_package.dependency
requires = package.requires requires = package.requires
else:
requires = package.requires
if self._load_deferred: if self._load_deferred:
# Retrieving constraints for deferred dependencies # Retrieving constraints for deferred dependencies
......
...@@ -1992,3 +1992,54 @@ def test_show_dependency_installed_from_git_in_dev( ...@@ -1992,3 +1992,54 @@ def test_show_dependency_installed_from_git_in_dev(
# packages. # packages.
tester.execute("--outdated") tester.execute("--outdated")
assert tester.io.fetch_output() == "" assert tester.io.fetch_output() == ""
def test_url_dependency_is_not_outdated_by_repository_package(
tester: CommandTester,
poetry: Poetry,
installed: Repository,
repo: TestRepository,
):
demo_url = "https://python-poetry.org/distributions/demo-0.1.0-py2.py3-none-any.whl"
poetry.package.add_dependency(
Factory.create_dependency(
"demo",
{"url": demo_url},
)
)
# A newer version of demo is available in the repository.
demo_100 = get_package("demo", "1.0.0")
repo.add_package(demo_100)
poetry.locker.mock_lock_data(
{
"package": [
{
"name": "demo",
"version": "0.1.0",
"description": "Demo package",
"category": "main",
"optional": False,
"platform": "*",
"python-versions": "*",
"checksum": [],
"source": {
"type": "url",
"url": demo_url,
},
}
],
"metadata": {
"python-versions": "*",
"platform": "*",
"content-hash": "123456789",
"hashes": {"demo": []},
},
}
)
# The url dependency on demo is not made outdated by the existence of a newer
# version in the repository.
tester.execute("--outdated")
assert tester.io.fetch_output() == ""
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