Missing files and requirements
This commit is contained in:
parent
cd74bb53f6
commit
5e28a8d108
6 changed files with 82 additions and 2 deletions
|
|
@ -5,6 +5,7 @@ from pprint import pprint
|
||||||
import prompt_questions as questions
|
import prompt_questions as questions
|
||||||
from inspect import signature
|
from inspect import signature
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
from ast import literal_eval
|
||||||
|
|
||||||
|
|
||||||
def generate_context_question(ctx_type, services):
|
def generate_context_question(ctx_type, services):
|
||||||
|
|
@ -53,7 +54,7 @@ def main():
|
||||||
args_questions = []
|
args_questions = []
|
||||||
types = {}
|
types = {}
|
||||||
for p in signature(method).parameters.values():
|
for p in signature(method).parameters.values():
|
||||||
types[p.name] = p.annotation # can't use filter in question dict, doesn't work for some reason...
|
types[p.name] = p.annotation if p.annotation else literal_eval # can't use filter in question dict, doesn't work for some reason...
|
||||||
if p.annotation == UUID:
|
if p.annotation == UUID:
|
||||||
args_questions.append({
|
args_questions.append({
|
||||||
'type': 'list',
|
'type': 'list',
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
pytest==6.2.4
|
pytest==6.2.4
|
||||||
neo4j==4.3.4
|
neo4j==4.3.4
|
||||||
rdflib==6.0.0
|
rdflib==6.0.0
|
||||||
|
PyInquirer==1.0.3
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
from services.scd import SCD
|
from services.scd import SCD
|
||||||
from services.point.cartesian import PointCartesian
|
from services.point.cartesian import PointCartesian
|
||||||
from services.point.polar import PointPolar
|
from services.point.polar import PointPolar
|
||||||
|
from services.bottom.V1 import Bottom
|
||||||
|
|
||||||
implemented = {
|
implemented = {
|
||||||
"SCD": SCD,
|
"SCD": SCD,
|
||||||
"PointCartesian": PointCartesian,
|
"PointCartesian": PointCartesian,
|
||||||
"PointPolar": PointPolar,
|
"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
|
||||||
|
|
||||||
BIN
state.p
BIN
state.p
Binary file not shown.
2
state/test/fixtures/state.py
vendored
2
state/test/fixtures/state.py
vendored
|
|
@ -7,7 +7,7 @@ from state.neo4jstate import Neo4jState
|
||||||
@pytest.fixture(params=[
|
@pytest.fixture(params=[
|
||||||
(PyState,),
|
(PyState,),
|
||||||
(RDFState, "http://example.org/#"),
|
(RDFState, "http://example.org/#"),
|
||||||
(Neo4jState,)
|
# (Neo4jState,)
|
||||||
])
|
])
|
||||||
def state(request):
|
def state(request):
|
||||||
if len(request.param) > 1:
|
if len(request.param) > 1:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue