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