edgegraph.structure.universe.Universe#
- class edgegraph.structure.universe.Universe(*, vertices=None, laws=None, uid=None, attributes=None)#
Bases:
VertexRepresents a universe that can contain vertices and links.
This is the container of vertices. It may also reasonably be called a “graph” object – the collection of all edges and vertices under examination at any given moment. However, it is more flexible in implementation, and can actually contain any subclass of
BaseObject(though they may not appear in graph-related operations, such as traversals or searches, if they do not subclassVertex.)Pay attention that this class itself is a subclass of
Vertex; this means that while containing an entire graph (or more) on its own, this object can also be treated as a vertex inside another universe. In this way, you can create graphs of other graphs, even recursively if you like. Whether or not this is a good idea greatly depends on the situation, but the implementation allows it (this is a feature, not an implementation detail).- __init__(*, vertices=None, laws=None, uid=None, attributes=None)#
Instantiate a Universe.
- Parameters:
vertices (set[Vertex]) – a set of vertices to link to this universe
laws (UniverseLaws) – the laws of nature that apply to this universe
See also
edgegraph.structure.vertex.Vertex.__init__(), the superclass constructor
Methods
__init__(*[, vertices, laws, uid, attributes])Instantiate a Universe.
add_to_link(link)Add this vertex to a link.
add_to_universe(universe)Adds this object to a new universe.
add_vertex(vert)Adds a new vertex to this universe.
remove_from_link(link)Remove this vertex from a link.
remove_from_universe(universe)Remove this object from the specified universe.
Attributes
Get the laws of this universe.
Return a tuple of links that are attached to this object.
Get the UID of this object.
Get the universes this object belongs to.
Return a (frozen) set of the vertices in this universe.
- add_to_link(link)#
Add this vertex to a link.
Roughly equivalent to calling the
Link’sadd_vertex()with this object as an argument.If the given link is already associated with this vertex, no action is taken.
Attention
Duplicate links ARE allowed! However, the same link twice is not. The difference is that of a
==vsiscomparison.==duplicate links are allowed,isduplicate links are ignored.- Parameters:
link (Link) – the link to add this vertex to
- add_to_universe(universe)#
Adds this object to a new universe. If it is already there, no action is taken.
In addition to the action(s) taken by the superclass (
add_to_universe()), this method also adds this vertex to the universes’ reference of vertices, if needed.- Parameters:
universe (Universe) – the new universe to add this object to
- add_vertex(vert)#
Adds a new vertex to this universe.
The vertex in question will automatically have its universes updated to include this one, if needed.
- Parameters:
vert (Vertex) – the vertex to be added
- property laws: UniverseLaws#
Get the laws of this universe.
- property links: tuple[Link]#
Return a tuple of links that are attached to this object.
A tuple is given specifically to prevent the addition or removal of link objects using this attribute; it is intended to be immutable.
- remove_from_link(link)#
Remove this vertex from a link.
- Parameters:
link (Link) – the link to remove this vertex from.
- remove_from_universe(universe)#
Remove this object from the specified universe.
- property universes: frozenset[Universe]#
Get the universes this object belongs to.
Note that this gives you a
frozenset; you cannot add or remove universes from this attribute.See also
add_to_universe(),remove_from_universe()to add or remove this object from a given universe