turbograph.backend subpackage#
Package that defines the networkx
and igraph
graph backends.
The igraph
and networkx
backends are defined
in turbograph.backend.igraph_backend
and turbograph.backend.networkx_backend
, respectively.
To use a specific backend, import the corresponding wrapper class
using the turbograph.backend.factory.get_graph_backend()
function.
turbograph.backend.igraph_backend module#
Graph backend implementation using the py:mod:igraph library.
This module provides a concrete implementation of the GraphWrapper
interface using igraph.Graph
.
- class turbograph.backend.igraph_backend.IGraphWrapper(graph=None)[source]#
Bases:
GraphWrapper
[Graph
,V
]Graph backend for the igraph library.
- Parameters:
graph (G | None)
- add_vertex(vertex, **attributes)[source]#
Add a vertex with specified attributes to the graph.
- Return type:
None
- Parameters:
vertex (V) – The vertex to add.
**attributes (Unpack[VertexAttributes[V]]) – Keyword arguments representing the vertex attributes.
- delete_vertex(*vertices)[source]#
Delete specified vertices from the graph.
- Return type:
None
- Parameters:
*vertices (V) – The vertices to delete.
- Raises:
VertexError – If a vertex is not found in the graph.
- get_vertex_attribute(vertex, key)[source]#
Get the value of a specific attribute of a vertex.
- Return type:
object
- Parameters:
vertex (V) – The vertex whose attribute is to be retrieved.
key (Literal['func', 'value', 'predecessors']) – The attribute key.
- Raises:
VertexError – If the vertex is not found in the graph.
- get_vertex_attributes(vertex)[source]#
Get all attributes of a vertex.
- Return type:
VertexAttributes
[TypeVar
(V
, bound=Hashable
)]- Parameters:
vertex (V) – The vertex whose attributes are to be retrieved.
- Raises:
VertexError – If the vertex is not found in the graph.
- set_vertex_attribute(vertex, key, value)[source]#
Set the value of a specific attribute of a vertex.
- Return type:
None
- Parameters:
vertex (V) – The vertex whose attribute is to be set.
key (Literal['func', 'value', 'predecessors']) – The attribute key.
value (object) – The value to set.
- Raises:
VertexError – If the vertex is not found in the graph.
- update_vertex_attributes(vertex, attributes)[source]#
Update multiple attributes of a vertex.
- Return type:
None
- Parameters:
vertex (V) – The vertex whose attributes are to be updated.
attributes (Mapping[Literal['func', 'value', 'predecessors'], ~typing.Any]) – A mapping of attribute keys to values.
- Raises:
VertexError – If the vertex is not found in the graph.
- property call_mode: Literal['args', 'kwargs', 'arg'] | None#
Return the current call mode of the graph.
- get_neighbors(vertex, direction='all')[source]#
Get the neighbors of a vertex in the specified direction.
- Return type:
Iterable
[TypeVar
(V
, bound=Hashable
)]- Parameters:
vertex (V) – The vertex whose neighbors are to be retrieved.
direction (Literal['in', 'out', 'all']) – The direction of the edges to consider.
- Raises:
VertexError – If the vertex is not found in the graph.
- get_degree(vertex, direction='all')[source]#
Get the degree of a vertex in the specified direction.
- Return type:
int
- Parameters:
vertex (V) – The vertex whose degree is to be retrieved.
direction (Literal['in', 'out', 'all']) – The direction of the edges to consider.
- Raises:
VertexError – If the vertex is not found in the graph.
- get_subcomponent(vertex, direction='all')[source]#
Get the subcomponent of a vertex in the specified direction.
- Return type:
Iterable
[TypeVar
(V
, bound=Hashable
)]- Parameters:
vertex (V) – The vertex whose subcomponent is to be retrieved.
direction (Literal['in', 'out', 'all']) – The direction of the edges to consider
- Raises:
VertexError – If the vertex is not found in the graph.
turbograph.backend.networkx_backend module#
Graph backend implementation using the networkx
library.
This module provides a concrete implementation of the GraphWrapper
interface using networkx.DiGraph
.
- class turbograph.backend.networkx_backend.NetworkXWrapper(graph=None)[source]#
Bases:
GraphWrapper
[_DiGraph
[V
],V
]Graph backend for the networkx library using a directed graph (DiGraph).
- Parameters:
graph (G | None)
- classmethod initialize_empty()[source]#
Initialize and return an empty graph.
- Return type:
_DiGraph
[TypeVar
(V
, bound=Hashable
)]
- add_vertex(vertex, **attributes)[source]#
Add a vertex with specified attributes to the graph.
- Return type:
None
- Parameters:
vertex (V) – The vertex to add.
**attributes (Any) – Keyword arguments representing the vertex attributes.
- delete_vertex(*vertices)[source]#
Delete specified vertices from the graph.
- Return type:
None
- Parameters:
*vertices (V) – The vertices to delete.
- Raises:
VertexError – If a vertex is not found in the graph.
- get_vertex_attribute(vertex, key)[source]#
Get the value of a specific attribute of a vertex.
- Return type:
object
- Parameters:
vertex (V) – The vertex whose attribute is to be retrieved.
key (Literal['func', 'value', 'predecessors']) – The attribute key.
- Raises:
VertexError – If the vertex is not found in the graph.
- get_vertex_attributes(vertex)[source]#
Get all attributes of a vertex.
- Return type:
VertexAttributes
[TypeVar
(V
, bound=Hashable
)]- Parameters:
vertex (V) – The vertex whose attributes are to be retrieved.
- Raises:
VertexError – If the vertex is not found in the graph.
- set_vertex_attribute(vertex, key, value)[source]#
Set the value of a specific attribute of a vertex.
- Return type:
None
- Parameters:
vertex (V) – The vertex whose attribute is to be set.
key (Literal['func', 'value', 'predecessors']) – The attribute key.
value (object) – The value to set.
- Raises:
VertexError – If the vertex is not found in the graph.
- update_vertex_attributes(vertex, attributes)[source]#
Update multiple attributes of a vertex.
- Return type:
None
- Parameters:
vertex (V) – The vertex whose attributes are to be updated.
attributes (Mapping[Literal['func', 'value', 'predecessors'], ~typing.Any]) – A mapping of attribute keys to values.
- Raises:
VertexError – If the vertex is not found in the graph.
- property call_mode: Literal['args', 'kwargs', 'arg'] | None#
Return the current call mode of the graph.
- get_neighbors(vertex, direction='all')[source]#
Get the neighbors of a vertex in the specified direction.
- Return type:
Iterable
[TypeVar
(V
, bound=Hashable
)]- Parameters:
vertex (V) – The vertex whose neighbors are to be retrieved.
direction (Literal['in', 'out', 'all']) – The direction of the edges to consider.
- Raises:
VertexError – If the vertex is not found in the graph.
- get_degree(vertex, direction='all')[source]#
Get the degree of a vertex in the specified direction.
- Return type:
int
- Parameters:
vertex (V) – The vertex whose degree is to be retrieved.
direction (Literal['in', 'out', 'all']) – The direction of the edges to consider.
- Raises:
VertexError – If the vertex is not found in the graph.
- get_subcomponent(vertex, direction='all')[source]#
Get the subcomponent of a vertex in the specified direction.
- Return type:
Iterable
[TypeVar
(V
, bound=Hashable
)]- Parameters:
vertex (V) – The vertex whose subcomponent is to be retrieved.
direction (Literal['in', 'out', 'all']) – The direction of the edges to consider
- Raises:
VertexError – If the vertex is not found in the graph.
turbograph.backend.factory module#
Factory module for selecting and managing graph backends.
This module provides functions to:
Check the availability of graph backends (
networkx
andigraph
).Automatically determine the best available backend.
Retrieve the appropriate backend wrapper class for graph operations.
- turbograph.backend.factory.Backend#
Enumeration of supported graph backends.
alias of
Literal
[‘networkx’, ‘igraph’]
- turbograph.backend.factory.BACKENDS: tuple[Literal['networkx', 'igraph'], ...] = ('networkx', 'igraph')#
Tuple of available graph backends.
The first available backend is selected as the default unless explicitly specified.
- turbograph.backend.factory.backend_to_module: dict[Literal['networkx', 'igraph'], str] = {'igraph': 'igraph', 'networkx': 'networkx'}#
Mapping of backend names to their corresponding module names.
This mapping is used to dynamically check the availability of backend libraries.
- turbograph.backend.factory.get_backend_auto()[source]#
Automatically select the best available graph backend.
- Return type:
Literal
['networkx'
,'igraph'
]- Returns:
The first available backend from the predefined list (
BACKENDS
).- Raises:
ImportError – If no supported backend is installed.
Example
>>> get_backend_auto() 'networkx' # If 'networkx' is installed
- turbograph.backend.factory.get_graph_backend(backend=None)[source]#
Retrieve the appropriate backend wrapper class for graph operations.
- Return type:
type
[Union
[NetworkXWrapper
[Any
],IGraphWrapper
[Any
]]]- Parameters:
backend (Literal['networkx', 'igraph'] | None) – The backend to use. If None, the best available backend is selected automatically using
get_backend_auto()
.- Returns:
The backend wrapper class.
- Raises:
ValueError – If an unrecognized backend name is provided.
ImportError – If no supported backend is installed.