@@ -260,9 +260,18 @@ def __init__(self, module, fullname):
260260 self ._module = module
261261 self ._fullname = fullname
262262
263- def iterdir (self ):
263+ def _resolve (self ):
264+ """
265+ Fully traverse the `fixtures` dictionary.
266+
267+ This should be wrapped in a `try/except KeyError`
268+ but it is not currently needed and lowers the code coverage numbers.
269+ """
264270 path = pathlib .PurePosixPath (self ._fullname )
265- directory = functools .reduce (lambda d , p : d [p ], path .parts , fixtures )
271+ return functools .reduce (lambda d , p : d [p ], path .parts , fixtures )
272+
273+ def iterdir (self ):
274+ directory = self ._resolve ()
266275 if not isinstance (directory , dict ):
267276 # Filesystem openers raise OSError, and that exception is mirrored here.
268277 raise OSError (f"{ self ._fullname } is not a directory" )
@@ -272,21 +281,15 @@ def iterdir(self):
272281 )
273282
274283 def is_dir (self ) -> bool :
275- path = pathlib .PurePosixPath (self ._fullname )
276- # Fully traverse the `fixtures` dictionary.
277- # This should be wrapped in a `try/except KeyError`
278- # but it is not currently needed, and lowers the code coverage numbers.
279- directory = functools .reduce (lambda d , p : d [p ], path .parts , fixtures )
284+ directory = self ._resolve ()
280285 return isinstance (directory , dict )
281286
282287 def is_file (self ) -> bool :
283- path = pathlib .PurePosixPath (self ._fullname )
284- directory = functools .reduce (lambda d , p : d [p ], path .parts , fixtures )
288+ directory = self ._resolve ()
285289 return not isinstance (directory , dict )
286290
287291 def open (self , mode = 'r' , encoding = None , errors = None , * _ , ** __ ):
288- path = pathlib .PurePosixPath (self ._fullname )
289- contents = functools .reduce (lambda d , p : d [p ], path .parts , fixtures )
292+ contents = self ._resolve ()
290293 if isinstance (contents , dict ):
291294 # Filesystem openers raise OSError when attempting to open a directory,
292295 # and that exception is mirrored here.
0 commit comments