@@ -402,9 +402,9 @@ def iter_modules(path=None, prefix=''):
402402 yielded [name ] = 1
403403 yield ModuleInfo (i , name , ispkg )
404404
405- def iter_importer_modules (importer , prefix = '' ):
405+ def _iter_importer_modules_helper (importer , prefix = '' ):
406406 r"""
407- Yield :class:`ModuleInfo` for all modules of ``importer` `.
407+ Helper function for :func:`iter_importer_modules `.
408408 """
409409 from importlib .machinery import FileFinder
410410
@@ -423,11 +423,6 @@ def iter_importer_modules(importer, prefix=''):
423423
424424 for fn in filenames :
425425 modname = inspect .getmodulename (fn )
426- if modname and (modname in ['__init__' , 'all' ]
427- or modname .startswith ('all__' )
428- or modname in yielded ):
429- continue
430-
431426 path = os .path .join (importer .path , fn )
432427 ispkg = False
433428
@@ -446,6 +441,18 @@ def iter_importer_modules(importer, prefix=''):
446441 else :
447442 yield from importer .iter_modules (prefix )
448443
444+ def iter_importer_modules (importer , prefix = '' ):
445+ r"""
446+ Yield :class:`ModuleInfo` for all modules of ``importer``.
447+ """
448+ for name , ispkg in sorted (list (_iter_importer_modules_helper (importer , prefix ))):
449+ # we sort again for consistency of output ordering if importer is not
450+ # a FileFinder (needed in doctest of :func:`sage.misc.dev_tools/load_submodules`)
451+ modname = name .rsplit ('.' , 1 )[- 1 ]
452+ if modname in ['__init__' , 'all' ] or modname .startswith ('all__' ):
453+ continue
454+ yield name , ispkg
455+
449456 def seen (p , m = {}):
450457 if p in m :
451458 return True
0 commit comments