Skip to content

wxgeo/smallgraphlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

138 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Small Graph Lib

Installing

Basic installation

Smallgraphlib is on PyPI, so you can download and install it with pip, as any usual python package.

pip install smallgraphlib

Development version

For development, please clone the last version from Github:

git clone https://github.com/wxgeo/smallgraphlib

You will then need uv to manage the development process. If needed, install it on Linux or Mac with:

curl -LsSf https://astral.sh/uv/install.sh | sh

More information on uv installation

It is also recommended to install just command runner, to execute the recipes of the justfile.

uv tool install rust-just

Usage

Main classes are Graph, DirectedGraph, WeightedGraph and WeightedDirectedGraph:

>>> from smallgraphlib import DirectedGraph
>>> g = DirectedGraph(["A", "B", "C"], ("A", "B"), ("B", "A"), ("B", "C"))
>>> g.is_simple
True
>>> g.is_complete
False
>>> g.is_directed
True
>>> g.adjacency_matrix
[[0, 1, 0], [1, 0, 1], [0, 0, 0]]
>>> g.degree
3
>>> g.order
3
>>> g.is_eulerian
False
>>> g.is_semi_eulerian
True

Special graphs may be generated using factory functions:

>>> from smallgraphlib import complete_graph, complete_bipartite_graph
>>> K5 = complete_graph(5)
>>> len(K5.greedy_coloring)
5
>>> K33 = complete_bipartite_graph(3, 3)
>>> K33.degree
6
>>> K33.diameter
2

If the graph is not too complex, Tikz code may be generated:

>>> g.as_tikz()
...

Development

  1. Get development version and uv

  2. Install dependencies including development tools:

uv sync
  1. Optionally, update dependencies and development tools:
uv sync --upgrade
  1. Optionally, install library in editable mode:
uv pip install -e smallgraphlib
  1. Make changes, add tests.

  2. Launch tests:

just test
  1. Everything OK? Commit. :)

About

Minimalist python graph library

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages