1+ from  __future__ import  annotations 
2+ 
13import  logging 
24import  os 
3- from  typing  import  Sequence 
5+ from  typing  import  Callable ,  Generator ,  Sequence ,  Union 
46import  pytest 
57import  pytest_dependency         # type: ignore 
68import  tempfile 
79import  xml .etree .ElementTree  as  ET 
810
911from  lib  import  installer , pxe 
10- from  lib .common  import  callable_marker , url_download , wait_for 
12+ from  lib .common  import  callable_marker , ensure_type ,  url_download , wait_for 
1113from  lib .installer  import  AnswerFile 
1214from  lib .commands  import  local_cmd 
1315
@@ -39,7 +41,7 @@ def skip_package_source(version, package_source):
3941    return  True , "unknown source type {}" .format (package_source )
4042
4143@pytest .fixture (scope = 'function' ) 
42- def  answerfile (request ) :
44+ def  answerfile (request :  pytest . FixtureRequest )  ->   Generator [ Union [ AnswerFile ,  None ],  None ,  None ] :
4345    """ 
4446    Makes an AnswerFile object available to test and other fixtures. 
4547
@@ -66,8 +68,8 @@ def answerfile(request):
6668        return 
6769
6870    # construct answerfile definition from option "base", and explicit bits 
69-     answerfile_def  =  callable_marker ( marker . args [ 0 ],  request )
70-     assert   isinstance ( answerfile_def ,  AnswerFile )
71+     marker_args  =  ensure_type ( tuple [ Union [ AnswerFile ,  Callable [...,  AnswerFile ]]],  marker . args )
72+     answerfile_def   =   callable_marker ( marker_args [ 0 ],  request )
7173
7274    yield  answerfile_def 
7375
@@ -322,8 +324,8 @@ def xcpng_chained(request):
322324    # take test name from mark 
323325    marker  =  request .node .get_closest_marker ("continuation_of" )
324326    assert  marker  is  not None , "xcpng_chained fixture requires 'continuation_of' marker" 
325-     continuation_of  =  callable_marker ( marker . args [ 0 ],  request )
326-     assert   isinstance ( continuation_of ,  Sequence )
327+     marker_args  =  ensure_type ( tuple [ Union [ Sequence [ dict ],  Callable [...,  Sequence [ dict ]]]],  marker . args )
328+     continuation_of   =   callable_marker ( marker_args [ 0 ],  request )
327329
328330    vm_defs  =  [dict (name = vm_spec ['vm' ],
329331                    image_test = vm_spec ['image_test' ],
0 commit comments