Skip to content

Adapt to pgraph-python 1.0: plot() option names and the single Vertex class #738

Open

Description

@petercorke

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency filetech-debtKnown technical debt / deferred cleanup, not a live bug

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions