Missing files and requirements
This commit is contained in:
parent
cd74bb53f6
commit
5e28a8d108
6 changed files with 82 additions and 2 deletions
|
|
@ -1,9 +1,11 @@
|
|||
from services.scd import SCD
|
||||
from services.point.cartesian import PointCartesian
|
||||
from services.point.polar import PointPolar
|
||||
from services.bottom.V1 import Bottom
|
||||
|
||||
implemented = {
|
||||
"SCD": SCD,
|
||||
"PointCartesian": PointCartesian,
|
||||
"PointPolar": PointPolar,
|
||||
"Bottom": Bottom
|
||||
}
|
||||
|
|
|
|||
76
services/bottom/V1.py
Normal file
76
services/bottom/V1.py
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
from uuid import UUID
|
||||
from state.base import State
|
||||
from services.bottom.V0 import Bottom as BottomV0
|
||||
|
||||
|
||||
class Bottom:
|
||||
def __init__(self, model: UUID, state: State):
|
||||
type_model_id = state.read_dict(state.read_root(), "Bottom")
|
||||
self.type_model = UUID(state.read_value(type_model_id))
|
||||
self.model = model
|
||||
self.bottom = BottomV0(state)
|
||||
|
||||
def create_node(self, name: str, value=None):
|
||||
|
||||
if value is None:
|
||||
n = self.bottom.create_node()
|
||||
else:
|
||||
n = self.bottom.create_node(value)
|
||||
self.bottom.create_edge(self.model, n, label=name)
|
||||
|
||||
def create_edge(self, name: str, source: str, target: str):
|
||||
try:
|
||||
src, = self.bottom.read_outgoing_elements(self.model, source)
|
||||
except ValueError:
|
||||
raise RuntimeError(f"No element named {source}")
|
||||
try:
|
||||
tgt, = self.bottom.read_outgoing_elements(self.model, source)
|
||||
except ValueError:
|
||||
raise RuntimeError(f"No element named {target}")
|
||||
e = self.bottom.create_edge(src, tgt)
|
||||
self.bottom.create_edge(self.model, e, label=name)
|
||||
|
||||
def read_value(self, name: str):
|
||||
try:
|
||||
element, = self.bottom.read_outgoing_elements(self.model, name)
|
||||
return self.bottom.read_value(element)
|
||||
except ValueError:
|
||||
raise RuntimeError(f"No element named {name}")
|
||||
|
||||
def read_edge_source(self, name: str):
|
||||
try:
|
||||
element, = self.bottom.read_outgoing_elements(self.model, name)
|
||||
return self.bottom.read_value(element)
|
||||
except ValueError:
|
||||
raise RuntimeError(f"No element named {name}")
|
||||
|
||||
def read_edge_target(self, name: str):
|
||||
pass
|
||||
|
||||
def delete_element(self, name: str):
|
||||
try:
|
||||
element, = self.bottom.read_outgoing_elements(self.model, name)
|
||||
self.bottom.delete_element(element)
|
||||
except ValueError:
|
||||
raise RuntimeError(f"No element named {name}")
|
||||
|
||||
def list_elements(self):
|
||||
tm_names = {}
|
||||
for key in self.bottom.read_keys(self.type_model):
|
||||
element, = self.bottom.read_outgoing_elements(self.type_model, key)
|
||||
tm_names[element] = key
|
||||
unsorted = []
|
||||
for key in self.bottom.read_keys(self.model):
|
||||
element, = self.bottom.read_outgoing_elements(self.model, key)
|
||||
element_types = self.bottom.read_outgoing_elements(element, "Morphism")
|
||||
type_model_elements = self.bottom.read_outgoing_elements(self.type_model)
|
||||
element_type_node, = [e for e in element_types if e in type_model_elements]
|
||||
unsorted.append(f"{key} : {tm_names[element_type_node]}")
|
||||
return sorted(unsorted)
|
||||
|
||||
def to_bottom(self):
|
||||
pass # already encoded as bottom
|
||||
|
||||
def from_bottom(self):
|
||||
pass # already encoded as bottom
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue