Added libs

This commit is contained in:
Lucas
2026-01-25 13:55:46 +10:00
parent 575c682afc
commit f70af3c4ea
229 changed files with 26983 additions and 0 deletions

64
noSys/noSysModule.py Normal file
View File

@@ -0,0 +1,64 @@
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .noSysCore import NoSysCore
from libs.fspn.utils.observable import Observable
from .events import Events, DynamicEvents
class NoSysModule(Observable):
"""Base class for all modules in NoSys."""
def __init__(self, nosys_core:"NoSysCore"):
super().__init__()
self.nosys_core:NoSysCore = nosys_core
self.id = self._get_module_id()
self.config = self.nosys_core.config.get(self.package_id)
self.networks = self._get_module_networks()
self.nosys_core.subscribe_event(Events.READY, self.on_nosys_ready)
self.nosys_core.subscribe_event(DynamicEvents.module_connection(self.package_id, self.module_id), self.on_module_connection)
self.nosys_core.subscribe_event(DynamicEvents.module_disconnection(self.package_id, self.module_id), self.on_module_disconnection)
self.nosys_core.subscribe_event(DynamicEvents.module_message(self.package_id, self.module_id), self.on_module_message)
for network in self.networks:
self.nosys_core.subscribe_event(DynamicEvents.network_connection(network.get("id")), self.on_network_connection)
self.nosys_core.subscribe_event(DynamicEvents.network_disconnection(network.get("id")), self.on_network_disconnection)
def setup(self):
pass
def on_nosys_ready(self, event):
pass
def on_module_connection(self, event):
pass
def on_module_disconnection(self, event):
pass
def on_module_message(self, event):
pass
def on_network_connection(self, event):
pass
def on_network_disconnection(self, event):
pass
def teardown_module(self):
pass
def _get_module_id(self):
module_path = self.__class__.__module__
parts = module_path.split(".")
self.package_id = parts[1]
self.module_id = parts[2]
self.name = self.package_id+"_"+self.module_id
return (self.package_id, self.module_id)
def _get_module_networks(self):
return self.nosys_core.data.network_find_by_module(self.name)