- # hard-coded fallback list of modules expected in this package
- # TODO(fungi) remove this once Python 3.6 is no longer supported
- fallback_modules = [
- "command",
- "daemon",
- "data",
- "menu",
- "misc",
- "password",
- "telnet",
- "version",
- ]
- try:
- # dynamically build module list from package contents (this only works
- # in Python 3.7 and later, hence the try/except)
- modules = []
- for module in mudpy.__loader__.contents():
-
- if (
- # make sure it's a module file, not a directory
- module.endswith('.py')
-
- # don't include this file, we're inside it
- and module != '__init__.py'):
-
- # trim off the .py file extension
- modules.append(module[:-3])
-
- # make sure the fallback list is kept up to date with package contents
- if fallback_modules != sorted(modules):
- raise Exception("Fallback module list is incomplete")
-
- except AttributeError:
- modules = fallback_modules
+ # dynamically build module list from package contents
+ modules = []
+ for module in mudpy.__spec__.loader.get_resource_reader().contents():
+
+ if (
+ # make sure it's a module file, not a directory
+ module.endswith('.py')
+
+ # don't include this file, we're inside it
+ and module != '__init__.py'):
+
+ # trim off the .py file extension
+ modules.append(module[:-3])