Closed
Description
Originally reported by @dougthor42 in networkx/networkx#7648.
When working with long node names (~ >130 characters), create_dot
mangles the name by adding line breaks. This makes it hard to round-trip pydot.Graph
objects through the dot command and read them back in again (which is what nx.nx_pydot.pydot_layout
does).
A minimum reproduction is
>>> import networkx as nx
>>> import pydot
>>> import locale
>>> G = nx.Graph()
>>> G.add_node("=10chars= " * 14)
>>> P = nx.nx_pydot.to_pydot(G)
>>> bytes = P.create_dot()
>>> D = str(bytes, encoding=locale.getpreferredencoding())
>>> Q = pydot.graph_from_dot_data(D)[0]
>>> print(Q.get_nodes()[-1].get_name())
"=10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =\
10chars= "
>>> print(pydot.quote_id_if_necessary(str(list(G.nodes())[0])))
"=10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= =10chars= "
The two names aren't equal, and it would be nice if they were.
Metadata
Metadata
Assignees
Labels
No labels