Skip to content

Commit

Permalink
Merge pull request #1180 from AnjoMan/support-parsing-pathlike-object
Browse files Browse the repository at this point in the history
Support parsing paths specified with pathlib
  • Loading branch information
nicholascar committed Oct 8, 2020
2 parents 2a696df + 92e49ef commit 50e8ce8
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
3 changes: 3 additions & 0 deletions rdflib/parser.py
Expand Up @@ -12,6 +12,7 @@

import codecs
import os
import pathlib
import sys

from io import BytesIO, TextIOBase, TextIOWrapper, StringIO, BufferedIOBase
Expand Down Expand Up @@ -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):
Expand Down
26 changes: 26 additions & 0 deletions 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

0 comments on commit 50e8ce8

Please sign in to comment.