@@ -35,8 +35,11 @@ class ShowCommand(EnvCommand):
35
35
def handle (self ):
36
36
from clikit .utils .terminal import Terminal
37
37
38
- from poetry .core .semver import Version
38
+ from poetry .io .null_io import NullIO
39
+ from poetry .puzzle .solver import Solver
39
40
from poetry .repositories .installed_repository import InstalledRepository
41
+ from poetry .repositories .pool import Pool
42
+ from poetry .repositories .repository import Repository
40
43
from poetry .utils .helpers import get_package_version_display_string
41
44
42
45
package = self .argument ("package" )
@@ -48,7 +51,7 @@ def handle(self):
48
51
self ._args .set_option ("latest" , True )
49
52
50
53
include_dev = not self .option ("no-dev" )
51
- locked_repo = self .poetry .locker .locked_repository (include_dev )
54
+ locked_repo = self .poetry .locker .locked_repository (True )
52
55
53
56
# Show tree view if requested
54
57
if self .option ("tree" ) and not package :
@@ -65,6 +68,25 @@ def handle(self):
65
68
table = self .table (style = "compact" )
66
69
# table.style.line_vc_char = ""
67
70
locked_packages = locked_repo .packages
71
+ pool = Pool ()
72
+ pool .add_repository (locked_repo )
73
+ solver = Solver (
74
+ self .poetry .package ,
75
+ pool = pool ,
76
+ installed = Repository (),
77
+ locked = locked_repo ,
78
+ io = NullIO (),
79
+ )
80
+ solver .provider .load_deferred (False )
81
+ with solver .use_environment (self .env ):
82
+ ops = solver .solve ()
83
+
84
+ required_locked_packages = set ([op .package for op in ops if not op .skipped ])
85
+
86
+ if self .option ("no-dev" ):
87
+ required_locked_packages = [
88
+ p for p in locked_packages if p .category == "main"
89
+ ]
68
90
69
91
if package :
70
92
pkg = None
@@ -110,20 +132,11 @@ def handle(self):
110
132
latest_packages = {}
111
133
latest_statuses = {}
112
134
installed_repo = InstalledRepository .load (self .env )
113
- skipped = []
114
-
115
- python = Version .parse ("." .join ([str (i ) for i in self .env .version_info [:3 ]]))
116
135
117
136
# Computing widths
118
137
for locked in locked_packages :
119
- python_constraint = locked .python_constraint
120
- if not python_constraint .allows (python ) or not self .env .is_valid_for_marker (
121
- locked .marker
122
- ):
123
- skipped .append (locked )
124
-
125
- if not show_all :
126
- continue
138
+ if locked not in required_locked_packages and not show_all :
139
+ continue
127
140
128
141
current_length = len (locked .pretty_name )
129
142
if not self ._io .output .supports_ansi ():
@@ -179,7 +192,7 @@ def handle(self):
179
192
color = "cyan"
180
193
name = locked .pretty_name
181
194
install_marker = ""
182
- if locked in skipped :
195
+ if locked not in required_locked_packages :
183
196
if not show_all :
184
197
continue
185
198
0 commit comments