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/secondin relationship elements (See: #587) - Allow optional
valueIdinValueReferencePairfor JSON and XML (See: #579) - Allow optional
contentTypeinBlobandFile(See: #572) - Tighten
dataSpecificationreference type in JSON (See: #581) - Add
rename_filetoDictSupplementaryFileContainer(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_metadatain 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
MultiLanguageNameTypevalue length to 128 (See: #577) - Fix
UnsignedIntXSD 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?assetIdsreturning empty for multipleglobalAssetIdvalues (See: #512) - Increment refcount in
DictSupplementaryFileContainer._assign_unique_name(See: #513) - Make XML
DataSpecificationIEC61360.valueindependent ofvalue_format(See: #510) - Fix
LocalFileIdentifiableStoreto count and iterate only.jsonstore files (See: #507) - Fix
load_directorysilently dropping all descriptors (See: #545) - Fix
NamespaceSet.pop()to remove items from all backends (See: #514) - Align
ServiceSpecificationProfileEnumwith IDTA-01002 v3.1.2 (See: #541) - Pass
paging_metadatakwarg 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
cursorcalculation andlimitdefault (See: #526) - Raise
BadRequest(400) on malformedassetIdsinstead of a 500 (See: #511) - Fix
walk_submodel()skippingEntityandOperationchildren (See: #465) - Fix empty-cache handling in
LocalFileIdentifiableStore(See: #463) - Fix langtag constraints in
LangStringSet(See: #478) - Remove dead
DataSpecificationIEC61360.value_idJSON deserialization code (See: #509) - Fix
--quitetypo, renamed to--quietin the compliance tool CLI (See: #506)
Testing & Internal:
- Increase SDK test coverage and extend
ObjectStore/AbstractObjectStoretests (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_directoryand the AASX reader (See: #571, #448) - Correct the
compliance-toolname inpyproject.toml(See: #585) - Replace
acplt.orgwithexample.orgin example data (See: #474)
For more details, check out https://projects.eclipse.org/projects/dt.basyx/releases/2.1.0-python