X-Git-Url: https://mudpy.org/gitweb?a=blobdiff_plain;f=mudpy%2F__init__.py;h=216d03de91fc77ce09cc83438e8edc3c86c9e888;hb=e1c28efd28dcad31000a07dfe303adfde4b47522;hp=5f2d5787c33c198136b3dbb992c09967febb36f6;hpb=11ae0d6e7e05cffb744f7b40f37309f07696d34a;p=mudpy.git diff --git a/mudpy/__init__.py b/mudpy/__init__.py index 5f2d578..216d03d 100644 --- a/mudpy/__init__.py +++ b/mudpy/__init__.py @@ -1,39 +1,42 @@ """Core modules package for the mudpy engine.""" -# Copyright (c) 2004-2017 Jeremy Stanley . Permission -# to use, copy, modify, and distribute this software is granted under -# terms provided in the LICENSE file distributed with this software. +# Copyright (c) 2004-2022 mudpy authors. Permission to use, copy, +# modify, and distribute this software is granted under terms +# provided in the LICENSE file distributed with this software. -import sys +import importlib -import mudpy # noqa (referenced via exec of string literal below) - -if sys.version_info >= (3, 4): - import importlib # noqa (referenced via exec of string literal below) -else: - # Python 3.3 lacks importlib.reload() - import imp as importlib # noqa (referenced via exec of string literal) +import mudpy def load(): """Import/reload some modules (be careful, as this can result in loops).""" - # pick up the modules list from this package - global 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]) - # iterate over the list of modules provided + # iterate over the list of module files included in the package for module in modules: # attempt to reload the module, assuming it was probably imported # earlier try: - exec("importlib.reload(%s)" % module) + importlib.reload(getattr(mudpy, module)) # must not have been, so import it now - except NameError: - exec("import mudpy.%s" % module) + except AttributeError: + importlib.import_module("mudpy.%s" % module) -# load the modules contained in this package -modules = ["data", "misc", "password", "telnet"] load()