def _fix_elements(self): super()._fix_elements() if self.name is not None and not isinstance(self.name, SchemaDefinitionName): self.name = SchemaDefinitionName(self.name) if self.id is not None and not isinstance(self.id, URI): self.id = URI(self.id) self.imports = [ v if isinstance(v, URI) else URI(v) for v in self.imports ] for k, v in self.prefixes.items(): if not isinstance(v, Prefix): self.prefixes[k] = Prefix(k, v) self.emit_prefixes = [ v if isinstance(v, NCName) else NCName(v) for v in self.emit_prefixes ] if self.default_range is not None and not isinstance( self.default_range, DefinitionName): self.default_range = DefinitionName(self.default_range) for k, v in self.subsets.items(): if not isinstance(v, SubsetDefinition): self.subsets[k] = SubsetDefinition(name=k, **({} if v is None else v)) for k, v in self.types.items(): if not isinstance(v, TypeDefinition): self.types[k] = TypeDefinition(name=k, **({} if v is None else v)) for k, v in self.slots.items(): if not isinstance(v, SlotDefinition): self.slots[k] = SlotDefinition(name=k, **({} if v is None else v)) for k, v in self.classes.items(): if not isinstance(v, ClassDefinition): self.classes[k] = ClassDefinition(name=k, **({} if v is None else v)) if self.source_file_date is not None and not isinstance( self.source_file_date, XSDDate): self.source_file_date = XSDDate(self.source_file_date) if self.generation_date is not None and not isinstance( self.generation_date, XSDDate): self.generation_date = XSDDate(self.generation_date)
def test_time(self): v = datetime.time(13, 17, 43, 279000) self.assertEqual('13:17:43.279000', XSDTime(v)) # A date can be a datetime self.assertEqual('13:17:43.279000', XSDTime(Literal( v, datatype=XSD.time))) # An RDFLIB Literal self.assertEqual('13:17:43.279000', v.isoformat()) # A string self.assertEqual('13:17:43.279000', XSDTime(XSDTime(v))) # An existing date strict() with self.assertRaises(ValueError): XSDTime('Jan 12, 2019') with self.assertRaises(ValueError): XSDTime(datetime.datetime.now()) lax() self.assertEqual('Jan 12, 2019', XSDTime('Jan 12, 2019')) XSDDate(datetime.datetime.now()) self.assertFalse(XSDTime.is_valid('Jan 12, 2019')) self.assertFalse(XSDTime.is_valid(datetime.datetime.now())) self.assertTrue(XSDTime.is_valid(v))
def test_datetime(self): v = datetime.datetime(2019, 7, 6, 17, 22, 39, 7300) self.assertEqual('2019-07-06T17:22:39.007300', XSDDateTime(v)) self.assertEqual('2019-07-06T17:22:39.007300', XSDDateTime(Literal(v, datatype=XSD.datetime))) self.assertEqual('2019-07-06T17:22:39.007300', XSDDateTime(Literal(v).value)) self.assertEqual('2019-07-06T17:22:39.007300', v.isoformat()) self.assertEqual('2019-07-06T17:22:39.007300', XSDDateTime(XSDDateTime(v))) vstr = str(Literal(v).value) self.assertEqual('2019-07-06 17:22:39.007300', vstr) # Note that this has no 'T' self.assertEqual('2019-07-06T17:22:39.007300', XSDDateTime(vstr)) with self.assertRaises(ValueError): XSDDateTime('Jan 12, 2019') lax() self.assertEqual('penguins', XSDDateTime('penguins')) XSDDateTime(datetime.datetime.now()) self.assertFalse(XSDDateTime.is_valid('Jan 12, 2019')) self.assertTrue(XSDDateTime.is_valid(datetime.datetime.now())) self.assertTrue( XSDDateTime.is_valid(XSDDate(datetime.datetime.now().date()))) self.assertTrue(XSDDateTime.is_valid(v))
def test_date(self): v = datetime.date(2019, 7, 6) self.assertEqual('2019-07-06', XSDDate(v)) # A date can be a datetime self.assertEqual('2019-07-06', XSDDate(Literal( v, datatype=XSD.date))) # An RDFLIB Literal self.assertEqual('2019-07-06', v.isoformat()) # A string self.assertEqual('2019-07-06', XSDDate(XSDDate(v))) # An existing date strict() with self.assertRaises(ValueError): XSDDate('Jan 12, 2019') with self.assertRaises(ValueError): XSDDate(datetime.datetime.now()) lax() bv = XSDDate('Jan 12, 2019') self.assertEqual('Jan 12, 2019', bv) self.assertFalse(XSDDate.is_valid(bv)) XSDDate(datetime.datetime.now()) self.assertFalse(XSDDate.is_valid('Jan 12, 2019')) self.assertFalse(XSDDate.is_valid(datetime.datetime.now())) self.assertTrue( XSDDate.is_valid(XSDDate(datetime.datetime.now().date()))) self.assertTrue(XSDDate.is_valid(v))