@@ -388,9 +388,17 @@ def decorator(func):
388388 import pytest
389389
390390 _ , result_dir = _image_directories (func )
391+ old_sig = inspect .signature (func )
391392
392393 @pytest .mark .parametrize ("ext" , extensions )
393- def wrapper (* args , ext , request , ** kwargs ):
394+ def wrapper (* args , ** kwargs ):
395+ ext = kwargs ['ext' ]
396+ if 'ext' not in old_sig .parameters :
397+ kwargs .pop ('ext' )
398+ request = kwargs ['request' ]
399+ if 'request' not in old_sig .parameters :
400+ kwargs .pop ('request' )
401+
394402 file_name = "" .join (c for c in request .node .name
395403 if c in ALLOWED_CHARS )
396404 try :
@@ -408,16 +416,16 @@ def wrapper(*args, ext, request, **kwargs):
408416 plt .close (fig_test )
409417 plt .close (fig_ref )
410418
411- sig = inspect . signature ( func )
412- new_sig = sig . replace (
413- parameters = ([ param
414- for param in sig . parameters . values ()
415- if param . name not in { "fig_test" , "fig_ref" } ]
416- + [
417- inspect .Parameter ("ext" , KEYWORD_ONLY ),
418- inspect . Parameter ( "request" , KEYWORD_ONLY ),
419- ])
420- )
419+ parameters = [
420+ param
421+ for param in old_sig . parameters . values ()
422+ if param . name not in { "fig_test" , "fig_ref" }
423+ ]
424+ if 'ext' not in old_sig . parameters :
425+ parameters += [ inspect .Parameter ("ext" , KEYWORD_ONLY )]
426+ if 'request' not in old_sig . parameters :
427+ parameters += [ inspect . Parameter ( "request" , KEYWORD_ONLY )]
428+ new_sig = old_sig . replace ( parameters = parameters )
421429 wrapper .__signature__ = new_sig
422430
423431 # reach a bit into pytest internals to hoist the marks from
0 commit comments