diff options
author | Dan Schult <dschult@colgate.edu> | 2015-10-02 20:09:46 -0400 |
---|---|---|
committer | Dan Schult <dschult@colgate.edu> | 2015-10-02 20:09:46 -0400 |
commit | 159740eec851bf1d5744005a009a026e9dca39c1 (patch) | |
tree | a9db8cf44e5fcc5b9796ee208bcb6a3851346fe6 | |
parent | 1df35d3d1c35435844b7e275195edfef26b6ace3 (diff) | |
parent | 5daac75d3673411c18248a4dcd2f59985021c2f5 (diff) | |
download | networkx-159740eec851bf1d5744005a009a026e9dca39c1.tar.gz |
Merge pull request #1781 from wasade/issue1780
Allow GML read and write of _ characters
-rw-r--r-- | networkx/readwrite/gml.py | 2 | ||||
-rw-r--r-- | networkx/readwrite/tests/test_gml.py | 84 |
2 files changed, 85 insertions, 1 deletions
diff --git a/networkx/readwrite/gml.py b/networkx/readwrite/gml.py index d9e49d33..d3c8b852 100644 --- a/networkx/readwrite/gml.py +++ b/networkx/readwrite/gml.py @@ -286,7 +286,7 @@ def parse_gml_lines(lines, label, destringizer): """ def tokenize(): patterns = [ - r'[A-Za-z][0-9A-Za-z]*\s+', # keys + r'[A-Za-z][0-9A-Za-z_]*\s+', # keys r'[+-]?(?:[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)(?:[Ee][+-]?[0-9]+)?', # reals r'[+-]?[0-9]+', # ints r'".*?"', # strings diff --git a/networkx/readwrite/tests/test_gml.py b/networkx/readwrite/tests/test_gml.py index 85b06912..04206103 100644 --- a/networkx/readwrite/tests/test_gml.py +++ b/networkx/readwrite/tests/test_gml.py @@ -65,6 +65,90 @@ graph [ ] ] """ + def test_parse_gml_cytoscape_bug(self): + # example from issue #321, originally #324 in trac + cytoscape_example = """ +Creator "Cytoscape" +Version 1.0 +graph [ + node [ + root_index -3 + id -3 + graphics [ + x -96.0 + y -67.0 + w 40.0 + h 40.0 + fill "#ff9999" + type "ellipse" + outline "#666666" + outline_width 1.5 + ] + label "node2" + ] + node [ + root_index -2 + id -2 + graphics [ + x 63.0 + y 37.0 + w 40.0 + h 40.0 + fill "#ff9999" + type "ellipse" + outline "#666666" + outline_width 1.5 + ] + label "node1" + ] + node [ + root_index -1 + id -1 + graphics [ + x -31.0 + y -17.0 + w 40.0 + h 40.0 + fill "#ff9999" + type "ellipse" + outline "#666666" + outline_width 1.5 + ] + label "node0" + ] + edge [ + root_index -2 + target -2 + source -1 + graphics [ + width 1.5 + fill "#0000ff" + type "line" + Line [ + ] + source_arrow 0 + target_arrow 3 + ] + label "DirectedEdge" + ] + edge [ + root_index -1 + target -1 + source -3 + graphics [ + width 1.5 + fill "#0000ff" + type "line" + Line [ + ] + source_arrow 0 + target_arrow 3 + ] + label "DirectedEdge" + ] +] +""" + nx.parse_gml(cytoscape_example) def test_parse_gml(self): G = nx.parse_gml(self.simple_data, label='label') |