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
cc6f9bbe
Unverified
Commit
cc6f9bbe
authored
Jul 07, 2021
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update the `show` command to support groups
parent
20589be5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
243 additions
and
24 deletions
+243
-24
poetry/console/commands/show.py
+76
-21
tests/console/commands/test_show.py
+167
-3
No files found.
poetry/console/commands/show.py
View file @
cc6f9bbe
...
...
@@ -14,6 +14,7 @@ if TYPE_CHECKING:
from
poetry.core.packages.dependency
import
Dependency
from
poetry.core.packages.package
import
Package
from
poetry.packages.project_package
import
ProjectPackage
from
poetry.repositories
import
Repository
from
poetry.repositories.installed_repository
import
InstalledRepository
...
...
@@ -25,7 +26,35 @@ class ShowCommand(EnvCommand):
arguments
=
[
argument
(
"package"
,
"The package to inspect"
,
optional
=
True
)]
options
=
[
option
(
"no-dev"
,
None
,
"Do not list the development dependencies."
),
option
(
"without"
,
None
,
"Do not show the information of the specified groups' dependencies."
,
flag
=
False
,
multiple
=
True
,
),
option
(
"with"
,
None
,
"Show the information of the specified optional groups' dependencies as well."
,
flag
=
False
,
multiple
=
True
,
),
option
(
"default"
,
None
,
"Only show the information of the default dependencies."
),
option
(
"only"
,
None
,
"Only show the information of dependencies belonging to the specified groups."
,
flag
=
False
,
multiple
=
True
,
),
option
(
"no-dev"
,
None
,
"Do not list the development dependencies. (<warning>Deprecated</warning>)"
,
),
option
(
"tree"
,
"t"
,
"List the dependencies as a tree."
),
option
(
"latest"
,
"l"
,
"Show the latest version."
),
option
(
...
...
@@ -63,17 +92,53 @@ lists all packages available."""
if
self
.
option
(
"outdated"
):
self
.
_io
.
input
.
set_option
(
"latest"
,
True
)
include_dev
=
not
self
.
option
(
"no-dev"
)
excluded_groups
=
[]
included_groups
=
[]
only_groups
=
[]
if
self
.
option
(
"no-dev"
):
self
.
line
(
"<warning>The `<fg=yellow;options=bold>--no-dev</>` option is deprecated,"
"use the `<fg=yellow;options=bold>--without dev</>` notation instead.</warning>"
)
excluded_groups
.
append
(
"dev"
)
excluded_groups
.
extend
(
[
group
.
strip
()
for
groups
in
self
.
option
(
"without"
)
for
group
in
groups
.
split
(
","
)
]
)
included_groups
.
extend
(
[
group
.
strip
()
for
groups
in
self
.
option
(
"with"
)
for
group
in
groups
.
split
(
","
)
]
)
only_groups
.
extend
(
[
group
.
strip
()
for
groups
in
self
.
option
(
"only"
)
for
group
in
groups
.
split
(
","
)
]
)
if
self
.
option
(
"default"
):
only_groups
.
append
(
"default"
)
locked_repo
=
self
.
poetry
.
locker
.
locked_repository
(
True
)
if
only_groups
:
root
=
self
.
poetry
.
package
.
with_dependency_groups
(
only_groups
,
only
=
True
)
else
:
root
=
self
.
poetry
.
package
.
with_dependency_groups
(
included_groups
)
.
without_dependency_groups
(
excluded_groups
)
# Show tree view if requested
if
self
.
option
(
"tree"
)
and
not
package
:
groups
=
[
"default"
]
if
include_dev
:
groups
.
append
(
"dev"
)
package
=
self
.
poetry
.
package
.
with_dependency_groups
(
groups
,
only
=
True
)
requires
=
package
.
all_requires
requires
=
root
.
all_requires
packages
=
locked_repo
.
packages
for
pkg
in
packages
:
for
require
in
requires
:
...
...
@@ -88,7 +153,7 @@ lists all packages available."""
pool
=
Pool
(
ignore_repository_names
=
True
)
pool
.
add_repository
(
locked_repo
)
solver
=
Solver
(
self
.
poetry
.
package
,
root
,
pool
=
pool
,
installed
=
Repository
(),
locked
=
locked_repo
,
...
...
@@ -100,11 +165,6 @@ lists all packages available."""
required_locked_packages
=
set
([
op
.
package
for
op
in
ops
if
not
op
.
skipped
])
if
self
.
option
(
"no-dev"
):
required_locked_packages
=
[
p
for
p
in
locked_packages
if
p
.
category
==
"main"
]
if
package
:
pkg
=
None
for
locked
in
locked_packages
:
...
...
@@ -163,7 +223,7 @@ lists all packages available."""
current_length
+=
4
if
show_latest
:
latest
=
self
.
find_latest_package
(
locked
,
include_dev
)
latest
=
self
.
find_latest_package
(
locked
,
root
)
if
not
latest
:
latest
=
locked
...
...
@@ -380,7 +440,7 @@ lists all packages available."""
io
.
error_output
.
formatter
.
set_style
(
color
,
style
)
def
find_latest_package
(
self
,
package
:
"Package"
,
include_dev
:
bool
self
,
package
:
"Package"
,
root
:
"ProjectPackage"
)
->
Union
[
"Package"
,
bool
]:
from
cleo.io.null_io
import
NullIO
...
...
@@ -389,11 +449,6 @@ lists all packages available."""
# find the latest version allowed in this pool
if
package
.
source_type
in
(
"git"
,
"file"
,
"directory"
):
groups
=
[
"default"
]
if
include_dev
:
groups
.
append
(
"dev"
)
root
=
self
.
poetry
.
package
.
with_dependency_groups
(
groups
,
only
=
True
)
requires
=
root
.
all_requires
for
dep
in
requires
:
...
...
tests/console/commands/test_show.py
View file @
cc6f9bbe
import
pytest
from
poetry.core.packages.dependency_group
import
DependencyGroup
from
poetry.factory
import
Factory
from
tests.helpers
import
get_package
...
...
@@ -952,7 +953,7 @@ def test_show_outdated_no_dev_git_dev_dependency(tester, poetry, installed, repo
}
)
tester
.
execute
(
"--outdated --
no-
dev"
)
tester
.
execute
(
"--outdated --
without
dev"
)
expected
=
"""
\
cachy 0.1.0 0.2.0 Cachy package
...
...
@@ -1071,6 +1072,12 @@ pendulum 2.0.0 Pendulum package
def
test_show_non_dev_with_basic_installed_packages
(
tester
,
poetry
,
installed
):
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"cachy"
,
"^0.1.0"
))
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"pendulum"
,
"^2.0.0"
))
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"pytest"
,
"*"
,
groups
=
[
"dev"
])
)
cachy_010
=
get_package
(
"cachy"
,
"0.1.0"
)
cachy_010
.
description
=
"Cachy package"
...
...
@@ -1128,7 +1135,7 @@ def test_show_non_dev_with_basic_installed_packages(tester, poetry, installed):
}
)
tester
.
execute
(
"--
no-
dev"
)
tester
.
execute
(
"--
without
dev"
)
expected
=
"""
\
cachy 0.1.0 Cachy package
...
...
@@ -1138,6 +1145,163 @@ pendulum 2.0.0 Pendulum package
assert
expected
==
tester
.
io
.
fetch_output
()
def
test_show_with_group_only
(
tester
,
poetry
,
installed
):
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"cachy"
,
"^0.1.0"
))
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"pendulum"
,
"^2.0.0"
))
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"pytest"
,
"*"
,
groups
=
[
"dev"
])
)
cachy_010
=
get_package
(
"cachy"
,
"0.1.0"
)
cachy_010
.
description
=
"Cachy package"
pendulum_200
=
get_package
(
"pendulum"
,
"2.0.0"
)
pendulum_200
.
description
=
"Pendulum package"
pytest_373
=
get_package
(
"pytest"
,
"3.7.3"
)
pytest_373
.
description
=
"Pytest package"
pytest_373
.
category
=
"dev"
installed
.
add_package
(
cachy_010
)
installed
.
add_package
(
pendulum_200
)
installed
.
add_package
(
pytest_373
)
poetry
.
locker
.
mock_lock_data
(
{
"package"
:
[
{
"name"
:
"cachy"
,
"version"
:
"0.1.0"
,
"description"
:
"Cachy package"
,
"category"
:
"main"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
},
{
"name"
:
"pendulum"
,
"version"
:
"2.0.0"
,
"description"
:
"Pendulum package"
,
"category"
:
"main"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
},
{
"name"
:
"pytest"
,
"version"
:
"3.7.3"
,
"description"
:
"Pytest package"
,
"category"
:
"dev"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
},
],
"metadata"
:
{
"python-versions"
:
"*"
,
"platform"
:
"*"
,
"content-hash"
:
"123456789"
,
"hashes"
:
{
"cachy"
:
[],
"pendulum"
:
[],
"pytest"
:
[]},
},
}
)
tester
.
execute
(
"--only dev"
)
expected
=
"""
\
pytest 3.7.3 Pytest package
"""
assert
expected
==
tester
.
io
.
fetch_output
()
def
test_show_with_optional_group
(
tester
,
poetry
,
installed
):
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"cachy"
,
"^0.1.0"
))
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"pendulum"
,
"^2.0.0"
))
group
=
DependencyGroup
(
"dev"
,
optional
=
True
)
group
.
add_dependency
(
Factory
.
create_dependency
(
"pytest"
,
"*"
,
groups
=
[
"dev"
]))
poetry
.
package
.
add_dependency_group
(
group
)
cachy_010
=
get_package
(
"cachy"
,
"0.1.0"
)
cachy_010
.
description
=
"Cachy package"
pendulum_200
=
get_package
(
"pendulum"
,
"2.0.0"
)
pendulum_200
.
description
=
"Pendulum package"
pytest_373
=
get_package
(
"pytest"
,
"3.7.3"
)
pytest_373
.
description
=
"Pytest package"
pytest_373
.
category
=
"dev"
installed
.
add_package
(
cachy_010
)
installed
.
add_package
(
pendulum_200
)
installed
.
add_package
(
pytest_373
)
poetry
.
locker
.
mock_lock_data
(
{
"package"
:
[
{
"name"
:
"cachy"
,
"version"
:
"0.1.0"
,
"description"
:
"Cachy package"
,
"category"
:
"main"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
},
{
"name"
:
"pendulum"
,
"version"
:
"2.0.0"
,
"description"
:
"Pendulum package"
,
"category"
:
"main"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
},
{
"name"
:
"pytest"
,
"version"
:
"3.7.3"
,
"description"
:
"Pytest package"
,
"category"
:
"dev"
,
"optional"
:
False
,
"platform"
:
"*"
,
"python-versions"
:
"*"
,
"checksum"
:
[],
},
],
"metadata"
:
{
"python-versions"
:
"*"
,
"platform"
:
"*"
,
"content-hash"
:
"123456789"
,
"hashes"
:
{
"cachy"
:
[],
"pendulum"
:
[],
"pytest"
:
[]},
},
}
)
tester
.
execute
()
expected
=
"""
\
cachy 0.1.0 Cachy package
pendulum 2.0.0 Pendulum package
"""
assert
expected
==
tester
.
io
.
fetch_output
()
tester
.
execute
(
"--with dev"
)
expected
=
"""
\
cachy 0.1.0 Cachy package
pendulum 2.0.0 Pendulum package
pytest 3.7.3 Pytest package
"""
assert
expected
==
tester
.
io
.
fetch_output
()
def
test_show_tree
(
tester
,
poetry
,
installed
):
poetry
.
package
.
add_dependency
(
Factory
.
create_dependency
(
"cachy"
,
"^0.2.0"
))
...
...
@@ -1247,7 +1411,7 @@ def test_show_tree_no_dev(tester, poetry, installed):
}
)
tester
.
execute
(
"--tree --
no-
dev"
)
tester
.
execute
(
"--tree --
without
dev"
)
expected
=
"""
\
cachy 0.2.0
...
...
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