summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Car <nicholas.car@surroundaustralia.com>2020-10-08 13:55:55 +1000
committerGitHub <noreply@github.com>2020-10-08 13:55:55 +1000
commit50e8ce8a0f3ecfb3ad4a2abe5013b0dde1b11a8c (patch)
tree2fa2b1a9be07d7a205596d04ade0738e98f4132a
parent2a696dfd9c189bd61e142c7b5a2b5f13fa8ddec3 (diff)
parent92e49eff5d5c51f5f2b8de98232a2396585f09a5 (diff)
downloadrdflib-50e8ce8a0f3ecfb3ad4a2abe5013b0dde1b11a8c.tar.gz
Merge pull request #1180 from AnjoMan/support-parsing-pathlike-object
Support parsing paths specified with pathlib
-rw-r--r--rdflib/parser.py3
-rw-r--r--test/test_parser_reads_from_pathlike_object.py26
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