Skip to content

Import Namespaces

These are the important namespaces in the repository.

Namespace Description
hololinked.core Definition of Thing class, Property, Action and Event classes, StateMachine, Logger & the EventLoop that executes operations.
hololinked.serializers Serializers for different data formats (JSON, MessagePack, etc.)
hololinked.server Protocol specific server implementations
hololinked.client ObjectProxy, protocol specific client implementations, client abstractions and ClientFactory.
hololinked.param Copy of holoviz param library with implementation specific modifications.
hololinked.storage Database clients for data persistence.
hololinked.metadata Device description languages a Thing can be described in. hololinked.metadata.td holds the W3C Web of Things Thing Description/ThingModel parsing and generation.
hololinked.injection Dependency injection layer, holds the lazy adapter registries like Serializers, SchemaValidators, StorageBackends and MetadataFormats that resolve an implementation by name on first use.
hololinked.schema_validators Validators that check property, action and event payloads against a schema (JSON Schema, fastjsonschema, pydantic).

A hexagonal architecture is followed with hololinked.core being the important part of the repository.

Hexagonal architecture diagram