def test_to_python(self): dt = "2008-12-01T18:02:00" l = Literal(dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(l.toPython().isoformat(), dt)
def test_timezone_offset(self): dt = "2010-02-10T12:36:00+03:00" l = Literal(dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(l.toPython().isoformat(), dt)
def test_timezone_offset_millisecond(self): dt = "2011-01-16T19:39:18.239743+01:00" l = Literal(dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(l.toPython().isoformat(), dt)
def test_timezone_z(self): dt = "2008-12-01T18:02:00.522630Z" l = Literal(dt, datatype=URIRef("http://www.w3.org/2001/XMLSchema#dateTime")) self.assert_(isinstance(l.toPython(), datetime)) self.assertEquals(datetime_isoformat(l.toPython(), DATE_EXT_COMPLETE + "T" + "%H:%M:%S.%f" + TZ_EXT), dt) self.assertEquals(l.toPython().isoformat(), "2008-12-01T18:02:00.522630+00:00")
def test_to_python(self): dt = "2008-12-01T18:02:00" l = Literal( dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(l.toPython().isoformat(), dt)
def test_timezone_offset(self): dt = "2010-02-10T12:36:00+03:00" l = Literal( dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(l.toPython().isoformat(), dt)
def test_timezone_offset_millisecond(self): dt = "2011-01-16T19:39:18.239743+01:00" l = Literal( dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(l.toPython().isoformat(), dt)
def test_timezone_z(self): dt = "2008-12-01T18:02:00.522630Z" l = Literal(dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) self.assertTrue(isinstance(l.toPython(), datetime)) self.assertEqual(datetime_isoformat(l.toPython(), DATE_EXT_COMPLETE + 'T' + '%H:%M:%S.%f' + TZ_EXT), dt) self.assertEqual(l.toPython().isoformat(), "2008-12-01T18:02:00.522630+00:00")
def test_timezone_offset_to_utc(self): dt = "2010-02-10T12:36:00+03:00" l = Literal( dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) utc_dt = l.toPython().astimezone(UTC) self.assertEqual(datetime_isoformat(utc_dt), "2010-02-10T09:36:00Z")
def test_timezone_offset_to_utc(self): dt = "2010-02-10T12:36:00+03:00" l = Literal(dt, datatype=URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) utc_dt = l.toPython().astimezone(UTC) self.assertEqual(datetime_isoformat(utc_dt), "2010-02-10T09:36:00Z")
def test_microseconds(self): dt1 = datetime(2009, 6, 15, 23, 37, 6, 522630) l = Literal(dt1) # datetime with microseconds should be cast as a literal with using # XML Schema dateTime as the literal datatype self.assertEqual(str(l), "2009-06-15T23:37:06.522630") self.assertEqual(l.datatype, XSD.dateTime) dt2 = l.toPython() self.assertEqual(dt2, dt1)
def test_microseconds(self): dt1 = datetime(2009, 6, 15, 23, 37, 6, 522630) l = Literal(dt1) # datetime with microseconds should be cast as a literal with using # XML Schema dateTime as the literal datatype self.assertEqual(text_type(l), '2009-06-15T23:37:06.522630') self.assertEqual(l.datatype, XSD.dateTime) dt2 = l.toPython() self.assertEqual(dt2, dt1)
def test_microseconds(self): dt1 = datetime(2009, 6, 15, 23, 37, 6, 522630) l = Literal(dt1) # datetime with microseconds should be cast as a literal with using # XML Schema dateTime as the literal datatype self.assertEquals(l.title(), '2009-06-15T23:37:06.522630') self.assertEquals(l.datatype, XSD.dateTime) # 2.6.0 added the %f format to datetime.strftime, so we should have # a lossless conversion back to the datetime # http://bugs.python.org/issue1982 if sys.version_info >= (2,6,0): dt2 = l.toPython() self.assertEqual(dt2, dt1) # otherwise, we just get back the same literal again else: dt2 = l.toPython() l2 = Literal('2009-06-15T23:37:06.522630', datatype=XSD.dateTime) self.assertTrue(l2, l.toPython())
def testSpecificBinding(self) -> None: def lexify(s: str) -> str: return "--%s--" % s def unlexify(s: str) -> str: return s[2:-2] datatype = rdflib.URIRef("urn:dt:mystring") # Datatype-specific rule bind(datatype, str, unlexify, lexify, datatype_specific=True) s = "Hello" normal_l = Literal(s) self.assertEqual(str(normal_l), s) self.assertEqual(normal_l.toPython(), s) self.assertEqual(normal_l.datatype, None) specific_l = Literal("--%s--" % s, datatype=datatype) self.assertEqual(str(specific_l), lexify(s)) self.assertEqual(specific_l.toPython(), s) self.assertEqual(specific_l.datatype, datatype)
def test_microseconds(self): import platform if platform.system() == 'Java' or (platform.system() != 'Java' and sys.version_info[:2] == (2, 5)): from nose import SkipTest raise SkipTest('datetime microseconds unsupported in Python2.5 and Jython') dt1 = datetime(2009, 6, 15, 23, 37, 6, 522630) l = Literal(dt1) # datetime with microseconds should be cast as a literal with using # XML Schema dateTime as the literal datatype self.assertEqual(text_type(l), '2009-06-15T23:37:06.522630') self.assertEqual(l.datatype, XSD.dateTime) dt2 = l.toPython() self.assertEqual(dt2, dt1)
def test_microseconds(self): import platform if platform.system() == 'Java' or (platform.system() != 'Java' and sys.version_info[:2] == (2, 5)): from nose import SkipTest raise SkipTest( 'datetime microseconds unsupported in Python2.5 and Jython') dt1 = datetime(2009, 6, 15, 23, 37, 6, 522630) l = Literal(dt1) # datetime with microseconds should be cast as a literal with using # XML Schema dateTime as the literal datatype self.assertEqual(unicode(l), '2009-06-15T23:37:06.522630') self.assertEqual(l.datatype, XSD.dateTime) dt2 = l.toPython() self.assertEqual(dt2, dt1)
def test_to_python_timedelta(self): l = Literal("P4DT5H6M7S", datatype=XSD.dayTimeDuration) self.assertTrue(isinstance(l.toPython(), timedelta)) self.assertEqual(l.toPython(), parse_duration("P4DT5H6M7S"))
def test_to_python_ym_duration(self): l = Literal("P1Y2M", datatype=XSD.yearMonthDuration) self.assertTrue(isinstance(l.toPython(), Duration)) self.assertEqual(l.toPython(), parse_duration("P1Y2M"))
def test_to_python_ymdhms_duration(self): l = Literal("P1Y2M4DT5H6M7S", datatype=XSD.duration) self.assertTrue(isinstance(l.toPython(), Duration)) self.assertEqual(l.toPython(), parse_duration("P1Y2M4DT5H6M7S"))
def test_timezone(self): if sys.version_info >= (2, 6, 0): l = Literal("2008-12-01T18:02:00.522630Z", datatype=URIRef("http://www.w3.org/2001/XMLSchema#dateTime")) self.assert_(isinstance(l.toPython(), datetime))