From c0c7e2a60cd6a4d87882cbbae2c447483e466e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=BCller?= <j.mueller@vr.rwth-aachen.de> Date: Wed, 15 Jan 2020 10:23:57 +0100 Subject: [PATCH] Regenerate files from swagger.yaml --- info_node/controllers/arbor_controller.py | 126 ++++++++++++++++++ info_node/controllers/nest_controller.py | 92 ++++++++++--- info_node/models/__init__.py | 5 +- info_node/models/arbor_neuron_properties.py | 90 +++++++++++++ info_node/models/multimeter_info.py | 83 +----------- info_node/models/multimeter_info_inner.py | 116 +++++++++++++++++ info_node/models/nest_neuron_properties.py | 90 +++++++++++++ info_node/test/test_arbor_controller.py | 137 ++++++++++++++++++++ 8 files changed, 637 insertions(+), 102 deletions(-) create mode 100644 info_node/controllers/arbor_controller.py create mode 100644 info_node/models/arbor_neuron_properties.py create mode 100644 info_node/models/multimeter_info_inner.py create mode 100644 info_node/models/nest_neuron_properties.py create mode 100644 info_node/test/test_arbor_controller.py diff --git a/info_node/controllers/arbor_controller.py b/info_node/controllers/arbor_controller.py new file mode 100644 index 0000000..8072389 --- /dev/null +++ b/info_node/controllers/arbor_controller.py @@ -0,0 +1,126 @@ +import connexion +import six + +from info_node.models.arbor_neuron_properties import ArborNeuronProperties # noqa: E501 +from info_node.models.simulation_time_info import SimulationTimeInfo # noqa: E501 +from info_node.models.status import Status # noqa: E501 +from info_node import util + + +def arbor_get_attributes(): # noqa: E501 + """Retrieves a list of measurable attributes + + # noqa: E501 + + + :rtype: List[str] + """ + return 'do some magic!' + + +def arbor_get_neuron_ids(): # noqa: E501 + """Retrieves the list of all neuron IDs. + + # noqa: E501 + + + :rtype: List[int] + """ + return 'do some magic!' + + +def arbor_get_neuron_properties(gids=None): # noqa: E501 + """Retrieves the properties of the specified neurons. + + # noqa: E501 + + :param gids: A list of neuron IDs queried for properties. + :type gids: List[int] + + :rtype: List[ArborNeuronProperties] + """ + return 'do some magic!' + + +def arbor_get_simulation_time_info(): # noqa: E501 + """Retrieves the time information of the current simulation. + + # noqa: E501 + + + :rtype: SimulationTimeInfo + """ + return 'do some magic!' + + +def arbor_put_attributes(attributes=None): # noqa: E501 + """Puts the available attributes + + # noqa: E501 + + :param attributes: + :type attributes: List[str] + + :rtype: Status + """ + return 'do some magic!' + + +def arbor_put_neuron_ids(gids, address): # noqa: E501 + """Registers a neuron by ID. + + # noqa: E501 + + :param gids: + :type gids: List[int] + :param address: Address of the node. + :type address: str + + :rtype: Status + """ + return 'do some magic!' + + +def arbor_put_time(time, node_address): # noqa: E501 + """Registers latest time. + + # noqa: E501 + + :param time: + :type time: float + :param node_address: + :type node_address: str + + :rtype: Status + """ + return 'do some magic!' + + +def arbor_set_neuron_properties(properties): # noqa: E501 + """Sends the properties of the specified neurons. + + # noqa: E501 + + :param properties: A list of neuron IDs queried for properties. + :type properties: list | bytes + + :rtype: Status + """ + if connexion.request.is_json: + properties = [ArborNeuronProperties.from_dict(d) for d in connexion.request.get_json()] # noqa: E501 + return 'do some magic!' + + +def arbor_set_simulation_time_info(simulation_time_info): # noqa: E501 + """Sends the time information of the current simulation. + + # noqa: E501 + + :param simulation_time_info: + :type simulation_time_info: dict | bytes + + :rtype: Status + """ + if connexion.request.is_json: + simulation_time_info = SimulationTimeInfo.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/info_node/controllers/nest_controller.py b/info_node/controllers/nest_controller.py index 23a32c7..fc9c13d 100644 --- a/info_node/controllers/nest_controller.py +++ b/info_node/controllers/nest_controller.py @@ -1,18 +1,20 @@ import connexion import six -from info_node.models.neuron_properties import NeuronProperties # noqa: E501 +from info_node.models.multimeter_info import MultimeterInfo # noqa: E501 +from info_node.models.nest_neuron_properties import NestNeuronProperties # noqa: E501 from info_node.models.simulation_time_info import SimulationTimeInfo # noqa: E501 from info_node.models.status import Status # noqa: E501 from info_node import util from info_node.models.storage import Node from info_node.models.storage import nest_storage +from info_node.models.multimeter_info_inner import MultimeterInfoInner from flask import request ok_status = Status(code=200, message='OK') -def get_gids(): # noqa: E501 +def nest_get_gids(): # noqa: E501 """Retrieves the list of all neuron IDs. # noqa: E501 @@ -23,7 +25,7 @@ def get_gids(): # noqa: E501 return nest_storage.data.index.values.tolist() -def get_gids_in_population(population_id): # noqa: E501 +def nest_get_gids_in_population(population_id): # noqa: E501 """Retrieves the list of all neuron IDs. # noqa: E501 @@ -36,7 +38,32 @@ def get_gids_in_population(population_id): # noqa: E501 return nest_storage.data[nest_storage.data["population"] == population_id].index.values.tolist() -def get_neuron_properties(gids=None): # noqa: E501 +def nest_get_multimeter_info(): # noqa: E501 + """Retreives the available multimeters and their properties + + # noqa: E501 + + + :rtype: MultimeterInfo + """ + neurons = nest_storage.data.index.values.tolist() + + for multimeter in nest_storage.multimeters: + multimeter.gids.clear() + + for gid in neurons: + neuron = nest_storage.data.loc[gid] + multimeter_ids = neuron["multimeters"] + + for m_id in multimeter_ids: + for multimeter in nest_storage.multimeters: + if multimeter.id == m_id: + multimeter.gids.append(gid) + + return nest_storage.multimeters + + +def nest_get_neuron_properties(gids=None): # noqa: E501 """Retrieves the properties of the specified neurons. # noqa: E501 @@ -44,7 +71,7 @@ def get_neuron_properties(gids=None): # noqa: E501 :param gids: A list of GIDs queried for properties. :type gids: List[int] - :rtype: List[NeuronProperties] + :rtype: List[NestNeuronProperties] """ if gids is None: gids = nest_storage.data.index.values.tolist() @@ -58,7 +85,7 @@ def get_neuron_properties(gids=None): # noqa: E501 return properties -def get_populations(): # noqa: E501 +def nest_get_populations(): # noqa: E501 """Retrieves the list of all populations. # noqa: E501 @@ -69,7 +96,7 @@ def get_populations(): # noqa: E501 return nest_storage.data["population"].dropna().unique().tolist() -def get_simulation_time_info(): # noqa: E501 +def nest_get_simulation_time_info(): # noqa: E501 """Retrieves the time information of the current simulation. # noqa: E501 @@ -81,7 +108,7 @@ def get_simulation_time_info(): # noqa: E501 return nest_storage.time_info -def put_gids(gids, address): # noqa: E501 +def nest_put_gids(gids, address): # noqa: E501 """Registers a neuron by ID. # noqa: E501 @@ -93,17 +120,41 @@ def put_gids(gids, address): # noqa: E501 :rtype: Status """ - for gid in gids: - if gid in nest_storage.data.index.values: - return Status(code=400, message="At least one gid already registered") + #for gid in gids: + # if gid in nest_storage.data.index.values: + # return Status(code=400, message="At least one gid already registered") for gid in gids: - nest_storage.data.loc[gid] = [Node(address=address), None, None] + nest_storage.data.loc[gid] = [Node(address=address), None, None, multimeters] + + return ok_status + + +def nest_put_multimeter_info(id, attributes=None, gids=None): # noqa: E501 + """Puts the available multimeters and their properties + + # noqa: E501 + + :param id: + :type id: int + :param attributes: + :type attributes: List[str] + :param gids: + :type gids: List[int] + + :rtype: Status + """ + new_mult = MultimeterInfoInner(id, attributes,[]) + + if new_mult in nest_storage.multimeters: + return Status(code=400, message="Multimeter already registered") + nest_storage.multimeters.append(new_mult) + return ok_status -def put_populations(gids): # noqa: E501 +def nest_put_populations(gids): # noqa: E501 """Registers a new population with given gids. # noqa: E501 @@ -126,11 +177,11 @@ def put_populations(gids): # noqa: E501 row["properties"].update({"population": nest_storage.num_populations + 1 }) nest_storage.num_populations += 1 - return ok_status + return nest_storage.num_populations -def put_time(time, node_address): # noqa: E501 - """Registers latest timestep. +def nest_put_time(time, node_address): # noqa: E501 + """Registers latest time. # noqa: E501 @@ -145,7 +196,7 @@ def put_time(time, node_address): # noqa: E501 return ok_status -def set_neuron_properties(properties): # noqa: E501 +def nest_set_neuron_properties(properties): # noqa: E501 """Sends the properties of the specified neurons. # noqa: E501 @@ -153,7 +204,7 @@ def set_neuron_properties(properties): # noqa: E501 :param properties: A list of GIDs queried for properties. :type properties: list | bytes - :rtype: None + :rtype: Status """ if connexion.request.is_json: properties = [NeuronProperties.from_dict(d) for d in connexion.request.get_json()] # noqa: E501 @@ -167,7 +218,8 @@ def set_neuron_properties(properties): # noqa: E501 return ok_status -def set_simulation_time_info(simulation_time_info): # noqa: E501 + +def nest_set_simulation_time_info(simulation_time_info): # noqa: E501 """Sends the time information of the current simulation. # noqa: E501 @@ -175,7 +227,7 @@ def set_simulation_time_info(simulation_time_info): # noqa: E501 :param simulation_time_info: :type simulation_time_info: dict | bytes - :rtype: None + :rtype: Status """ if connexion.request.is_json: simulation_time_info = SimulationTimeInfo.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/info_node/models/__init__.py b/info_node/models/__init__.py index a44f455..4310551 100644 --- a/info_node/models/__init__.py +++ b/info_node/models/__init__.py @@ -3,6 +3,9 @@ # flake8: noqa from __future__ import absolute_import # import models into model package -from info_node.models.neuron_properties import NeuronProperties +from info_node.models.arbor_neuron_properties import ArborNeuronProperties +from info_node.models.multimeter_info import MultimeterInfo +from info_node.models.multimeter_info_inner import MultimeterInfoInner +from info_node.models.nest_neuron_properties import NestNeuronProperties from info_node.models.simulation_time_info import SimulationTimeInfo from info_node.models.status import Status diff --git a/info_node/models/arbor_neuron_properties.py b/info_node/models/arbor_neuron_properties.py new file mode 100644 index 0000000..2e2b1d4 --- /dev/null +++ b/info_node/models/arbor_neuron_properties.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from info_node.models.base_model_ import Model +from info_node import util + + +class ArborNeuronProperties(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + def __init__(self, gid: int=None, properties: object=None): # noqa: E501 + """ArborNeuronProperties - a model defined in Swagger + + :param gid: The gid of this ArborNeuronProperties. # noqa: E501 + :type gid: int + :param properties: The properties of this ArborNeuronProperties. # noqa: E501 + :type properties: object + """ + self.swagger_types = { + 'gid': int, + 'properties': object + } + + self.attribute_map = { + 'gid': 'gid', + 'properties': 'properties' + } + + self._gid = gid + self._properties = properties + + @classmethod + def from_dict(cls, dikt) -> 'ArborNeuronProperties': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The ArborNeuronProperties of this ArborNeuronProperties. # noqa: E501 + :rtype: ArborNeuronProperties + """ + return util.deserialize_model(dikt, cls) + + @property + def gid(self) -> int: + """Gets the gid of this ArborNeuronProperties. + + + :return: The gid of this ArborNeuronProperties. + :rtype: int + """ + return self._gid + + @gid.setter + def gid(self, gid: int): + """Sets the gid of this ArborNeuronProperties. + + + :param gid: The gid of this ArborNeuronProperties. + :type gid: int + """ + + self._gid = gid + + @property + def properties(self) -> object: + """Gets the properties of this ArborNeuronProperties. + + + :return: The properties of this ArborNeuronProperties. + :rtype: object + """ + return self._properties + + @properties.setter + def properties(self, properties: object): + """Sets the properties of this ArborNeuronProperties. + + + :param properties: The properties of this ArborNeuronProperties. + :type properties: object + """ + + self._properties = properties diff --git a/info_node/models/multimeter_info.py b/info_node/models/multimeter_info.py index 57f2f38..f0cc48e 100644 --- a/info_node/models/multimeter_info.py +++ b/info_node/models/multimeter_info.py @@ -6,7 +6,7 @@ from datetime import date, datetime # noqa: F401 from typing import List, Dict # noqa: F401 from info_node.models.base_model_ import Model -from info_node.models.attribute import Attribute # noqa: F401,E501 +from info_node.models.multimeter_info_inner import MultimeterInfoInner # noqa: F401,E501 from info_node import util @@ -16,32 +16,16 @@ class MultimeterInfo(Model): Do not edit the class manually. """ - def __init__(self, name: str=None, interval: float=None, attributes: List[Attribute]=None): # noqa: E501 + def __init__(self): # noqa: E501 """MultimeterInfo - a model defined in Swagger - :param name: The name of this MultimeterInfo. # noqa: E501 - :type name: str - :param interval: The interval of this MultimeterInfo. # noqa: E501 - :type interval: float - :param attributes: The attributes of this MultimeterInfo. # noqa: E501 - :type attributes: List[Attribute] """ self.swagger_types = { - 'name': str, - 'interval': float, - 'attributes': List[Attribute] } self.attribute_map = { - 'name': 'name', - 'interval': 'interval', - 'attributes': 'attributes' } - self._name = name - self._interval = interval - self._attributes = attributes - @classmethod def from_dict(cls, dikt) -> 'MultimeterInfo': """Returns the dict as a model @@ -52,66 +36,3 @@ class MultimeterInfo(Model): :rtype: MultimeterInfo """ return util.deserialize_model(dikt, cls) - - @property - def name(self) -> str: - """Gets the name of this MultimeterInfo. - - - :return: The name of this MultimeterInfo. - :rtype: str - """ - return self._name - - @name.setter - def name(self, name: str): - """Sets the name of this MultimeterInfo. - - - :param name: The name of this MultimeterInfo. - :type name: str - """ - - self._name = name - - @property - def interval(self) -> float: - """Gets the interval of this MultimeterInfo. - - - :return: The interval of this MultimeterInfo. - :rtype: float - """ - return self._interval - - @interval.setter - def interval(self, interval: float): - """Sets the interval of this MultimeterInfo. - - - :param interval: The interval of this MultimeterInfo. - :type interval: float - """ - - self._interval = interval - - @property - def attributes(self) -> List[Attribute]: - """Gets the attributes of this MultimeterInfo. - - - :return: The attributes of this MultimeterInfo. - :rtype: List[Attribute] - """ - return self._attributes - - @attributes.setter - def attributes(self, attributes: List[Attribute]): - """Sets the attributes of this MultimeterInfo. - - - :param attributes: The attributes of this MultimeterInfo. - :type attributes: List[Attribute] - """ - - self._attributes = attributes diff --git a/info_node/models/multimeter_info_inner.py b/info_node/models/multimeter_info_inner.py new file mode 100644 index 0000000..9780387 --- /dev/null +++ b/info_node/models/multimeter_info_inner.py @@ -0,0 +1,116 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from info_node.models.base_model_ import Model +from info_node import util + + +class MultimeterInfoInner(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + def __init__(self, id: int=None, attributes: List[str]=None, gids: List[int]=None): # noqa: E501 + """MultimeterInfoInner - a model defined in Swagger + + :param id: The id of this MultimeterInfoInner. # noqa: E501 + :type id: int + :param attributes: The attributes of this MultimeterInfoInner. # noqa: E501 + :type attributes: List[str] + :param gids: The gids of this MultimeterInfoInner. # noqa: E501 + :type gids: List[int] + """ + self.swagger_types = { + 'id': int, + 'attributes': List[str], + 'gids': List[int] + } + + self.attribute_map = { + 'id': 'id', + 'attributes': 'attributes', + 'gids': 'gids' + } + + self._id = id + self._attributes = attributes + self._gids = gids + + @classmethod + def from_dict(cls, dikt) -> 'MultimeterInfoInner': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The MultimeterInfo_inner of this MultimeterInfoInner. # noqa: E501 + :rtype: MultimeterInfoInner + """ + return util.deserialize_model(dikt, cls) + + @property + def id(self) -> int: + """Gets the id of this MultimeterInfoInner. + + + :return: The id of this MultimeterInfoInner. + :rtype: int + """ + return self._id + + @id.setter + def id(self, id: int): + """Sets the id of this MultimeterInfoInner. + + + :param id: The id of this MultimeterInfoInner. + :type id: int + """ + + self._id = id + + @property + def attributes(self) -> List[str]: + """Gets the attributes of this MultimeterInfoInner. + + + :return: The attributes of this MultimeterInfoInner. + :rtype: List[str] + """ + return self._attributes + + @attributes.setter + def attributes(self, attributes: List[str]): + """Sets the attributes of this MultimeterInfoInner. + + + :param attributes: The attributes of this MultimeterInfoInner. + :type attributes: List[str] + """ + + self._attributes = attributes + + @property + def gids(self) -> List[int]: + """Gets the gids of this MultimeterInfoInner. + + + :return: The gids of this MultimeterInfoInner. + :rtype: List[int] + """ + return self._gids + + @gids.setter + def gids(self, gids: List[int]): + """Sets the gids of this MultimeterInfoInner. + + + :param gids: The gids of this MultimeterInfoInner. + :type gids: List[int] + """ + + self._gids = gids diff --git a/info_node/models/nest_neuron_properties.py b/info_node/models/nest_neuron_properties.py new file mode 100644 index 0000000..5483d03 --- /dev/null +++ b/info_node/models/nest_neuron_properties.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from info_node.models.base_model_ import Model +from info_node import util + + +class NestNeuronProperties(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + def __init__(self, gid: int=None, properties: object=None): # noqa: E501 + """NestNeuronProperties - a model defined in Swagger + + :param gid: The gid of this NestNeuronProperties. # noqa: E501 + :type gid: int + :param properties: The properties of this NestNeuronProperties. # noqa: E501 + :type properties: object + """ + self.swagger_types = { + 'gid': int, + 'properties': object + } + + self.attribute_map = { + 'gid': 'gid', + 'properties': 'properties' + } + + self._gid = gid + self._properties = properties + + @classmethod + def from_dict(cls, dikt) -> 'NestNeuronProperties': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The NestNeuronProperties of this NestNeuronProperties. # noqa: E501 + :rtype: NestNeuronProperties + """ + return util.deserialize_model(dikt, cls) + + @property + def gid(self) -> int: + """Gets the gid of this NestNeuronProperties. + + + :return: The gid of this NestNeuronProperties. + :rtype: int + """ + return self._gid + + @gid.setter + def gid(self, gid: int): + """Sets the gid of this NestNeuronProperties. + + + :param gid: The gid of this NestNeuronProperties. + :type gid: int + """ + + self._gid = gid + + @property + def properties(self) -> object: + """Gets the properties of this NestNeuronProperties. + + + :return: The properties of this NestNeuronProperties. + :rtype: object + """ + return self._properties + + @properties.setter + def properties(self, properties: object): + """Sets the properties of this NestNeuronProperties. + + + :param properties: The properties of this NestNeuronProperties. + :type properties: object + """ + + self._properties = properties diff --git a/info_node/test/test_arbor_controller.py b/info_node/test/test_arbor_controller.py new file mode 100644 index 0000000..b52079c --- /dev/null +++ b/info_node/test/test_arbor_controller.py @@ -0,0 +1,137 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from info_node.models.arbor_neuron_properties import ArborNeuronProperties # noqa: E501 +from info_node.models.simulation_time_info import SimulationTimeInfo # noqa: E501 +from info_node.models.status import Status # noqa: E501 +from info_node.test import BaseTestCase + + +class TestArborController(BaseTestCase): + """ArborController integration test stubs""" + + def test_arbor_get_attributes(self): + """Test case for arbor_get_attributes + + Retrieves a list of measurable attributes + """ + response = self.client.open( + '//arbor/attributes', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_get_neuron_ids(self): + """Test case for arbor_get_neuron_ids + + Retrieves the list of all neuron IDs. + """ + response = self.client.open( + '//arbor/neuron_ids', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_get_neuron_properties(self): + """Test case for arbor_get_neuron_properties + + Retrieves the properties of the specified neurons. + """ + query_string = [('gids', 56)] + response = self.client.open( + '//arbor/neuron_properties', + method='GET', + query_string=query_string) + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_get_simulation_time_info(self): + """Test case for arbor_get_simulation_time_info + + Retrieves the time information of the current simulation. + """ + response = self.client.open( + '//arbor/simulation_time_info', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_put_attributes(self): + """Test case for arbor_put_attributes + + Puts the available attributes + """ + query_string = [('attributes', 'attributes_example')] + response = self.client.open( + '//arbor/attributes', + method='PUT', + content_type='application/json', + query_string=query_string) + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_put_neuron_ids(self): + """Test case for arbor_put_neuron_ids + + Registers a neuron by ID. + """ + query_string = [('gids', 56), + ('address', 'address_example')] + response = self.client.open( + '//arbor/neuron_ids', + method='PUT', + content_type='application/json', + query_string=query_string) + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_put_time(self): + """Test case for arbor_put_time + + Registers latest time. + """ + query_string = [('time', 1.2), + ('node_address', 'node_address_example')] + response = self.client.open( + '//arbor/current_time', + method='PUT', + query_string=query_string) + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_set_neuron_properties(self): + """Test case for arbor_set_neuron_properties + + Sends the properties of the specified neurons. + """ + properties = [ArborNeuronProperties()] + response = self.client.open( + '//arbor/neuron_properties', + method='PUT', + data=json.dumps(properties), + content_type='application/json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_arbor_set_simulation_time_info(self): + """Test case for arbor_set_simulation_time_info + + Sends the time information of the current simulation. + """ + simulation_time_info = SimulationTimeInfo() + response = self.client.open( + '//arbor/simulation_time_info', + method='PUT', + data=json.dumps(simulation_time_info), + content_type='application/json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() -- GitLab