Instances of OpcUaServer fail to serialize to JSON because of the LocalDatabaseDriver reference.
Example:
client = OpcUaServer(...)
print(client.to_json()) # fails
This fails because client.archive_database contains a runtime database driver instance, which is not JSON serializable.
The issue can be avoided by setting archive_database to None before serialization:
client = OpcUaServer(...)
client.archive_database = None # runtime driver, not serializable
print(client.to_json()) # works
The LocalDatabaseDriver should either be excluded from the JSON representation or handled with a custom serialization method.
Traceback (most recent call last):
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client\examples\connect_to_existing_server_as_client_extern_to_tsdb.py", line 134, in
print(client.to_json())
^^^^^^^^^^^^^^^^
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\oold\model_init_.py", line 1177, in to_json
data = super().to_json(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\oold\model\v1_init_.py", line 903, in to_json
self.json(
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\oold\model\v1_init_.py", line 791, in json
BaseModel.json(
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\pydantic\v1\main.py", line 527, in json
return self.config.json_dumps(data, default=encoder, **dumps_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniforge3\Lib\json_init_.py", line 238, in dumps
**kw).encode(obj)
^^^^^^^^^^^
File "C:\ProgramData\miniforge3\Lib\json\encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniforge3\Lib\json\encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\pydantic\v1\json.py", line 90, in pydantic_encoder
raise TypeError(f"Object of type '{obj.class.name}' is not JSON serializable")
TypeError: Object of type 'LocalDatabaseDriver' is not JSON serializable
Instances of OpcUaServer fail to serialize to JSON because of the LocalDatabaseDriver reference.
Example:
client = OpcUaServer(...)
print(client.to_json()) # fails
This fails because client.archive_database contains a runtime database driver instance, which is not JSON serializable.
The issue can be avoided by setting archive_database to None before serialization:
client = OpcUaServer(...)
client.archive_database = None # runtime driver, not serializable
print(client.to_json()) # works
The LocalDatabaseDriver should either be excluded from the JSON representation or handled with a custom serialization method.
Traceback (most recent call last):
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client\examples\connect_to_existing_server_as_client_extern_to_tsdb.py", line 134, in
print(client.to_json())
^^^^^^^^^^^^^^^^
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\oold\model_init_.py", line 1177, in to_json
data = super().to_json(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\oold\model\v1_init_.py", line 903, in to_json
self.json(
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\oold\model\v1_init_.py", line 791, in json
BaseModel.json(
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\pydantic\v1\main.py", line 527, in json
return self.config.json_dumps(data, default=encoder, **dumps_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniforge3\Lib\json_init_.py", line 238, in dumps
**kw).encode(obj)
^^^^^^^^^^^
File "C:\ProgramData\miniforge3\Lib\json\encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\miniforge3\Lib\json\encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
File "C:\Users\feiler\gitlab\ISC Digital\OPC-UA\Clients\opensematic-lab-client.venv\Lib\site-packages\pydantic\v1\json.py", line 90, in pydantic_encoder
raise TypeError(f"Object of type '{obj.class.name}' is not JSON serializable")
TypeError: Object of type 'LocalDatabaseDriver' is not JSON serializable