def post_import(): """ This is called after import or reload, to do further initialization of various modules. """ import renpy # @UnresolvedImport # Create the store. renpy.python.create_store("store") # Import the contents of renpy.defaultstore into renpy.store, and set # up an alias as we do. renpy.store = sys.modules['store'] # type: ignore renpy.exports.store = renpy.store # type: ignore sys.modules['renpy.store'] = sys.modules['store'] import subprocess sys.modules[pystr('renpy.subprocess')] = subprocess for k, v in renpy.defaultstore.__dict__.items(): renpy.store.__dict__.setdefault(k, v) # type: ignore renpy.store.eval = renpy.defaultstore.eval # type: ignore # Import everything into renpy.exports, provided it isn't # already there. for k, v in globals().items(): vars(renpy.exports).setdefault(k, v)
def load_module(self, fullname): filename = self.translate(fullname, self.prefix) pyname = pystr(fullname) mod = sys.modules.setdefault(pyname, types.ModuleType(pyname)) mod.__name__ = pyname mod.__file__ = filename mod.__loader__ = self if filename.endswith("__init__.py"): mod.__path__ = [ filename[:-len("__init__.py")] ] for encoding in [ "utf-8", "latin-1" ]: try: source = load(filename).read().decode(encoding) if source and source[0] == u'\ufeff': source = source[1:] source = source.encode("raw_unicode_escape") source = source.replace(b"\r", b"") code = compile(source, filename, 'exec', renpy.python.old_compile_flags, 1) break except Exception: if encoding == "latin-1": raise exec(code, mod.__dict__) # type: ignore return sys.modules[fullname]
def create_store(name): """ Creates the store with `name`. """ parent, _, var = name.rpartition('.') if parent: create_store(parent) name = str(name) if name in initialized_store_dicts: return initialized_store_dicts.add(name) # Create the dict. d = store_dicts.setdefault(name, StoreDict()) d.reset() pyname = pystr(name) # Set the name. d["__name__"] = pyname d["__package__"] = pyname # Set up the default contents of the store. eval("1", d) for k, v in renpy.minstore.__dict__.items(): if k not in d: d[k] = v # Create or reuse the corresponding module. if name in store_modules: sys.modules[pyname] = store_modules[name] else: store_modules[name] = sys.modules[pyname] = StoreModule( d) # type: ignore if parent: store_dicts[parent][var] = sys.modules[pyname]
def import_all(): # Note: If we add a new update_path, we have to add an equivalent # hook in the renpython hooks dir. # Note: If we add a new module, we need to add it to iOS. # Note: If we add a new module, it should be added at the bottom of this file so it shows up in # code analysis. import renpy # @UnresolvedImport import renpy.config import renpy.log import renpy.arguments # @UnresolvedImport import renpy.compat.fixes import renpy.display import renpy.debug # Should probably be early, as we will add it as a base to serialized things. import renpy.object import renpy.game import renpy.preferences # Adds in the Ren'Py loader. import renpy.loader if not PY2: import renpy.py3analysis else: import renpy.py2analysis import renpy.pyanalysis import renpy.ast import renpy.atl import renpy.curry import renpy.color import renpy.easy import renpy.execution import renpy.loadsave import renpy.savelocation # @UnresolvedImport import renpy.persistent import renpy.scriptedit import renpy.parser import renpy.performance import renpy.pydict import renpy.revertable import renpy.rollback import renpy.python import renpy.script import renpy.statements import renpy.util global plog plog = renpy.performance.log # type:ignore import renpy.styledata # @UnresolvedImport import renpy.style renpy.styledata.import_style_functions() sys.modules[pystr('renpy.styleclass')] = renpy.style import renpy.substitutions import renpy.translation import renpy.translation.scanstrings import renpy.translation.generation import renpy.translation.dialogue import renpy.translation.extract import renpy.translation.merge import renpy.display # @UnresolvedImport @Reimport import renpy.display.presplash import renpy.display.pgrender import renpy.display.scale import renpy.display.module import renpy.display.render # Most display stuff depends on this. @UnresolvedImport import renpy.display.core # object @UnresolvedImport import renpy.display.swdraw import renpy.text import renpy.text.ftfont import renpy.text.font import renpy.text.textsupport import renpy.text.texwrap import renpy.text.text import renpy.text.extras sys.modules[pystr('renpy.display.text')] = renpy.text.text import renpy.gl import renpy.gl2 import renpy.display.layout import renpy.display.viewport import renpy.display.transform import renpy.display.motion # layout @UnresolvedImport import renpy.display.behavior # layout @UnresolvedImport import renpy.display.transition # core, layout @UnresolvedImport import renpy.display.movetransition # core @UnresolvedImport import renpy.display.im import renpy.display.imagelike import renpy.display.image # core, behavior, im, imagelike @UnresolvedImport import renpy.display.video import renpy.display.focus import renpy.display.anim import renpy.display.particle import renpy.display.joystick import renpy.display.controller import renpy.display.minigame import renpy.display.screen import renpy.display.dragdrop import renpy.display.imagemap import renpy.display.predict import renpy.display.emulator import renpy.display.tts import renpy.display.gesture import renpy.display.model import renpy.display.error # Note: For windows to work, renpy.audio.audio needs to be after # renpy.display.module. import renpy.audio import renpy.audio.audio import renpy.audio.music import renpy.audio.sound import renpy.ui import renpy.screenlang import renpy.sl2 import renpy.sl2.slast import renpy.sl2.slparser import renpy.sl2.slproperties import renpy.sl2.sldisplayables import renpy.lint import renpy.warp import renpy.editor import renpy.memory import renpy.exports import renpy.character # depends on exports. @UnresolvedImport import renpy.add_from import renpy.dump import renpy.gl2.gl2draw import renpy.gl2.gl2mesh import renpy.gl2.gl2model import renpy.gl2.gl2polygon import renpy.gl2.gl2shader import renpy.gl2.gl2texture import renpy.gl2.live2d import renpy.minstore # depends on lots. @UnresolvedImport import renpy.defaultstore # depends on everything. @UnresolvedImport import renpy.test import renpy.test.testmouse import renpy.test.testfocus import renpy.test.testkey import renpy.test.testast import renpy.test.testparser import renpy.test.testexecution import renpy.main global six import six sys.modules[pystr('renpy.six')] = six # Back up the Ren'Py modules. global backup if not mobile: backup = Backup() post_import()