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

Skip to content

Commit 586fcff

Browse files
authored
Merge pull request matplotlib#20825 from QuLogic/fix-triage
Fix image triage tool with Qt6
2 parents a0d2e39 + 5430fa7 commit 586fcff

File tree

1 file changed

+34
-28
lines changed

1 file changed

+34
-28
lines changed

tools/triage_tests.py

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import sys
3131

3232
from matplotlib.backends.qt_compat import QtCore, QtGui, QtWidgets
33+
from matplotlib.backends.qt_compat import _enum, _exec
3334

3435

3536
# matplotlib stores the baseline images under two separate subtrees,
@@ -61,13 +62,13 @@ def __init__(self, parent, index, name):
6162
layout = QtWidgets.QVBoxLayout()
6263

6364
label = QtWidgets.QLabel(name)
64-
label.setAlignment(QtCore.Qt.AlignHCenter |
65-
QtCore.Qt.AlignVCenter)
65+
label.setAlignment(_enum('QtCore.Qt.AlignmentFlag').AlignHCenter |
66+
_enum('QtCore.Qt.AlignmentFlag').AlignVCenter)
6667
layout.addWidget(label, 0)
6768

6869
self.image = QtWidgets.QLabel()
69-
self.image.setAlignment(QtCore.Qt.AlignHCenter |
70-
QtCore.Qt.AlignVCenter)
70+
self.image.setAlignment(_enum('QtCore.Qt.AlignmentFlag').AlignHCenter |
71+
_enum('QtCore.Qt.AlignmentFlag').AlignVCenter)
7172
self.image.setMinimumSize(800 // 3, 600 // 3)
7273
layout.addWidget(self.image)
7374
self.setLayout(layout)
@@ -85,7 +86,7 @@ def __init__(self, window):
8586
self.window = window
8687

8788
def eventFilter(self, receiver, event):
88-
if event.type() == QtCore.QEvent.KeyPress:
89+
if event.type() == _enum('QtCore.QEvent.Type').KeyPress:
8990
self.window.keyPressEvent(event)
9091
return True
9192
else:
@@ -125,8 +126,9 @@ def __init__(self, entries):
125126
images_layout = QtWidgets.QVBoxLayout()
126127
images_box = QtWidgets.QWidget()
127128
self.image_display = QtWidgets.QLabel()
128-
self.image_display.setAlignment(QtCore.Qt.AlignHCenter |
129-
QtCore.Qt.AlignVCenter)
129+
self.image_display.setAlignment(
130+
_enum('QtCore.Qt.AlignmentFlag').AlignHCenter |
131+
_enum('QtCore.Qt.AlignmentFlag').AlignVCenter)
130132
self.image_display.setMinimumSize(800, 600)
131133
images_layout.addWidget(self.image_display, 6)
132134
images_box.setLayout(images_layout)
@@ -164,22 +166,25 @@ def set_entry(self, index):
164166
for fname, thumbnail in zip(entry.thumbnails, self.thumbnails):
165167
pixmap = QtGui.QPixmap(os.fspath(fname))
166168
scaled_pixmap = pixmap.scaled(
167-
thumbnail.size(), QtCore.Qt.KeepAspectRatio,
168-
QtCore.Qt.SmoothTransformation)
169+
thumbnail.size(),
170+
_enum('QtCore.Qt.AspectRatioMode').KeepAspectRatio,
171+
_enum('QtCore.Qt.TransformationMode').SmoothTransformation)
169172
thumbnail.image.setPixmap(scaled_pixmap)
170173
self.pixmaps.append(scaled_pixmap)
171174

172175
self.set_large_image(0)
173176
self.filelist.setCurrentRow(self.current_entry)
174177

175178
def set_large_image(self, index):
176-
self.thumbnails[self.current_thumbnail].setFrameShape(0)
179+
self.thumbnails[self.current_thumbnail].setFrameShape(
180+
_enum('QtWidgets.QFrame.Shape').NoFrame)
177181
self.current_thumbnail = index
178182
pixmap = QtGui.QPixmap(os.fspath(
179183
self.entries[self.current_entry]
180184
.thumbnails[self.current_thumbnail]))
181185
self.image_display.setPixmap(pixmap)
182-
self.thumbnails[self.current_thumbnail].setFrameShape(1)
186+
self.thumbnails[self.current_thumbnail].setFrameShape(
187+
_enum('QtWidgets.QFrame.Shape').Box)
183188

184189
def accept_test(self):
185190
entry = self.entries[self.current_entry]
@@ -204,17 +209,17 @@ def reject_test(self):
204209
self.set_entry(min((self.current_entry + 1), len(self.entries) - 1))
205210

206211
def keyPressEvent(self, e):
207-
if e.key() == QtCore.Qt.Key_Left:
212+
if e.key() == _enum('QtCore.Qt.Key').Key_Left:
208213
self.set_large_image((self.current_thumbnail - 1) % 3)
209-
elif e.key() == QtCore.Qt.Key_Right:
214+
elif e.key() == _enum('QtCore.Qt.Key').Key_Right:
210215
self.set_large_image((self.current_thumbnail + 1) % 3)
211-
elif e.key() == QtCore.Qt.Key_Up:
216+
elif e.key() == _enum('QtCore.Qt.Key').Key_Up:
212217
self.set_entry(max(self.current_entry - 1, 0))
213-
elif e.key() == QtCore.Qt.Key_Down:
218+
elif e.key() == _enum('QtCore.Qt.Key').Key_Down:
214219
self.set_entry(min(self.current_entry + 1, len(self.entries) - 1))
215-
elif e.key() == QtCore.Qt.Key_A:
220+
elif e.key() == _enum('QtCore.Qt.Key').Key_A:
216221
self.accept_test()
217-
elif e.key() == QtCore.Qt.Key_R:
222+
elif e.key() == _enum('QtCore.Qt.Key').Key_R:
218223
self.reject_test()
219224
else:
220225
super().keyPressEvent(e)
@@ -233,8 +238,8 @@ def __init__(self, path, root, source):
233238

234239
basename = self.diff[:-len('-failed-diff.png')]
235240
for ext in exts:
236-
if basename.endswith('_' + ext):
237-
display_extension = '_' + ext
241+
if basename.endswith(f'_{ext}'):
242+
display_extension = f'_{ext}'
238243
extension = ext
239244
basename = basename[:-4]
240245
break
@@ -244,11 +249,10 @@ def __init__(self, path, root, source):
244249

245250
self.basename = basename
246251
self.extension = extension
247-
self.generated = basename + '.' + extension
248-
self.expected = basename + '-expected.' + extension
249-
self.expected_display = (basename + '-expected' + display_extension +
250-
'.png')
251-
self.generated_display = basename + display_extension + '.png'
252+
self.generated = f'{basename}.{extension}'
253+
self.expected = f'{basename}-expected.{extension}'
254+
self.expected_display = f'{basename}-expected{display_extension}.png'
255+
self.generated_display = f'{basename}{display_extension}.png'
252256
self.name = self.reldir / self.basename
253257
self.destdir = self.get_dest_dir(self.reldir)
254258

@@ -277,7 +281,7 @@ def get_dest_dir(self, reldir):
277281
path = self.source / baseline_dir / reldir
278282
if path.is_dir():
279283
return path
280-
raise ValueError("Can't find baseline dir for {}".format(reldir))
284+
raise ValueError(f"Can't find baseline dir for {reldir}")
281285

282286
@property
283287
def display(self):
@@ -292,7 +296,7 @@ def display(self):
292296
'autogen': '\N{WHITE SQUARE CONTAINING BLACK SMALL SQUARE}',
293297
}
294298
box = status_map[self.status]
295-
return '{} {} [{}]'.format(box, self.name, self.extension)
299+
return f'{box} {self.name} [{self.extension}]'
296300

297301
def accept(self):
298302
"""
@@ -305,7 +309,9 @@ def reject(self):
305309
"""
306310
Reject this test by copying the expected result to the source tree.
307311
"""
308-
copy_file(self.dir / self.expected, self.destdir / self.generated)
312+
expected = self.dir / self.expected
313+
if not expected.is_symlink():
314+
copy_file(expected, self.destdir / self.generated)
309315
self.status = 'reject'
310316

311317

@@ -339,7 +345,7 @@ def launch(result_images, source):
339345
dialog.show()
340346
filter = EventFilter(dialog)
341347
app.installEventFilter(filter)
342-
sys.exit(app.exec_())
348+
sys.exit(_exec(app))
343349

344350

345351
if __name__ == '__main__':

0 commit comments

Comments
 (0)