Source code for hupper.interfaces

from abc import ABC, abstractmethod


[docs] class IReloaderProxy(ABC):
[docs] @abstractmethod def watch_files(self, files): """Signal to the monitor to track some custom paths."""
[docs] @abstractmethod def trigger_reload(self): """Signal the monitor to execute a reload."""
[docs] @abstractmethod def graceful_shutdown(self): """Signal the monitor to gracefully shutdown."""
[docs] class IFileMonitorFactory(ABC):
[docs] @abstractmethod def __call__(self, callback, **kw): """Return an :class:`.IFileMonitor` instance. ``callback`` is a callable to be invoked by the ``IFileMonitor`` when file changes are detected. It should accept the path of the changed file as its only parameter. Extra keyword-only arguments: ``interval`` is the value of ``reload_interval`` passed to the reloader and may be used to control behavior in the file monitor. ``logger`` is an :class:`.ILogger` instance used to record runtime output. """
[docs] class IFileMonitor(ABC):
[docs] @abstractmethod def add_path(self, path): """Start monitoring a new path."""
[docs] @abstractmethod def start(self): """Start the monitor. This method should not block."""
[docs] @abstractmethod def stop(self): """Trigger the monitor to stop. This should be called before invoking ``join``. """
[docs] @abstractmethod def join(self): """Block until the monitor has stopped."""
[docs] class ILogger(ABC):
[docs] @abstractmethod def error(self, msg): """Record an error message."""
[docs] @abstractmethod def info(self, msg): """Record an informational message."""
[docs] @abstractmethod def debug(self, msg): """Record a debug-only message."""