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 representation

  • from_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 of Properties' 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.Base64Binary

  • datetime.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