@@ -370,9 +370,9 @@ def iter_modules(path=None, prefix=''):
370370 yielded [name ] = 1
371371 yield ModuleInfo (i , name , ispkg )
372372
373- def iter_importer_modules (importer , prefix = '' ):
373+ def _iter_importer_modules_helper (importer , prefix = '' ):
374374 r"""
375- Yield :class:`ModuleInfo` for all modules of ``importer` `.
375+ Helper function for :func:`iter_importer_modules `.
376376 """
377377 from importlib .machinery import FileFinder
378378
@@ -391,11 +391,6 @@ def iter_importer_modules(importer, prefix=''):
391391
392392 for fn in filenames :
393393 modname = inspect .getmodulename (fn )
394- if modname and (modname in ['__init__' , 'all' ]
395- or modname .startswith ('all__' )
396- or modname in yielded ):
397- continue
398-
399394 path = os .path .join (importer .path , fn )
400395 ispkg = False
401396
@@ -414,6 +409,18 @@ def iter_importer_modules(importer, prefix=''):
414409 else :
415410 yield from importer .iter_modules (prefix )
416411
412+ def iter_importer_modules (importer , prefix = '' ):
413+ r"""
414+ Yield :class:`ModuleInfo` for all modules of ``importer``.
415+ """
416+ for name , ispkg in sorted (list (_iter_importer_modules_helper (importer , prefix ))):
417+ # we sort again for consistency of output ordering if importer is not
418+ # a FileFinder (needed in doctest of :func:`sage.misc.dev_tools/load_submodules`)
419+ modname = name .rsplit ('.' , 1 )[- 1 ]
420+ if modname in ['__init__' , 'all' ] or modname .startswith ('all__' ):
421+ continue
422+ yield name , ispkg
423+
417424 def seen (p , m = {}):
418425 if p in m :
419426 return True
0 commit comments