Renaming Bubble folder, some docs updates
This commit is contained in:
		
							parent
							
								
									be2156afe0
								
							
						
					
					
						commit
						68ebf88e6e
					
				|  | @ -1,4 +1,4 @@ | |||
| bin | ||||
| bin/ | ||||
| lib* | ||||
| share/ | ||||
| **/__pycache__/ | ||||
|  | @ -7,4 +7,4 @@ src/webui/htmx-extensions/ | |||
| src/webui/res/js/node_modules/                    | ||||
| src/daisy/ | ||||
| src/catch/ | ||||
| src/logs | ||||
| src/logs/ | ||||
|  |  | |||
|  | @ -1,3 +0,0 @@ | |||
| # Network map representation | ||||
| 
 | ||||
| ### *class* Bubble.map.Network(icg=None, file=None) | ||||
|  | @ -1,3 +0,0 @@ | |||
| # Data routing logic and data | ||||
| 
 | ||||
| ### *class* Bubble.router.Router(cLog, nfpath='server.info') | ||||
|  | @ -0,0 +1,100 @@ | |||
| # Network map representation | ||||
| 
 | ||||
| ### *class* Siph.map.Network(file=None) | ||||
| 
 | ||||
| Layered graph network | ||||
| 
 | ||||
| [🔗 Source](https://git.utopic.work/PierMesh/piermesh/src/branch/main/src/Bubble/map.py) | ||||
| 
 | ||||
| #### omap | ||||
| 
 | ||||
| The outer network map of nodes | ||||
| 
 | ||||
| * **Type:** | ||||
|   nx.Graph | ||||
| 
 | ||||
| #### imap | ||||
| 
 | ||||
| The inner network map of peers | ||||
| 
 | ||||
| * **Type:** | ||||
|   nx.Graph | ||||
| 
 | ||||
| #### emaps | ||||
| 
 | ||||
| Extra network maps (TODO) | ||||
| 
 | ||||
| * **Type:** | ||||
|   list[nx.Graph] | ||||
| 
 | ||||
| #### lookup | ||||
| 
 | ||||
| Map of PierMesh node IDs to MeshTastic node IDs | ||||
| 
 | ||||
| * **Type:** | ||||
|   dict | ||||
| 
 | ||||
| #### addLookup(onodeID: str, mnodeID: str) | ||||
| 
 | ||||
| Adds node to lookup | ||||
| 
 | ||||
| * **Parameters:** | ||||
|   * **onodeID** (*str*) – Internal nodeID | ||||
|   * **mnodeID** (*str*) – MeshTastic nodeID | ||||
| 
 | ||||
| #### addie(nodea: int, nodeb: int) | ||||
| 
 | ||||
| Add edge between peers on inner map | ||||
| 
 | ||||
| #### addin(id: int) | ||||
| 
 | ||||
| Add peer on inner map | ||||
| 
 | ||||
| #### id | ||||
| 
 | ||||
| PierMesh node ID | ||||
| 
 | ||||
| * **Type:** | ||||
|   int | ||||
| 
 | ||||
| #### addoe(nodea: int, nodeb: int) | ||||
| 
 | ||||
| Add edge between nodes on outer map | ||||
| 
 | ||||
| #### addon(id: int) | ||||
| 
 | ||||
| Add node on outer map | ||||
| 
 | ||||
| #### id | ||||
| 
 | ||||
| PierMesh node ID | ||||
| 
 | ||||
| * **Type:** | ||||
|   int | ||||
| 
 | ||||
| #### doLookup(onodeID: str) | ||||
| 
 | ||||
| Get MeshTastic ID from PierMesh ID | ||||
| 
 | ||||
| #### export(path: str) | ||||
| 
 | ||||
| Export network map to binary file (msgpack encoded) | ||||
| 
 | ||||
| #### path | ||||
| 
 | ||||
| File output path | ||||
| 
 | ||||
| * **Type:** | ||||
|   str | ||||
| 
 | ||||
| #### getRoute(senderNode: int, recipientNode: int) | ||||
| 
 | ||||
| Get the shortest route between two nodes on the outer map (Needs checkup) | ||||
| 
 | ||||
| #### mimport(path: str) | ||||
| 
 | ||||
| Import map from path | ||||
| 
 | ||||
| #### render(pathPrefix: str = '') | ||||
| 
 | ||||
| Render outer and inner network mao to disk at the given path prefix | ||||
|  | @ -0,0 +1,3 @@ | |||
| # Data routing logic and data | ||||
| 
 | ||||
| ### *class* Siph.router.Router(cLog, nfpath='server.info') | ||||
|  | @ -31,11 +31,28 @@ sphinx-quickstart on Fri Jul 26 23:30:55 2024. --> | |||
|     * [`TUI.do_set_mem()`](/PierMesh/piermesh/src/branch/main/docs/ui.md#ui.TUI.do_set_mem) | ||||
|     * [`TUI.do_write_line()`](/PierMesh/piermesh/src/branch/main/docs/ui.md#ui.TUI.do_write_line) | ||||
|     * [`TUI.on_mount()`](/PierMesh/piermesh/src/branch/main/docs/ui.md#ui.TUI.on_mount) | ||||
| * [Configuration utilities](/PierMesh/piermesh/src/branch/main/docs/Bubble/config.md) | ||||
| * [Network map representation](/PierMesh/piermesh/src/branch/main/docs/Bubble/map.md) | ||||
|   * [`Network`](/PierMesh/piermesh/src/branch/main/docs/Bubble/map.md#Bubble.map.Network) | ||||
| * [Data routing logic and data](/PierMesh/piermesh/src/branch/main/docs/Bubble/router.md) | ||||
|   * [`Router`](/PierMesh/piermesh/src/branch/main/docs/Bubble/router.md#Bubble.router.Router) | ||||
| * [Configuration utilities](/PierMesh/piermesh/src/branch/main/docs/Siph/config.md) | ||||
| * [Network map representation](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md) | ||||
|   * [`Network`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network) | ||||
|     * [`Network.omap`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.omap) | ||||
|     * [`Network.imap`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.imap) | ||||
|     * [`Network.emaps`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.emaps) | ||||
|     * [`Network.lookup`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.lookup) | ||||
|     * [`Network.addLookup()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.addLookup) | ||||
|     * [`Network.addie()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.addie) | ||||
|     * [`Network.addin()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.addin) | ||||
|       * [`Network.id`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.id) | ||||
|     * [`Network.addoe()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.addoe) | ||||
|     * [`Network.addon()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.addon) | ||||
|       * [`Network.id`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#id0) | ||||
|     * [`Network.doLookup()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.doLookup) | ||||
|     * [`Network.export()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.export) | ||||
|       * [`Network.path`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.path) | ||||
|     * [`Network.getRoute()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.getRoute) | ||||
|     * [`Network.mimport()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.mimport) | ||||
|     * [`Network.render()`](/PierMesh/piermesh/src/branch/main/docs/Siph/map.md#Siph.map.Network.render) | ||||
| * [Data routing logic and data](/PierMesh/piermesh/src/branch/main/docs/Siph/router.md) | ||||
|   * [`Router`](/PierMesh/piermesh/src/branch/main/docs/Siph/router.md#Siph.router.Router) | ||||
| * [Schemaless binary database](/PierMesh/piermesh/src/branch/main/docs/Components/daisy.md) | ||||
|   * [`Daisy`](/PierMesh/piermesh/src/branch/main/docs/Components/daisy.md#Components.daisy.Daisy) | ||||
|     * [`Daisy.get()`](/PierMesh/piermesh/src/branch/main/docs/Components/daisy.md#Components.daisy.Daisy.get) | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ Map new network data to internal network map | |||
| Get catch and return the data to a peer | ||||
| 
 | ||||
| #### SEE ALSO | ||||
| [`Bubble.router.Router`](/PierMesh/piermesh/src/branch/main/docs/Bubble/router.md#Bubble.router.Router) | ||||
| `Bubble.router.Router` | ||||
| : Routing class | ||||
| 
 | ||||
| #### *async* action_sendToPeer(data: dict) | ||||
|  |  | |||
|  | @ -1,71 +0,0 @@ | |||
| import networkx as nx | ||||
| import msgpack | ||||
| import json | ||||
| import matplotlib.pyplot as plt | ||||
| 
 | ||||
| # TODO: Extra maps logic | ||||
| 
 | ||||
| 
 | ||||
| class Network: | ||||
|     """ | ||||
|     Layered graph network | ||||
| 
 | ||||
|     `🔗 Source <https://git.utopic.work/PierMesh/piermesh/src/branch/main/src/Bubble/map.py>`_ | ||||
|     """ | ||||
| 
 | ||||
|     def __init__(self, icg=None, file=None): | ||||
|         self.omap = nx.Graph() | ||||
|         self.imap = nx.Graph() | ||||
|         self.emaps = [] | ||||
|         self.lookup = {} | ||||
| 
 | ||||
|     def addLookup(self, onodeID, mnodeID): | ||||
|         self.lookup[onodeID] = mnodeID | ||||
| 
 | ||||
|     def doLookup(self, onodeID): | ||||
|         if onodeID in self.lookup.keys(): | ||||
|             return self.lookup[onodeID] | ||||
|         else: | ||||
|             return False | ||||
| 
 | ||||
|     def export(self, path): | ||||
|         n = {} | ||||
|         n["omap"] = nx.to_dict_of_dicts(self.omap) | ||||
|         n["imap"] = nx.to_dict_of_dicts(self.imap) | ||||
|         n["emaps"] = [] | ||||
|         for e in self.emaps: | ||||
|             n["emaps"].append(nx.to_dict_of_dicts(e)) | ||||
|         # TODO: Daisy | ||||
|         with open(path, "wb") as f: | ||||
|             f.write(msgpack.dumps(n)) | ||||
|         with open(path + ".json", "w") as f: | ||||
|             f.write(json.dumps(n)) | ||||
| 
 | ||||
|     def mimport(self, path): | ||||
|         ndata = "" | ||||
|         with open(path, "rb") as f: | ||||
|             ndata = msgpack.loads(f.read()) | ||||
|         self.omap = nx.Graph(ndata["omap"]) | ||||
|         self.imap = nx.Graph(ndata["imap"]) | ||||
|         self.emaps = [] | ||||
|         for e in ndata["emaps"]: | ||||
|             self.emaps.append(nx.Graph(e)) | ||||
| 
 | ||||
|     def addon(self, id): | ||||
|         self.omap.add_node(id) | ||||
| 
 | ||||
|     def addoe(self, nodea, nodeb): | ||||
|         self.omap.add_edge(nodea, nodeb) | ||||
| 
 | ||||
|     def addin(self, id): | ||||
|         self.imap.add_node(id) | ||||
| 
 | ||||
|     def addie(self, nodea, nodeb): | ||||
|         self.imap.add_edge(nodea, nodeb) | ||||
| 
 | ||||
|     def getRoute(self, senderNode, recipientNode): | ||||
|         return nx.shortest_path(self.omap, senderNode, recipientNode) | ||||
| 
 | ||||
|     def render(self): | ||||
|         nx.draw(self.omap) | ||||
|         plt.savefig("tmp/omap.png") | ||||
|  | @ -0,0 +1,145 @@ | |||
| import networkx as nx | ||||
| import msgpack | ||||
| import json | ||||
| import matplotlib.pyplot as plt | ||||
| 
 | ||||
| # TODO: Extra maps logic | ||||
| 
 | ||||
| 
 | ||||
| class Network: | ||||
|     """ | ||||
|     Layered graph network | ||||
| 
 | ||||
|     `🔗 Source <https://git.utopic.work/PierMesh/piermesh/src/branch/main/src/Bubble/map.py>`_ | ||||
| 
 | ||||
|     Attributes | ||||
|     ---------- | ||||
|     omap: nx.Graph | ||||
|         The outer network map of nodes | ||||
|     imap: nx.Graph | ||||
|         The inner network map of peers | ||||
|     emaps: list[nx.Graph] | ||||
|         Extra network maps (TODO) | ||||
|     lookup: dict | ||||
|         Map of PierMesh node IDs to MeshTastic node IDs | ||||
|     """ | ||||
| 
 | ||||
|     def __init__(self, file=None): | ||||
|         """ | ||||
|         Parameters | ||||
|         ---------- | ||||
|         file: | ||||
|             If set, load network file | ||||
|         """ | ||||
|         if file == None: | ||||
|             self.omap = nx.Graph() | ||||
|             self.imap = nx.Graph() | ||||
|             self.emaps = [] | ||||
|         else: | ||||
|             self.mimport() | ||||
|         self.lookup = {} | ||||
| 
 | ||||
|     def addLookup(self, onodeID: str, mnodeID: str): | ||||
|         """ | ||||
|         Adds node to lookup | ||||
| 
 | ||||
|         Parameters | ||||
|         ---------- | ||||
|         onodeID: str | ||||
|             Internal nodeID | ||||
|         mnodeID: str | ||||
|             MeshTastic nodeID | ||||
|         """ | ||||
|         self.lookup[onodeID] = mnodeID | ||||
| 
 | ||||
|     def doLookup(self, onodeID: str): | ||||
|         """ | ||||
|         Get MeshTastic ID from PierMesh ID | ||||
|         """ | ||||
|         if onodeID in self.lookup.keys(): | ||||
|             return self.lookup[onodeID] | ||||
|         else: | ||||
|             return False | ||||
| 
 | ||||
|     def export(self, path: str): | ||||
|         """ | ||||
|         Export network map to binary file (msgpack encoded) | ||||
| 
 | ||||
|         Attributes | ||||
|         ---------- | ||||
|         path: str | ||||
|             File output path | ||||
|         """ | ||||
|         n = {} | ||||
|         n["omap"] = nx.to_dict_of_dicts(self.omap) | ||||
|         n["imap"] = nx.to_dict_of_dicts(self.imap) | ||||
|         n["emaps"] = [] | ||||
|         for e in self.emaps: | ||||
|             n["emaps"].append(nx.to_dict_of_dicts(e)) | ||||
|         # TODO: Daisy | ||||
|         with open(path, "wb") as f: | ||||
|             f.write(msgpack.dumps(n)) | ||||
|         with open(path + ".json", "w") as f: | ||||
|             f.write(json.dumps(n)) | ||||
| 
 | ||||
|     def mimport(self, path: str): | ||||
|         """ | ||||
|         Import map from path | ||||
|         """ | ||||
|         ndata = "" | ||||
|         with open(path, "rb") as f: | ||||
|             ndata = msgpack.loads(f.read()) | ||||
|         self.omap = nx.Graph(ndata["omap"]) | ||||
|         self.imap = nx.Graph(ndata["imap"]) | ||||
|         self.emaps = [] | ||||
|         for e in ndata["emaps"]: | ||||
|             self.emaps.append(nx.Graph(e)) | ||||
| 
 | ||||
|     def addon(self, id: int): | ||||
|         """ | ||||
|         Add node on outer map | ||||
| 
 | ||||
|         Attributes | ||||
|         ---------- | ||||
|         id: int | ||||
|             PierMesh node ID | ||||
|         """ | ||||
|         self.omap.add_node(id) | ||||
| 
 | ||||
|     def addoe(self, nodea: int, nodeb: int): | ||||
|         """ | ||||
|         Add edge between nodes on outer map | ||||
|         """ | ||||
|         self.omap.add_edge(nodea, nodeb) | ||||
| 
 | ||||
|     def addin(self, id: int): | ||||
|         """ | ||||
|         Add peer on inner map | ||||
| 
 | ||||
|         Attributes | ||||
|         ---------- | ||||
|         id: int | ||||
|             PierMesh node ID | ||||
|         """ | ||||
|         self.imap.add_node(id) | ||||
| 
 | ||||
|     def addie(self, nodea: int, nodeb: int): | ||||
|         """ | ||||
|         Add edge between peers on inner map | ||||
|         """ | ||||
|         self.imap.add_edge(nodea, nodeb) | ||||
| 
 | ||||
|     def getRoute(self, senderNode: int, recipientNode: int): | ||||
|         """ | ||||
|         Get the shortest route between two nodes on the outer map (Needs checkup) | ||||
|         """ | ||||
|         return nx.shortest_path(self.omap, senderNode, recipientNode) | ||||
| 
 | ||||
|     def render(self, pathPrefix: str = ""): | ||||
|         """ | ||||
|         Render outer and inner network mao to disk at the given path prefix | ||||
|         """ | ||||
|         nx.draw(self.omap) | ||||
|         plt.savefig(pathPrefix + "omap.png") | ||||
|         nx.draw(self.imap) | ||||
|         plt.savefig(pathPrefix + "imap.png") | ||||
|  | @ -1,5 +1,5 @@ | |||
| Network map representation | ||||
| ========================== | ||||
| 
 | ||||
| .. autoclass:: Bubble.map.Network | ||||
| .. autoclass:: Siph.map.Network | ||||
|       :members: | ||||
|  | @ -1,18 +1,8 @@ | |||
| import msgpack | ||||
| from Bubble.map import Network | ||||
| from Siph.map import Network | ||||
| from Components.daisy import Catch | ||||
| from Components.daisy import Cache | ||||
| import random, logging | ||||
| 
 | ||||
| # DONE Catch integration | ||||
| # TODO: Catch examples | ||||
| # | ||||
| # 🐟+🔥+🤤 | ||||
| # prmh.catchexample.rabbit.hutch | ||||
| # 🟥|🟧|🟦 | ||||
| # 🖐️📡🌍 | ||||
| # prmh@Ashwood_Skye | ||||
| # 💻💻 | ||||
| import random | ||||
| 
 | ||||
| 
 | ||||
| class Router: | ||||
|  | @ -1,5 +1,5 @@ | |||
| Data routing logic and data | ||||
| =========================== | ||||
| 
 | ||||
| .. autoclass:: Bubble.router.Router | ||||
| .. autoclass:: Siph.router.Router | ||||
|       :members: | ||||
|  | @ -9,8 +9,8 @@ PierMesh documentation | |||
|    :glob: | ||||
| 
 | ||||
|    run | ||||
|    ../ui | ||||
|    ../Bubble/* | ||||
|    ui | ||||
|    ../Siph/* | ||||
|    ../Components/* | ||||
|    ../Cryptography/* | ||||
|    ../Filters/* | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| from meshtastic import logging, os | ||||
| from Filters.base import Filter | ||||
| from Bubble.router import Router | ||||
| from Siph.router import Router | ||||
| from webui.serve import Server | ||||
| from Transmission.transmission import Transmitter | ||||
| import asyncio | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue