2.4. aas.model.datatypes - Native Python Datatypes for Simple XSD-types
This module defines native Python types for all simple built-in XSD datatypes, as well as functions to (de)serialize them from/into their lexical XML representation.
See https://www.w3.org/TR/xmlschema-2/#built-in-datatypes for the XSD simple type hierarchy and more information on the datatypes. All types from this type hierarchy (except for token and its descendants) are implemented or aliased in this module using their pythonized: Duration, DateTime, GMonthDay, String, Integer, Decimal, Short …. These types are meant to be used directly for data values in the context of Asset Administration Shells.
There are three conversion functions for usage in BaSyx Python SDK’s model and adapters:
xsd_repr()serializes any XSD type from this module into it’s lexical representationfrom_xsd()parses an XSD type from its lexical representation (its required to name the type for unambiguous conversion)trivial_cast()type-cast a python value into an XSD type, if this is trivially possible. Meant for fixing the type ofProperties'values automatically, esp. for literal values.
- class basyx.aas.model.datatypes.AnyURI
- class basyx.aas.model.datatypes.Base64Binary
- class basyx.aas.model.datatypes.Byte(*args, **kwargs)
- class basyx.aas.model.datatypes.Date(year: int, month: Optional[int] = None, day: Optional[int] = None, tzinfo: Optional[datetime.tzinfo] = None)
- property tzinfo
timezone info object
- utcoffset()
Return the timezone offset as timedelta positive east of UTC (negative west of UTC).
- class basyx.aas.model.datatypes.Float(x=0, /)
A 32bit IEEE754 float. This can not be represented with Python
- class basyx.aas.model.datatypes.HexBinary
- class basyx.aas.model.datatypes.Int(*args, **kwargs)
- class basyx.aas.model.datatypes.Long(*args, **kwargs)
- class basyx.aas.model.datatypes.NegativeInteger(*args, **kwargs)
- class basyx.aas.model.datatypes.NonNegativeInteger(*args, **kwargs)
- class basyx.aas.model.datatypes.NonPositiveInteger(*args, **kwargs)
- class basyx.aas.model.datatypes.NormalizedString(*args, **kwargs)
- classmethod from_string(value: str) basyx.aas.model.datatypes.NormalizedString
Make a string a normalized string by simply dropping all carriage return, newline and tab characters.
- class basyx.aas.model.datatypes.PositiveInteger(*args, **kwargs)
- class basyx.aas.model.datatypes.Short(*args, **kwargs)
- class basyx.aas.model.datatypes.UnsignedByte(*args, **kwargs)
- class basyx.aas.model.datatypes.UnsignedInt(*args, **kwargs)
- class basyx.aas.model.datatypes.UnsignedLong(*args, **kwargs)
- class basyx.aas.model.datatypes.UnsignedShort(*args, **kwargs)
- basyx.aas.model.datatypes.from_xsd(value: str, type_: Type[Union[dateutil.relativedelta.relativedelta, datetime.datetime, basyx.aas.model.datatypes.Date, datetime.time, basyx.aas.model.datatypes.GYearMonth, basyx.aas.model.datatypes.GYear, basyx.aas.model.datatypes.GMonthDay, basyx.aas.model.datatypes.GMonth, basyx.aas.model.datatypes.GDay, bool, basyx.aas.model.datatypes.Base64Binary, basyx.aas.model.datatypes.HexBinary, basyx.aas.model.datatypes.Float, float, decimal.Decimal, int, basyx.aas.model.datatypes.Long, basyx.aas.model.datatypes.Int, basyx.aas.model.datatypes.Short, basyx.aas.model.datatypes.Byte, basyx.aas.model.datatypes.NonPositiveInteger, basyx.aas.model.datatypes.NegativeInteger, basyx.aas.model.datatypes.NonNegativeInteger, basyx.aas.model.datatypes.PositiveInteger, basyx.aas.model.datatypes.UnsignedLong, basyx.aas.model.datatypes.UnsignedInt, basyx.aas.model.datatypes.UnsignedShort, basyx.aas.model.datatypes.UnsignedByte, basyx.aas.model.datatypes.AnyURI, str, basyx.aas.model.datatypes.NormalizedString]]) Union[dateutil.relativedelta.relativedelta, datetime.datetime, basyx.aas.model.datatypes.Date, datetime.time, basyx.aas.model.datatypes.GYearMonth, basyx.aas.model.datatypes.GYear, basyx.aas.model.datatypes.GMonthDay, basyx.aas.model.datatypes.GMonth, basyx.aas.model.datatypes.GDay, bool, basyx.aas.model.datatypes.Base64Binary, basyx.aas.model.datatypes.HexBinary, basyx.aas.model.datatypes.Float, float, decimal.Decimal, int, basyx.aas.model.datatypes.Long, basyx.aas.model.datatypes.Int, basyx.aas.model.datatypes.Short, basyx.aas.model.datatypes.Byte, basyx.aas.model.datatypes.NonPositiveInteger, basyx.aas.model.datatypes.NegativeInteger, basyx.aas.model.datatypes.NonNegativeInteger, basyx.aas.model.datatypes.PositiveInteger, basyx.aas.model.datatypes.UnsignedLong, basyx.aas.model.datatypes.UnsignedInt, basyx.aas.model.datatypes.UnsignedShort, basyx.aas.model.datatypes.UnsignedByte, basyx.aas.model.datatypes.AnyURI, str, basyx.aas.model.datatypes.NormalizedString]
Parse an XSD type value from its lexical representation
- Parameters
value – Lexical representation
type – The expected XSD type (from this module). It is required to chose the correct conversion.
- basyx.aas.model.datatypes.trivial_cast(value, type_: Type[Union[dateutil.relativedelta.relativedelta, datetime.datetime, basyx.aas.model.datatypes.Date, datetime.time, basyx.aas.model.datatypes.GYearMonth, basyx.aas.model.datatypes.GYear, basyx.aas.model.datatypes.GMonthDay, basyx.aas.model.datatypes.GMonth, basyx.aas.model.datatypes.GDay, bool, basyx.aas.model.datatypes.Base64Binary, basyx.aas.model.datatypes.HexBinary, basyx.aas.model.datatypes.Float, float, decimal.Decimal, int, basyx.aas.model.datatypes.Long, basyx.aas.model.datatypes.Int, basyx.aas.model.datatypes.Short, basyx.aas.model.datatypes.Byte, basyx.aas.model.datatypes.NonPositiveInteger, basyx.aas.model.datatypes.NegativeInteger, basyx.aas.model.datatypes.NonNegativeInteger, basyx.aas.model.datatypes.PositiveInteger, basyx.aas.model.datatypes.UnsignedLong, basyx.aas.model.datatypes.UnsignedInt, basyx.aas.model.datatypes.UnsignedShort, basyx.aas.model.datatypes.UnsignedByte, basyx.aas.model.datatypes.AnyURI, str, basyx.aas.model.datatypes.NormalizedString]]) Union[dateutil.relativedelta.relativedelta, datetime.datetime, basyx.aas.model.datatypes.Date, datetime.time, basyx.aas.model.datatypes.GYearMonth, basyx.aas.model.datatypes.GYear, basyx.aas.model.datatypes.GMonthDay, basyx.aas.model.datatypes.GMonth, basyx.aas.model.datatypes.GDay, bool, basyx.aas.model.datatypes.Base64Binary, basyx.aas.model.datatypes.HexBinary, basyx.aas.model.datatypes.Float, float, decimal.Decimal, int, basyx.aas.model.datatypes.Long, basyx.aas.model.datatypes.Int, basyx.aas.model.datatypes.Short, basyx.aas.model.datatypes.Byte, basyx.aas.model.datatypes.NonPositiveInteger, basyx.aas.model.datatypes.NegativeInteger, basyx.aas.model.datatypes.NonNegativeInteger, basyx.aas.model.datatypes.PositiveInteger, basyx.aas.model.datatypes.UnsignedLong, basyx.aas.model.datatypes.UnsignedInt, basyx.aas.model.datatypes.UnsignedShort, basyx.aas.model.datatypes.UnsignedByte, basyx.aas.model.datatypes.AnyURI, str, basyx.aas.model.datatypes.NormalizedString]
Type-cast a python value into an XSD type, if this is a trivial conversion
The main purpose of this function is to allow AAS
Properties(and similar objects with XSD-type values) to take Python literal values and convert them to their XSD type. However, we want to stay strongly typed, so we only allow this type-cast if it is trivial to do, i.e. does not change the value’s semantics. Examples, where this holds true:int →
aas.model.datatypes.Int(if the value is in the expected range)bytes →
aas.model.datatypes.Base64Binarydatetime.date →
aas.model.datatypes.Date
Yet, it is not allowed to cast float →
aas.model.datatypes.Int.- Parameters
value – The value to cast
type – Target type to cast into. Must be an XSD type from this module
- basyx.aas.model.datatypes.xsd_repr(value: Union[dateutil.relativedelta.relativedelta, datetime.datetime, basyx.aas.model.datatypes.Date, datetime.time, basyx.aas.model.datatypes.GYearMonth, basyx.aas.model.datatypes.GYear, basyx.aas.model.datatypes.GMonthDay, basyx.aas.model.datatypes.GMonth, basyx.aas.model.datatypes.GDay, bool, basyx.aas.model.datatypes.Base64Binary, basyx.aas.model.datatypes.HexBinary, basyx.aas.model.datatypes.Float, float, decimal.Decimal, int, basyx.aas.model.datatypes.Long, basyx.aas.model.datatypes.Int, basyx.aas.model.datatypes.Short, basyx.aas.model.datatypes.Byte, basyx.aas.model.datatypes.NonPositiveInteger, basyx.aas.model.datatypes.NegativeInteger, basyx.aas.model.datatypes.NonNegativeInteger, basyx.aas.model.datatypes.PositiveInteger, basyx.aas.model.datatypes.UnsignedLong, basyx.aas.model.datatypes.UnsignedInt, basyx.aas.model.datatypes.UnsignedShort, basyx.aas.model.datatypes.UnsignedByte, basyx.aas.model.datatypes.AnyURI, str, basyx.aas.model.datatypes.NormalizedString]) str
Serialize an XSD type value into it’s lexical representation
- Parameters
value – Any XSD type (from this module)
- Returns
Lexical representation as string