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
fb13b3a6
Unverified
Commit
fb13b3a6
authored
Apr 03, 2022
by
David Hotham
Committed by
GitHub
Apr 03, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
locker: refactor dependency walk logic
Resolves: #5141
parent
eb27f816
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
107 additions
and
123 deletions
+107
-123
src/poetry/packages/locker.py
+78
-104
src/poetry/utils/exporter.py
+14
-14
tests/console/commands/test_export.py
+15
-5
tests/utils/test_exporter.py
+0
-0
No files found.
src/poetry/packages/locker.py
View file @
fb13b3a6
This diff is collapsed.
Click to expand it.
src/poetry/utils/exporter.py
View file @
fb13b3a6
from
__future__
import
annotations
from
__future__
import
annotations
import
itertools
import
urllib.parse
import
urllib.parse
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
...
@@ -70,21 +69,22 @@ class Exporter:
...
@@ -70,21 +69,22 @@ class Exporter:
content
=
""
content
=
""
dependency_lines
=
set
()
dependency_lines
=
set
()
for
package
,
groups
in
itertools
.
groupby
(
# Get project dependencies.
self
.
_poetry
.
locker
.
get_project_dependency_packages
(
root_package
=
(
project_requires
=
self
.
_poetry
.
package
.
all_requires
,
self
.
_poetry
.
package
.
clone
()
dev
=
dev
,
if
dev
extras
=
extras
,
else
self
.
_poetry
.
package
.
with_dependency_groups
([
"default"
],
only
=
True
)
),
)
lambda
dependency_package
:
dependency_package
.
package
,
for
dependency_package
in
self
.
_poetry
.
locker
.
get_project_dependency_packages
(
project_requires
=
root_package
.
all_requires
,
project_python_marker
=
root_package
.
python_marker
,
dev
=
dev
,
extras
=
extras
,
):
):
line
=
""
line
=
""
dependency_packages
=
list
(
groups
)
dependency
=
dependency_package
.
dependency
dependency
=
dependency_packages
[
0
]
.
dependency
package
=
dependency_package
.
package
marker
=
dependency
.
marker
for
dep_package
in
dependency_packages
[
1
:]:
marker
=
marker
.
union
(
dep_package
.
dependency
.
marker
)
dependency
.
marker
=
marker
if
package
.
develop
:
if
package
.
develop
:
line
+=
"-e "
line
+=
"-e "
...
...
tests/console/commands/test_export.py
View file @
fb13b3a6
...
@@ -84,7 +84,9 @@ def _export_requirements(tester: CommandTester, poetry: Poetry) -> None:
...
@@ -84,7 +84,9 @@ def _export_requirements(tester: CommandTester, poetry: Poetry) -> None:
assert
poetry
.
locker
.
lock
.
exists
()
assert
poetry
.
locker
.
lock
.
exists
()
expected
=
"""
\
expected
=
"""
\
foo==1.0.0
foo==1.0.0 ;
\
python_version >= "2.7" and python_version < "2.8" or
\
python_version >= "3.4" and python_version < "4.0"
"""
"""
assert
content
==
expected
assert
content
==
expected
...
@@ -113,7 +115,9 @@ def test_export_fails_on_invalid_format(tester: CommandTester, do_lock: None):
...
@@ -113,7 +115,9 @@ def test_export_fails_on_invalid_format(tester: CommandTester, do_lock: None):
def
test_export_prints_to_stdout_by_default
(
tester
:
CommandTester
,
do_lock
:
None
):
def
test_export_prints_to_stdout_by_default
(
tester
:
CommandTester
,
do_lock
:
None
):
tester
.
execute
(
"--format requirements.txt"
)
tester
.
execute
(
"--format requirements.txt"
)
expected
=
"""
\
expected
=
"""
\
foo==1.0.0
foo==1.0.0 ;
\
python_version >= "2.7" and python_version < "2.8" or
\
python_version >= "3.4" and python_version < "4.0"
"""
"""
assert
tester
.
io
.
fetch_output
()
==
expected
assert
tester
.
io
.
fetch_output
()
==
expected
...
@@ -123,7 +127,9 @@ def test_export_uses_requirements_txt_format_by_default(
...
@@ -123,7 +127,9 @@ def test_export_uses_requirements_txt_format_by_default(
):
):
tester
.
execute
()
tester
.
execute
()
expected
=
"""
\
expected
=
"""
\
foo==1.0.0
foo==1.0.0 ;
\
python_version >= "2.7" and python_version < "2.8" or
\
python_version >= "3.4" and python_version < "4.0"
"""
"""
assert
tester
.
io
.
fetch_output
()
==
expected
assert
tester
.
io
.
fetch_output
()
==
expected
...
@@ -131,8 +137,12 @@ foo==1.0.0
...
@@ -131,8 +137,12 @@ foo==1.0.0
def
test_export_includes_extras_by_flag
(
tester
:
CommandTester
,
do_lock
:
None
):
def
test_export_includes_extras_by_flag
(
tester
:
CommandTester
,
do_lock
:
None
):
tester
.
execute
(
"--format requirements.txt --extras feature_bar"
)
tester
.
execute
(
"--format requirements.txt --extras feature_bar"
)
expected
=
"""
\
expected
=
"""
\
bar==1.1.0
bar==1.1.0 ;
\
foo==1.0.0
python_version >= "2.7" and python_version < "2.8" or
\
python_version >= "3.4" and python_version < "4.0"
foo==1.0.0 ;
\
python_version >= "2.7" and python_version < "2.8" or
\
python_version >= "3.4" and python_version < "4.0"
"""
"""
assert
tester
.
io
.
fetch_output
()
==
expected
assert
tester
.
io
.
fetch_output
()
==
expected
...
...
tests/utils/test_exporter.py
View file @
fb13b3a6
This diff is collapsed.
Click to expand it.
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