diff --git a/doc/source/images/generate_diagram.py b/doc/source/images/generate_diagram.py
index f1c6c0f4e..4c8c5cfc2 100644
--- a/doc/source/images/generate_diagram.py
+++ b/doc/source/images/generate_diagram.py
@@ -28,7 +28,6 @@ def get_rect_height(name, obj):
nlines = 1.5
nlines += len(getattr(obj, '_all_attrs', []))
nlines += len(getattr(obj, '_single_child_objects', []))
- nlines += len(getattr(obj, '_multi_child_objects', []))
return nlines * line_heigth
@@ -75,7 +74,6 @@ def generate_diagram(rect_pos, rect_width, figsize):
for name, pos in rect_pos.items():
obj = objs[name]
relationships = [getattr(obj, '_single_child_objects', []),
- getattr(obj, '_multi_child_objects', []),
getattr(obj, '_child_properties', [])]
for r in range(3):
@@ -122,16 +120,6 @@ def generate_diagram(rect_pos, rect_width, figsize):
facecolor='c', edgecolor='k', alpha=.5)
ax.add_patch(rect)
- # multi relationship
- relationship = list(getattr(obj, '_multi_child_objects', []))
- pos2 = (pos[1] + htotal - line_heigth * (1.5 + len(relationship))
- - rect_height)
- rect_height = len(relationship) * line_heigth
-
- rect = Rectangle((pos[0], pos2), rect_width, rect_height,
- facecolor='m', edgecolor='k', alpha=.5)
- ax.add_patch(rect)
-
# necessary attr
pos2 = (pos[1] + htotal
- line_heigth * (1.5 + len(allrelationship) + len(obj._necessary_attrs)))
diff --git a/neo/core/container.py b/neo/core/container.py
index 4877cfd60..9999e1400 100644
--- a/neo/core/container.py
+++ b/neo/core/container.py
@@ -114,13 +114,6 @@ class Container(BaseNeo):
class.__name__.lower()+'s' will be automatically
defined to hold this child and will be
initialized to an empty list.
- :_multi_child_objects: Neo container objects that can be children
- of this object. This attribute is used in
- cases where the child can have multiple
- parents of this type. An instance attribute
- named class.__name__.lower()+'s' will be
- automatically defined to hold this child and
- will be initialized to an empty list.
:_child_properties: Properties that return sub-children of a particular
type. These properties must still be defined.
This is mostly used for generate_diagram.
@@ -134,25 +127,17 @@ class Container(BaseNeo):
have one parent of this type.
:_container_child_objects: +
:_data_child_objects:
- :_child_objects: All child objects.
- :_single_child_objects: + :_multi_child_objects:
+ :_child_objects: All child objects. Same as :_single_child_objects:
:_container_child_containers: The names of the container attributes
used to store :_container_child_objects:
:_data_child_containers: The names of the container attributes used
to store :_data_child_objects:
:_single_child_containers: The names of the container attributes used
to store :_single_child_objects:
- :_multi_child_containers: The names of the container attributes used
- to store :_multi_child_objects:
- :_child_containers: All child container attributes.
- :_single_child_containers: +
- :_multi_child_containers:
+ :_child_containers: All child container attributes. Same as :_single_child_containers:
:_single_children: All objects that are children of the current object
where the child can only have one parent of
this type.
- :_multi_children: All objects that are children of the current object
- where the child can have multiple parents of
- this type.
:data_children: All data objects that are children of
the current object.
:container_children: All container objects that are children of
@@ -186,15 +171,7 @@ class Container(BaseNeo):
single parent, set its parent
to be the current object.
- :create_many_to_many_relationship(**args): For children of the current
- object that can have more
- than one parent of this
- type, put the current
- object in the parent list.
-
- :create_relationship(**args): Combines
- :create_many_to_one_relationship: and
- :create_many_to_many_relationship:
+ :create_relationship(**args): Same as :create_many_to_one_relationship:
:merge(**args): Annotations are merged based on the rules of
:merge_annotations:. Child objects with the same name
@@ -218,8 +195,6 @@ class Container(BaseNeo):
_container_child_objects = ()
# Child objects that have data and have a single parent
_data_child_objects = ()
- # Child objects that can have multiple parents
- _multi_child_objects = ()
# Properties returning children of children [of children...]
_child_properties = ()
# Containers that are listed when pretty-printing
@@ -265,27 +240,19 @@ def _single_child_containers(self):
return tuple([_container_name(child) for child in
self._single_child_objects])
- @property
- def _multi_child_containers(self):
- """
- Containers for child objects that can have multiple parents.
- """
- return tuple([_container_name(child) for child in
- self._multi_child_objects])
-
@property
def _child_objects(self):
"""
All types for child objects.
"""
- return self._single_child_objects + self._multi_child_objects
+ return self._single_child_objects
@property
def _child_containers(self):
"""
All containers for child objects.
"""
- return self._single_child_containers + self._multi_child_containers
+ return self._single_child_containers
@property
def _single_children(self):
@@ -296,15 +263,6 @@ def _single_children(self):
self._single_child_containers]
return tuple(sum(childs, []))
- @property
- def _multi_children(self):
- """
- All child objects that can have multiple parents.
- """
- childs = [list(getattr(self, attr)) for attr in
- self._multi_child_containers]
- return tuple(sum(childs, []))
-
@property
def data_children(self):
"""
@@ -322,8 +280,7 @@ def container_children(self):
Not recursive.
"""
childs = [list(getattr(self, attr)) for attr in
- self._container_child_containers +
- self._multi_child_containers]
+ self._container_child_containers]
return tuple(sum(childs, []))
@property
@@ -475,31 +432,6 @@ def create_many_to_one_relationship(self, force=False, recursive=True):
child.create_many_to_one_relationship(force=force,
recursive=True)
- def create_many_to_many_relationship(self, append=True, recursive=True):
- """
- For children of the current object that can have more than one parent
- of this type, put the current object in the parent list.
-
- If append is True add it to the list, otherwise overwrite the list.
- If recursive is True descend into child objects and create
- relationships there
- """
- parent_name = _container_name(self.__class__.__name__)
- for child in self._multi_children:
- if not hasattr(child, parent_name):
- continue
- if append:
- target = getattr(child, parent_name)
- if self not in target:
- target.append(self)
- continue
- setattr(child, parent_name, [self])
-
- if recursive:
- for child in self.container_children:
- child.create_many_to_many_relationship(append=append,
- recursive=True)
-
def create_relationship(self, force=False, append=True, recursive=True):
"""
For each child of the current object that can only have a single
@@ -517,7 +449,6 @@ def create_relationship(self, force=False, append=True, recursive=True):
relationships there
"""
self.create_many_to_one_relationship(force=force, recursive=False)
- self.create_many_to_many_relationship(append=append, recursive=False)
if recursive:
for child in self.container_children:
child.create_relationship(force=force, append=append,
@@ -565,8 +496,7 @@ def merge(self, other):
after the merge operation and should not be used further.
"""
# merge containers with the same name
- for container in (self._container_child_containers +
- self._multi_child_containers):
+ for container in self._container_child_containers:
lookup = {obj.name: obj for obj in getattr(self, container)}
ids = [id(obj) for obj in getattr(self, container)]
for obj in getattr(other, container):
diff --git a/neo/test/coretest/test_container.py b/neo/test/coretest/test_container.py
index 99296b197..4c2dca4c5 100644
--- a/neo/test/coretest/test_container.py
+++ b/neo/test/coretest/test_container.py
@@ -56,7 +56,6 @@ def test__children(self):
self.assertEqual(container._container_child_objects, ())
self.assertEqual(container._data_child_objects, ())
- self.assertEqual(container._multi_child_objects, ())
self.assertEqual(container._child_properties, ())
self.assertEqual(container._repr_pretty_containers, ())
@@ -66,12 +65,10 @@ def test__children(self):
self.assertEqual(container._container_child_containers, ())
self.assertEqual(container._data_child_containers, ())
self.assertEqual(container._single_child_containers, ())
- self.assertEqual(container._multi_child_containers, ())
self.assertEqual(container._child_objects, ())
self.assertEqual(container._child_containers, ())
- self.assertEqual(container._multi_children, ())
self.assertEqual(container._single_children, ())
self.assertEqual(container.data_children, ())
self.assertEqual(container.container_children, ())
@@ -95,7 +92,6 @@ def test__children(self):
self.assertEqual(container.size, {})
container.create_many_to_one_relationship()
- container.create_many_to_many_relationship()
container.create_relationship()
def test_filter(self):