diff options
author | Nicholas Car <nicholas.car@surroundaustralia.com> | 2020-10-08 13:55:55 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-08 13:55:55 +1000 |
commit | 50e8ce8a0f3ecfb3ad4a2abe5013b0dde1b11a8c (patch) | |
tree | 2fa2b1a9be07d7a205596d04ade0738e98f4132a | |
parent | 2a696dfd9c189bd61e142c7b5a2b5f13fa8ddec3 (diff) | |
parent | 92e49eff5d5c51f5f2b8de98232a2396585f09a5 (diff) | |
download | rdflib-50e8ce8a0f3ecfb3ad4a2abe5013b0dde1b11a8c.tar.gz |
Merge pull request #1180 from AnjoMan/support-parsing-pathlike-object
Support parsing paths specified with pathlib
-rw-r--r-- | rdflib/parser.py | 3 | ||||
-rw-r--r-- | test/test_parser_reads_from_pathlike_object.py | 26 |
2 files changed, 29 insertions, 0 deletions
diff --git a/rdflib/parser.py b/rdflib/parser.py index 32e34f39..a6f155a6 100644 --- a/rdflib/parser.py +++ b/rdflib/parser.py @@ -12,6 +12,7 @@ want to do so through the Graph class parse method. import codecs import os +import pathlib import sys from io import BytesIO, TextIOBase, TextIOWrapper, StringIO, BufferedIOBase @@ -221,6 +222,8 @@ def create_input_source( else: if isinstance(source, str): location = source + elif isinstance(source, pathlib.Path): + location = str(source) elif isinstance(source, bytes): data = source elif hasattr(source, "read") and not isinstance(source, Namespace): diff --git a/test/test_parser_reads_from_pathlike_object.py b/test/test_parser_reads_from_pathlike_object.py new file mode 100644 index 00000000..2d2114ca --- /dev/null +++ b/test/test_parser_reads_from_pathlike_object.py @@ -0,0 +1,26 @@ +import tempfile +import rdflib +from pathlib import Path + + +def test_reading_from_path_object(): + xml_sample = """\ +<?xml version="1.0" encoding="UTF-8"?> +<rdf:RDF xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#" + xmlns:cyme="http://www.cyme.com/CIM/1.0.2#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + <cim:SwitchInfo rdf:ID="_AB16765A-B19E-4454-A58F-868D23C6CD26" /> +</rdf:RDF>""" + + with tempfile.TemporaryDirectory() as td: + sample_file = Path(td) / "sample.xml" + open(str(sample_file), 'w').write(xml_sample) + + g = rdflib.Graph() + g.parse(sample_file, publicID="") + + subject, predicate, object = next(iter(g)) + + assert "_AB16765A-B19E-4454-A58F-868D23C6CD26" in subject + assert "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" in predicate + assert "http://iec.ch/TC57/2013/CIM-schema-cim16#SwitchInfo" in object |