3030import sys
3131
3232from 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
345351if __name__ == '__main__' :
0 commit comments