Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,47 @@
1.0.0

- First 1.0 release: six years of production use since the first commit
in 2020 (including as a real dependency of both the Robotics Toolbox
for Python and the Machine Vision Toolbox for Python), and this
cycle's comprehensive type-hinting, documentation, and bug-fixing
pass, felt like the right point to commit to API stability.
- Breaking (internal-only): renamed the abstract base classes `PGraph` ->
`_BaseGraph` and `Vertex` -> `BaseVertex`. Neither was ever exported
from the package or referenced by name elsewhere in the ecosystem.
- Added `iscyclic()` to test whether a graph contains a cycle.
- Added a `dim` keyword arg to `UGraph`/`DGraph`: declares that every
embedded vertex must have a coordinate of exactly that length,
enforced in `add_vertex()`.
- Added `remove_edge()`/`remove_vertex()` as explicit replacements for
the old, ambiguous `remove()` (deprecated, still works).
- Added modern type hints and reST docstrings throughout, most with a
runnable, doc-build-verified usage example.
- Fixed a cluster of real bugs found via the type-hinting and testing
pass: wrong-subclass vertices silently accepted or mangled by
`add_vertex()`; `Dict()` always creating undirected vertices even for
`DGraph`; a broken same-type check in `connect()` that never actually
caught a cross-type or cross-graph connection; `path_BFS`/`path_UCS`/
`path_Astar` validating the wrong parameter's type; `distance()` and
the path planners silently packing `None`/`nan` into results for
costless edges instead of raising; two bugs in `incidence()` that
scrambled its output; `remove()` unconditionally crashing for any
directed-graph edge; `dotfile()` closing `sys.stdout` when called
with its default arguments; and several methods crashing with a bare
`AttributeError`/`TypeError` instead of a clear message when called on
a vertex with no coordinate or no graph membership.
- Removed the vertex `connect()` "pass an existing Edge instead of a
destination vertex" option -- it was completely broken and exercised
by no test.
- `mypy` added as an informational CI check; the bulk of the
`Optional`-narrowing gap it found has been closed.
- Documentation now builds with `sphinx-pyrunblock` (replacing the
unmaintained `sphinx-autorun`) and `matplotlib.sphinxext.plot_directive`
for real embedded plot images; the doc footer now matches the
ecosystem-wide convention.
- CI: added Python 3.13/3.14 to the test matrix; PyPI publishing is now
automated via GitHub Releases and trusted publishing (see
`.github/workflows/publish.yml`) instead of a manual `twine upload`.

0.6.3

- runs with Numpy2.x
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "pgraph-python"
version = "0.6.4"
version = "1.0.0"
authors = [{ name = "Peter Corke", email = "rvc@petercorke.com" }]
description = "Mathematical graphs for Python"
readme = "README.md"
Expand Down
Loading