Skip to content

2.1.0

Latest

Choose a tag to compare

@s-heppner s-heppner released this 16 Jul 08:23
5754d62

Release Notes

Version 2.1.0 of the BaSyx-Python SDK is a feature release that brings the SDK up to date with the v3.1 line of the AAS specifications and significantly expands the server.

The metamodel now implements Part 1 v3.1.2, with matching updates to the IEC 61360 Data Specification (Part 3a v3.1.1) and the AASX Package File Format (Part 5 v3.1). On the server side, the HTTP API has been updated to Part 2 API v3.1, and the server now ships Registry and Discovery interfaces in addition to the Repository, each available as its own standalone Docker service.

As part of expanding the server, the AbstractObjectProvider and its object stores were refactored to support the updated AAS metamodel through generic typing and naming aligned with Identifiable. This is a refactoring only: the usability of the SDK remains unchanged and you do not have to change any existing code. The previous classes and methods (DictObjectStore, SetObjectStore, LocalFileObjectStore, CouchDBObjectStore, and AbstractObjectProvider.get_identifiable()) are now deprecated and emit warnings, but continue to work as before. Going forward, please use the new DictIdentifiableStore, SetIdentifiableStore, LocalFileIdentifiableStore, CouchDBIdentifiableStore classes and the generic get_item() method instead.

This release implements the following versions of the AAS specification:

Specification Version
Part 1: Metamodel v3.1.2 (01001-3-1-2)
Schemata (JSONSchema, XSD) v3.1.2 (IDTA-01001-3-1-2)
Part 2: API v3.1.1 (01002)
Part 3a: Data Specification IEC 61360 v3.1.1 (01003-a)
Part 5: Package File Format (AASX) v3.1 (01005)

Changelog

Notable:

  • Update metamodel to Part 1 v3.1.2 (See: #484)
  • Update HTTP API to Part 2 v3.1 for the AAS- and Submodel-Repository (See: #421)
  • Update Data Specification IEC 61360 to Part 3a v3.1.1 (See: #487)
  • Update AASX Package File Format to Part 5 v3.1 (See: #486)
  • Expand the server with Registry and Discovery APIs (See: #407)
  • Implement primitive data types in the API (See: #442)
  • Refactor the server package structure (See: #467)
  • Build and publish Docker images for all services and architectures (See: #556)

Improvements:

  • Allow optional first/second in relationship elements (See: #587)
  • Allow optional valueId in ValueReferencePair for JSON and XML (See: #579)
  • Allow optional contentType in Blob and File (See: #572)
  • Tighten dataSpecification reference type in JSON (See: #581)
  • Add rename_file to DictSupplementaryFileContainer (See: #434)
  • Add support for loading/saving thumbnails in AASX packages (See: #436)
  • Disallow invalid types in MultiLanguage objects (See: #431)
  • Refactor AbstractObjectProvider (See: #430)
  • Consolidate the duplicated service-specification implementation (See: #527)
  • Add a deprecated discovery route for compatibility (See: #524)
  • Always include paging_metadata in paginated list responses (See: #538)
  • Improve the BCE date error message (See: #578)
  • Add standalone Docker Compose configurations for Repository, Registry and Discovery (See: #556)
  • Document pulling server images from Docker Hub (See: #489)
  • Add a tutorial for Submodel navigation (See: #411)

Bugfixes:

  • Fix parsing of negative dates (See: #586)
  • Handle XSD end-of-day midnight 24:00:00 (See: #582)
  • Fix MultiLanguageNameType value length to 128 (See: #577)
  • Fix UnsignedInt XSD type name (See: #589)
  • Fix OrderedNamespaceSet.__setitem__ int remove-before-add and exhausted slice iterator (See: #517)
  • Fix mutation persistence in persistent backends (See: #553)
  • Fix GET /shells?assetIds returning empty for multiple globalAssetId values (See: #512)
  • Increment refcount in DictSupplementaryFileContainer._assign_unique_name (See: #513)
  • Make XML DataSpecificationIEC61360.value independent of value_format (See: #510)
  • Fix LocalFileIdentifiableStore to count and iterate only .json store files (See: #507)
  • Fix load_directory silently dropping all descriptors (See: #545)
  • Fix NamespaceSet.pop() to remove items from all backends (See: #514)
  • Align ServiceSpecificationProfileEnum with IDTA-01002 v3.1.2 (See: #541)
  • Pass paging_metadata kwarg correctly in AAS/Submodel-ref and ConceptDescription listings (See: #540)
  • Fix Discovery persistence and lookup handling (See: #543)
  • Fix registry log output (See: #536)
  • Align API base paths (See: #534)
  • Correct pagination cursor calculation and limit default (See: #526)
  • Raise BadRequest (400) on malformed assetIds instead of a 500 (See: #511)
  • Fix walk_submodel() skipping Entity and Operation children (See: #465)
  • Fix empty-cache handling in LocalFileIdentifiableStore (See: #463)
  • Fix langtag constraints in LangStringSet (See: #478)
  • Remove dead DataSpecificationIEC61360.value_id JSON deserialization code (See: #509)
  • Fix --quite typo, renamed to --quiet in the compliance tool CLI (See: #506)

Testing & Internal:

  • Increase SDK test coverage and extend ObjectStore/AbstractObjectStore tests (See: #483, #569, #557)
  • Add API base-path consistency tests (See: #583, #534)
  • Replace compliance-tool fixture files with mocking (See: #575)
  • Add unit tests for check_directory and the AASX reader (See: #571, #448)
  • Correct the compliance-tool name in pyproject.toml (See: #585)
  • Replace acplt.org with example.org in example data (See: #474)

For more details, check out https://projects.eclipse.org/projects/dt.basyx/releases/2.1.0-python