Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5c2ac8c

Browse files
committed
setup.py: report modules which built but import failed (closes #21282)
Patch by Lukas Vacek.
1 parent 30a6df5 commit 5c2ac8c

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,7 @@ Roger Upole
13561356
Daniel Urban
13571357
Michael Urman
13581358
Hector Urtubia
1359+
Lukas Vacek
13591360
Ville Vainio
13601361
Andi Vajda
13611362
Case Van Horsen

setup.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ class PyBuildExt(build_ext):
167167
def __init__(self, dist):
168168
build_ext.__init__(self, dist)
169169
self.failed = []
170+
self.failed_on_import = []
170171

171172
def build_extensions(self):
172173

@@ -247,8 +248,9 @@ def build_extensions(self):
247248
build_ext.build_extensions(self)
248249

249250
longest = max([len(e.name) for e in self.extensions])
250-
if self.failed:
251-
longest = max(longest, max([len(name) for name in self.failed]))
251+
if self.failed or self.failed_on_import:
252+
all_failed = self.failed + self.failed_on_import
253+
longest = max(longest, max([len(name) for name in all_failed]))
252254

253255
def print_three_column(lst):
254256
lst.sort(key=str.lower)
@@ -276,6 +278,14 @@ def print_three_column(lst):
276278
print_three_column(failed)
277279
print()
278280

281+
if self.failed_on_import:
282+
failed = self.failed_on_import[:]
283+
print()
284+
print("Following modules built successfully"
285+
" but were removed because they could not be imported:")
286+
print_three_column(failed)
287+
print()
288+
279289
def build_extension(self, ext):
280290

281291
if ext.name == '_ctypes':
@@ -334,7 +344,7 @@ def build_extension(self, ext):
334344
try:
335345
importlib._bootstrap._SpecMethods(spec).load()
336346
except ImportError as why:
337-
self.failed.append(ext.name)
347+
self.failed_on_import.append(ext.name)
338348
self.announce('*** WARNING: renaming "%s" since importing it'
339349
' failed: %s' % (ext.name, why), level=3)
340350
assert not self.inplace

0 commit comments

Comments
 (0)