Repository navigation
Adapt to pgraph-python 1.0: plot() option names and the single Vertex class #738
Description
pgraph-python 1.0 renames the options of Graph.plot() and has a single Vertex class. RTB keeps working unchanged, but its calls will emit DeprecationWarnings. This issue is to adapt RTB, and to make PoseGraph forward its own option names so that RTB users never see them.
What changes in pgraph
plot() option names, which were cryptic and inconsistent (the old names keep working, with a DeprecationWarning, and passing both old and new is a TypeError):
| 0.6.5 | 1.0 |
|---|---|
vopt |
vertex_opt |
eopt |
edge_opt |
text (dict, or False to hide) |
text_opt (dict) and labels (bool) |
colorcomponents |
color_components |
force2d |
force_2d |
| (new) | arrow_opt: arrowhead options; a directed graph now draws arrowheads, and parallel edges and loops are drawn |
UVertex and DVertex are deprecated names for one Vertex class (a vertex has no direction of its own; the graph decides).
Changes in RTB
| File | Now | Change to |
|---|---|---|
mobile/PRMPlanner.py:312 |
self.graph.plot(text=False, vopt=vertex, eopt=edge, ax=ax) |
self.graph.plot(labels=False, vertex_opt=vertex, edge_opt=edge, ax=ax) |
mobile/PoseGraph.py:340 |
plot(colorcomponents=False, force2d=True, **kwargs) |
color_components=False, force_2d=True |
mobile/PoseGraph.py:448 |
eopt=eopt, force2d=True, colorcomponents=False |
edge_opt=eopt, force_2d=True, color_components=False |
mobile/PoseGraph.py:28 |
class PGVertex(pgraph.UVertex) |
pgraph.Vertex |
mobile/LatticePlanner.py:2,48 |
from pgraph import ... DVertex, class LatticeVertex(DVertex) |
Vertex |
PoseGraph.plot has its own public vopt= / eopt= keywords (lines 334-339 and 429-447). Please keep accepting those, so RTB's API does not change, but forward them to vertex_opt / edge_opt so RTB users see no deprecation warnings that they cannot act on.
PRMPlanner.plot already has the clearer vertex= / edge=, so only the call to graph.plot changes.
Ordering
The new names exist only from pgraph 1.0, and RTB's pyproject.toml lists plain pgraph-python with no lower bound. Use pgraph-python>=1.0.0 in the same change, otherwise PRMPlanner.plot raises TypeError: unexpected keyword 'labels' against an older pgraph.
Not affected
I surveyed RTB for the other 1.0 changes and found nothing else: no use of DGraph degree, connectivity or average_degree; no assignment to Edge.v1/v2; no UGraph(<positional>); no pickle or copy of graph objects; and graph.edges() is only iterated, so a list in place of a set is fine.
Activity
fix(mobile): PoseGraph access and errors, verbose output, style argum…