Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
0c609704
Unverified
Commit
0c609704
authored
Aug 19, 2022
by
Randy Döring
Committed by
GitHub
Aug 19, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
installer: use locked version of vcs dependency with extras instead of latest (#6185)
parent
b1eff774
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
97 additions
and
10 deletions
+97
-10
src/poetry/mixology/version_solver.py
+8
-10
tests/installation/fixtures/with-vcs-dependency-with-extras.test
+47
-0
tests/installation/test_installer.py
+42
-0
No files found.
src/poetry/mixology/version_solver.py
View file @
0c609704
...
@@ -418,11 +418,6 @@ class VersionSolver:
...
@@ -418,11 +418,6 @@ class VersionSolver:
return
complete_name
return
complete_name
package
=
None
package
=
None
if
dependency
.
name
not
in
self
.
_use_latest
:
# prefer locked version of compatible (not exact same) dependency;
# required in order to not unnecessarily update dependencies with
# extras, e.g. "coverage" vs. "coverage[toml]"
locked
=
self
.
_get_locked
(
dependency
,
allow_similar
=
True
)
if
locked
is
not
None
:
if
locked
is
not
None
:
package
=
next
(
package
=
next
(
(
(
...
@@ -504,9 +499,7 @@ class VersionSolver:
...
@@ -504,9 +499,7 @@ class VersionSolver:
incompatibility
incompatibility
)
)
def
_get_locked
(
def
_get_locked
(
self
,
dependency
:
Dependency
)
->
DependencyPackage
|
None
:
self
,
dependency
:
Dependency
,
*
,
allow_similar
:
bool
=
False
)
->
DependencyPackage
|
None
:
if
dependency
.
name
in
self
.
_use_latest
:
if
dependency
.
name
in
self
.
_use_latest
:
return
None
return
None
...
@@ -514,8 +507,13 @@ class VersionSolver:
...
@@ -514,8 +507,13 @@ class VersionSolver:
for
dependency_package
in
locked
:
for
dependency_package
in
locked
:
package
=
dependency_package
.
package
package
=
dependency_package
.
package
if
(
if
(
allow_similar
or
dependency
.
is_same_package_as
(
package
)
# Locked dependencies are always without features.
)
and
dependency
.
constraint
.
allows
(
package
.
version
):
# Thus, we can't use is_same_package_as() here because it compares
# the complete_name (including features).
dependency
.
name
==
package
.
name
and
dependency
.
is_same_source_as
(
package
)
and
dependency
.
constraint
.
allows
(
package
.
version
)
):
return
DependencyPackage
(
dependency
,
package
)
return
DependencyPackage
(
dependency
,
package
)
return
None
return
None
...
...
tests/installation/fixtures/with-vcs-dependency-with-extras.test
0 → 100644
View file @
0c609704
[[
package
]]
name
=
"demo"
version
=
"0.1.2"
description
=
""
category
=
"main"
optional
=
false
python
-
versions
=
"*"
develop
=
false
[
package
.
dependencies
]
cleo
=
{
version
=
"*"
,
optional
=
true
,
markers
=
"extra ==
\"
foo
\"
"
}
pendulum
=
">=1.4.4"
[
package
.
extras
]
foo
=
[
"cleo"
]
[
package
.
source
]
type
=
"git"
url
=
"https://github.com/demo/demo.git"
reference
=
"master"
resolved_reference
=
"123456"
[[
package
]]
name
=
"pendulum"
version
=
"1.4.4"
description
=
""
category
=
"main"
optional
=
false
python
-
versions
=
"*"
[[
package
]]
name
=
"cleo"
version
=
"1.0.0"
description
=
""
category
=
"main"
optional
=
false
python
-
versions
=
"*"
[
metadata
]
python
-
versions
=
"*"
lock
-
version
=
"1.1"
content
-
hash
=
"123456789"
[
metadata
.
files
]
demo
=
[]
pendulum
=
[]
cleo
=
[]
tests/installation/test_installer.py
View file @
0c609704
...
@@ -2473,3 +2473,45 @@ def test_installer_should_use_the_locked_version_of_git_dependencies(
...
@@ -2473,3 +2473,45 @@ def test_installer_should_use_the_locked_version_of_git_dependencies(
source_reference
=
"master"
,
source_reference
=
"master"
,
source_resolved_reference
=
"123456"
,
source_resolved_reference
=
"123456"
,
)
)
@pytest.mark.parametrize
(
"is_locked"
,
[
False
,
True
])
def
test_installer_should_use_the_locked_version_of_git_dependencies_with_extras
(
installer
:
Installer
,
locker
:
Locker
,
package
:
ProjectPackage
,
repo
:
Repository
,
is_locked
:
bool
,
):
if
is_locked
:
locker
.
locked
(
True
)
locker
.
mock_lock_data
(
fixture
(
"with-vcs-dependency-with-extras"
))
expected_reference
=
"123456"
else
:
expected_reference
=
"9cf87a285a2d3fbb0b9fa621997b3acc3631ed24"
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
,
"branch"
:
"master"
,
"extras"
:
[
"foo"
],
},
)
)
repo
.
add_package
(
get_package
(
"pendulum"
,
"1.4.4"
))
repo
.
add_package
(
get_package
(
"cleo"
,
"1.0.0"
))
installer
.
run
()
assert
len
(
installer
.
executor
.
installations
)
==
3
assert
installer
.
executor
.
installations
[
-
1
]
==
Package
(
"demo"
,
"0.1.2"
,
source_type
=
"git"
,
source_url
=
"https://github.com/demo/demo.git"
,
source_reference
=
"master"
,
source_resolved_reference
=
expected_reference
,
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment