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
e64eb9e2
Commit
e64eb9e2
authored
Sep 24, 2022
by
Randy Döring
Committed by
Bjorn Neergaard
Sep 24, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
provider: fetch optional vcs dependency only if required
Co-authored-by: Maxim Koltsov <kolmax94@gmail.com>
parent
c061ac55
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
12 deletions
+34
-12
src/poetry/puzzle/provider.py
+12
-12
tests/puzzle/test_provider.py
+22
-0
No files found.
src/poetry/puzzle/provider.py
View file @
e64eb9e2
...
...
@@ -572,18 +572,6 @@ class Provider:
dependency
=
dependency_package
.
dependency
requires
=
package
.
requires
if
self
.
_load_deferred
:
# Retrieving constraints for deferred dependencies
for
r
in
requires
:
if
r
.
is_direct_origin
():
locked
=
self
.
get_locked
(
r
)
# If lock file contains exactly the same URL and reference
# (commit hash) of dependency as is requested,
# do not analyze it again: nothing could have changed.
if
locked
is
not
None
and
locked
.
package
.
is_same_package_as
(
r
):
continue
self
.
search_for_direct_origin_dependency
(
r
)
optional_dependencies
=
[]
_dependencies
=
[]
...
...
@@ -636,6 +624,18 @@ class Provider:
_dependencies
.
append
(
dep
)
if
self
.
_load_deferred
:
# Retrieving constraints for deferred dependencies
for
dep
in
_dependencies
:
if
dep
.
is_direct_origin
():
locked
=
self
.
get_locked
(
dep
)
# If lock file contains exactly the same URL and reference
# (commit hash) of dependency as is requested,
# do not analyze it again: nothing could have changed.
if
locked
is
not
None
and
locked
.
package
.
is_same_package_as
(
dep
):
continue
self
.
search_for_direct_origin_dependency
(
dep
)
dependencies
=
self
.
_get_dependencies_with_overrides
(
_dependencies
,
dependency_package
)
...
...
tests/puzzle/test_provider.py
View file @
e64eb9e2
...
...
@@ -716,3 +716,25 @@ def test_complete_package_with_extras_preserves_source_name(
assert
requires
[
0
]
.
source_name
==
source_name
assert
requires
[
1
]
.
name
==
"b"
assert
requires
[
1
]
.
source_name
is
None
@pytest.mark.parametrize
(
"with_extra"
,
[
False
,
True
])
def
test_complete_package_fetches_optional_vcs_dependency_only_if_requested
(
provider
:
Provider
,
repository
:
Repository
,
mocker
:
MockerFixture
,
with_extra
:
bool
):
optional_vcs_dependency
=
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
,
"optional"
:
True
}
)
package
=
Package
(
"A"
,
"1.0"
,
features
=
[
"foo"
]
if
with_extra
else
[])
package
.
add_dependency
(
optional_vcs_dependency
)
package
.
extras
[
"foo"
]
=
[
optional_vcs_dependency
]
repository
.
add_package
(
package
)
spy
=
mocker
.
spy
(
provider
,
"_search_for_vcs"
)
provider
.
complete_package
(
DependencyPackage
(
package
.
to_dependency
(),
package
))
if
with_extra
:
spy
.
assert_called
()
else
:
spy
.
assert_not_called
()
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