Files
morbidissimo/modman/module.py

50 lines
1006 B
Python

from pathlib import Path
from importing import load_module
from utils import printable_exception
class Module:
def __init__(self, fname):
fname = Path(fname)
self.fname = fname
self.name = fname.stem.replace("-", "_")
self.mtime = self.get_mtime()
def load(self):
try:
self.mod = mod = load_module(self.name, self.fname)
except Exception as e:
raise ModuleLoadError(printable_exception(e)) from e
try:
self.run = mod.run
except AttributeError as e:
raise MissingRunFunctionError from e
def file_exists(self):
return self.fname.is_file()
def has_changed(self):
return self.mtime != self.get_mtime()
def get_mtime(self):
return self.fname.stat().st_mtime
def __str__(self):
return f"{self.fname} -> {self.name} ({self.mtime})"
class ModuleLoadError(Exception):
pass
class MissingRunFunctionError(Exception):
pass