def _is_valid(cls: Union[type, Tuple[type, ...]], instance) -> bool: if issubclass(type(instance), cls) or isinstance(instance, (int, float, bool, date, time, datetime)): return True elif isinstance(instance, rdflib.Literal): return instance.datatype and instance.datatype != XSD.string elif isinstance(instance, str): l = Literal._to_n3(instance) return l.datatype and l.datatype != XSD.string return False
def __setattr__(self, key, value): if key != 'v': super().__setattr__(key, value) elif isinstance(value, (int, float, bool, date, datetime, time)): cl = rdflib.Literal(value) super().__setattr__('v', TypedLiteral(cl.value, cl.datatype)) elif isinstance(value, str) or not self.set_v(value): l = Literal._to_n3(value) if l is None: raise ValueError(f"Literal: {value} is not a valid literal") if l.language: vv = StringLiteralWithLanguage(l.value, l.language) elif l.datatype and l.datatype != XSD.string: vv = TypedLiteral(l.value, l.datatype) else: vv = StringLiteralNoLanguage(l.value) super().__setattr__('v', vv)
def _parse_input(cls, v: Any) -> Tuple[Any]: if issubclass(type(v), cls): return (v.literal, v.datatype) l = Literal._to_n3(v) return (l.value, l.datatype)
def _is_valid(cls, instance) -> bool: return Literal._to_n3(instance) is not None
def _is_valid(cls, instance) -> bool: return bool(Literal._to_n3(instance))