splight-lib 5.22.0.dev0__tar.gz → 5.22.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/Makefile +0 -14
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/PKG-INFO +2 -2
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/README.md +1 -1
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/pyproject.toml +3 -2
- splight_lib-5.22.2/splight_lib/client/datalake/__init__.py +5 -0
- splight_lib-5.22.2/splight_lib/client/datalake/builder.py +27 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/common}/__init__.py +2 -2
- splight_lib-5.22.2/splight_lib/client/datalake/v3/__init__.py +13 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/v3}/builder.py +2 -2
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/v3}/remote_client.py +4 -4
- splight_lib-5.22.2/splight_lib/client/datalake/v4/__init__.py +13 -0
- splight_lib-5.22.2/splight_lib/client/datalake/v4/builder.py +24 -0
- splight_lib-5.22.2/splight_lib/client/datalake/v4/exceptions.py +12 -0
- splight_lib-5.22.2/splight_lib/client/datalake/v4/remote_client.py +258 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/tests/test_datalake.py +3 -3
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/conftest.py +1 -1
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/__init__.py +8 -6
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/datalake.py +5 -3
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/datalake_base.py +1 -1
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/__init__.py +10 -2
- splight_lib-5.22.2/splight_lib/models/_v4/datalake.py +168 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/datalake_base.py +22 -40
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/native.py +0 -1
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/tests/test_api_contracts.py +0 -6
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/uv.lock +1 -1
- splight_lib-5.22.0.dev0/splight_lib/models/_v4/datalake.py +0 -189
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/code-style.yaml +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/developer.yaml +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/pre-release.yaml +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/release.yaml +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/check_dev_version.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/check_master_version.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/check_pypi_version.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/check_release_version.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/check_version_uploaded.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/cleanup_pypi.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.github/workflows/scripts/requirements.txt +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.gitignore +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/.pre-commit-config.yaml +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/DOCS.md +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/LICENSE.txt +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/abstract/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/abstract/client.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/auth/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/auth/token.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/database/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/database/abstract.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/database/builder.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/database/classmap.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/database/remote_client.py +0 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/common}/abstract.py +0 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/common}/buffer.py +0 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/v3}/classmap.py +0 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/v3}/constants.py +0 -0
- {splight_lib-5.22.0.dev0/splight_lib/client/datalake → splight_lib-5.22.2/splight_lib/client/datalake/v3}/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/hub/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/hub/abstract.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/hub/client.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/client/tests/test_database.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/component/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/component/abstract.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/component/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/component/spec.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/component/tests/test_spec.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/config.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/constants.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/encryption.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/engine.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/scheduling.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/task.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/tests/test_execution.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/tests/test_scheduling.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/execution/trigger.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/logging/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/logging/_internal.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/logging/component.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/logging/constants.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/logging/logging.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/logging/tests/test_logging.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/actions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/alert.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/asset.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/attribute.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/bus.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/component.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/dashboard.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/data_address.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/external_grid.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/file.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/function.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/generator.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/generic.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/grid.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/hub.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/hub_server.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/inverter.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/line.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/metadata.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/native.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/secret.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/segment.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/server.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/slack_generator.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/slack_line.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/tag.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/tests/models.json +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/tests/test_component_object_instance.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/tests/test_database_model.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/tests/test_metadata.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/tests/test_models.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/three_winding_transformer.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/transformer.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v3/variable_types.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/asset.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/attribute.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/base.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/battery.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/bus.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/component.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/data_address.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/external_grid.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/file.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/generator.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/generic.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/grid.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/hub.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/hub_server.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/line.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/load.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/metadata.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/secret.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/segment.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/server.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/slack_line.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/tag.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/transformer.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/_v4/variable_types.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/models/database.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/restclient/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/restclient/client.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/restclient/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/restclient/tests/test_restclient.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/restclient/types.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/server/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/server/exceptions.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/server/server.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/settings.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/testing/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/tests/FakeProc.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/tests/asset_geometries.json +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/utils/__init__.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/utils/custom_model.py +0 -0
- {splight_lib-5.22.0.dev0 → splight_lib-5.22.2}/splight_lib/version.py +0 -0
|
@@ -48,17 +48,3 @@ format: install-dev
|
|
|
48
48
|
|
|
49
49
|
check-format: install-dev
|
|
50
50
|
uv run pre-commit run --all-files
|
|
51
|
-
# --show-diff-on-failure
|
|
52
|
-
|
|
53
|
-
# format:
|
|
54
|
-
# uv run isort splight_lib/
|
|
55
|
-
# uv run ruff format splight_lib/
|
|
56
|
-
#
|
|
57
|
-
# check_isort:
|
|
58
|
-
# uv run isort --check-only --diff splight_lib/
|
|
59
|
-
#
|
|
60
|
-
# check_ruff:
|
|
61
|
-
# uv run ruff format --check --diff splight_lib/
|
|
62
|
-
#
|
|
63
|
-
# check_format: check_ruff check_isort
|
|
64
|
-
#
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: splight-lib
|
|
3
|
-
Version: 5.22.
|
|
3
|
+
Version: 5.22.2
|
|
4
4
|
Summary: Splight Python Library
|
|
5
5
|
Author-email: Splight Dev <dev@splight.com>
|
|
6
6
|
License-File: LICENSE.txt
|
|
@@ -86,7 +86,7 @@ the version you should use the command
|
|
|
86
86
|
```bash
|
|
87
87
|
make update-version scope=<scope>
|
|
88
88
|
```
|
|
89
|
-
where scope can be `
|
|
89
|
+
where scope can be `major`, `minor` or `patch`.
|
|
90
90
|
|
|
91
91
|
## Tests
|
|
92
92
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "splight-lib"
|
|
3
|
-
version = "5.22.
|
|
3
|
+
version = "5.22.2"
|
|
4
4
|
description = "Splight Python Library"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Splight Dev",email = "dev@splight.com"}
|
|
@@ -68,7 +68,6 @@ profile = "black"
|
|
|
68
68
|
line_length = 79
|
|
69
69
|
|
|
70
70
|
[tool.pytest.ini_options]
|
|
71
|
-
# testpaths = ["splight_lib/component/tests/"]
|
|
72
71
|
filterwarnings = [
|
|
73
72
|
"error",
|
|
74
73
|
"ignore::RuntimeWarning",
|
|
@@ -115,6 +114,8 @@ indent-width = 4
|
|
|
115
114
|
|
|
116
115
|
target-version = "py311"
|
|
117
116
|
|
|
117
|
+
extend-select = ["F", "I"]
|
|
118
|
+
|
|
118
119
|
[tool.ruff.format]
|
|
119
120
|
# Like Black, use double quotes for strings.
|
|
120
121
|
quote-style = "double"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from splight_lib.client.datalake.common.abstract import AbstractDatalakeClient
|
|
4
|
+
from splight_lib.client.datalake.v3.builder import (
|
|
5
|
+
DatalakeClientBuilder as V3DatalakeClientBuilder,
|
|
6
|
+
)
|
|
7
|
+
from splight_lib.client.datalake.v4.builder import (
|
|
8
|
+
DatalakeClientBuilder as V4DatalakeClientBuilder,
|
|
9
|
+
)
|
|
10
|
+
from splight_lib.settings import DatalakeClientType, SplightAPIVersion
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DatalakeClientBuilder:
|
|
14
|
+
@staticmethod
|
|
15
|
+
def build(
|
|
16
|
+
version: SplightAPIVersion = SplightAPIVersion.V3,
|
|
17
|
+
dl_client_type: DatalakeClientType = DatalakeClientType.BUFFERED_ASYNC,
|
|
18
|
+
parameters: dict[str, Any] = {},
|
|
19
|
+
) -> AbstractDatalakeClient:
|
|
20
|
+
if version == SplightAPIVersion.V3:
|
|
21
|
+
Builder = V3DatalakeClientBuilder
|
|
22
|
+
elif version == SplightAPIVersion.V4:
|
|
23
|
+
Builder = V4DatalakeClientBuilder
|
|
24
|
+
else:
|
|
25
|
+
raise ValueError(f"Unsupported API version: {version}")
|
|
26
|
+
|
|
27
|
+
return Builder.build(dl_client_type, parameters)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
from splight_lib.client.datalake.builder import DatalakeClientBuilder
|
|
2
|
-
from splight_lib.client.datalake.remote_client import (
|
|
1
|
+
from splight_lib.client.datalake.v3.builder import DatalakeClientBuilder
|
|
2
|
+
from splight_lib.client.datalake.v3.remote_client import (
|
|
3
3
|
BufferedAsyncRemoteDatalakeClient,
|
|
4
4
|
BufferedSyncRemoteDataClient,
|
|
5
5
|
SyncRemoteDatalakeClient,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from splight_lib.client.datalake.v3.builder import DatalakeClientBuilder
|
|
2
|
+
from splight_lib.client.datalake.v3.remote_client import (
|
|
3
|
+
BufferedAsyncRemoteDatalakeClient,
|
|
4
|
+
BufferedSyncRemoteDataClient,
|
|
5
|
+
SyncRemoteDatalakeClient,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
DatalakeClientBuilder,
|
|
10
|
+
SyncRemoteDatalakeClient,
|
|
11
|
+
BufferedAsyncRemoteDatalakeClient,
|
|
12
|
+
BufferedSyncRemoteDataClient,
|
|
13
|
+
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
-
from splight_lib.client.datalake.abstract import AbstractDatalakeClient
|
|
4
|
-
from splight_lib.client.datalake.remote_client import (
|
|
3
|
+
from splight_lib.client.datalake.common.abstract import AbstractDatalakeClient
|
|
4
|
+
from splight_lib.client.datalake.v3.remote_client import (
|
|
5
5
|
BufferedAsyncRemoteDatalakeClient,
|
|
6
6
|
BufferedSyncRemoteDataClient,
|
|
7
7
|
SyncRemoteDatalakeClient,
|
|
@@ -6,13 +6,13 @@ from httpx import HTTPTransport
|
|
|
6
6
|
from retry import retry
|
|
7
7
|
|
|
8
8
|
from splight_lib.auth import SplightAuthToken
|
|
9
|
-
from splight_lib.client.datalake.abstract import (
|
|
9
|
+
from splight_lib.client.datalake.common.abstract import (
|
|
10
10
|
AbstractDatalakeClient,
|
|
11
11
|
Records,
|
|
12
12
|
)
|
|
13
|
-
from splight_lib.client.datalake.buffer import DatalakeDocumentBuffer
|
|
14
|
-
from splight_lib.client.datalake.classmap import COLLECTION_PREFIXS_MAP
|
|
15
|
-
from splight_lib.client.datalake.exceptions import DatalakeRequestError
|
|
13
|
+
from splight_lib.client.datalake.common.buffer import DatalakeDocumentBuffer
|
|
14
|
+
from splight_lib.client.datalake.v3.classmap import COLLECTION_PREFIXS_MAP
|
|
15
|
+
from splight_lib.client.datalake.v3.exceptions import DatalakeRequestError
|
|
16
16
|
from splight_lib.client.exceptions import SPLIGHT_REQUEST_EXCEPTIONS
|
|
17
17
|
from splight_lib.logging._internal import LogTags, get_splight_logger
|
|
18
18
|
from splight_lib.restclient import SplightRestClient
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from splight_lib.client.datalake.v4.builder import DatalakeClientBuilder
|
|
2
|
+
from splight_lib.client.datalake.v4.remote_client import (
|
|
3
|
+
BufferedAsyncRemoteDatalakeClient,
|
|
4
|
+
BufferedSyncRemoteDataClient,
|
|
5
|
+
SyncRemoteDatalakeClient,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
DatalakeClientBuilder,
|
|
10
|
+
SyncRemoteDatalakeClient,
|
|
11
|
+
BufferedAsyncRemoteDatalakeClient,
|
|
12
|
+
BufferedSyncRemoteDataClient,
|
|
13
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from splight_lib.client.datalake.common.abstract import AbstractDatalakeClient
|
|
4
|
+
from splight_lib.client.datalake.v4.remote_client import (
|
|
5
|
+
BufferedAsyncRemoteDatalakeClient,
|
|
6
|
+
BufferedSyncRemoteDataClient,
|
|
7
|
+
SyncRemoteDatalakeClient,
|
|
8
|
+
)
|
|
9
|
+
from splight_lib.settings import DatalakeClientType
|
|
10
|
+
|
|
11
|
+
DL_CLIENT_TYPE_MAP = {
|
|
12
|
+
DatalakeClientType.BUFFERED_ASYNC: BufferedAsyncRemoteDatalakeClient,
|
|
13
|
+
DatalakeClientType.BUFFERED_SYNC: BufferedSyncRemoteDataClient,
|
|
14
|
+
DatalakeClientType.SYNC: SyncRemoteDatalakeClient,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class DatalakeClientBuilder:
|
|
19
|
+
@staticmethod
|
|
20
|
+
def build(
|
|
21
|
+
dl_client_type: DatalakeClientType = DatalakeClientType.BUFFERED_ASYNC,
|
|
22
|
+
parameters: dict[str, Any] = {},
|
|
23
|
+
) -> AbstractDatalakeClient:
|
|
24
|
+
return DL_CLIENT_TYPE_MAP[dl_client_type](**parameters)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class DatalakeRequestError(Exception):
|
|
2
|
+
def __init__(self, status_code: int, message: str):
|
|
3
|
+
self._msg = f"Request failed with status code {status_code}: {message}"
|
|
4
|
+
super().__init__(self._msg)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class InvalidCollectionName(Exception):
|
|
8
|
+
def __init__(self, collection: str):
|
|
9
|
+
self._msg = f"Collection {collection} is not a valid collection"
|
|
10
|
+
|
|
11
|
+
def __str__(self) -> str:
|
|
12
|
+
return self._msg
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
from threading import Lock, Thread
|
|
2
|
+
from time import sleep
|
|
3
|
+
|
|
4
|
+
from furl import furl
|
|
5
|
+
from httpx import HTTPTransport
|
|
6
|
+
from retry import retry
|
|
7
|
+
|
|
8
|
+
from splight_lib.auth import SplightAuthToken
|
|
9
|
+
from splight_lib.client.datalake.common.abstract import (
|
|
10
|
+
AbstractDatalakeClient,
|
|
11
|
+
Records,
|
|
12
|
+
)
|
|
13
|
+
from splight_lib.client.datalake.common.buffer import DatalakeDocumentBuffer
|
|
14
|
+
from splight_lib.client.datalake.v4.exceptions import DatalakeRequestError
|
|
15
|
+
from splight_lib.client.exceptions import SPLIGHT_REQUEST_EXCEPTIONS
|
|
16
|
+
from splight_lib.logging._internal import LogTags, get_splight_logger
|
|
17
|
+
from splight_lib.restclient import SplightRestClient
|
|
18
|
+
from splight_lib.settings import SplightAPIVersion
|
|
19
|
+
|
|
20
|
+
logger = get_splight_logger()
|
|
21
|
+
|
|
22
|
+
EXCEPTIONS = (*SPLIGHT_REQUEST_EXCEPTIONS, DatalakeRequestError)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class SyncRemoteDatalakeClient(AbstractDatalakeClient):
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
base_url: str,
|
|
29
|
+
resource: str,
|
|
30
|
+
access_id: str,
|
|
31
|
+
secret_key: str,
|
|
32
|
+
api_version: SplightAPIVersion = SplightAPIVersion.V4,
|
|
33
|
+
*args,
|
|
34
|
+
**kwargs,
|
|
35
|
+
):
|
|
36
|
+
super().__init__()
|
|
37
|
+
self._base_url = furl(base_url)
|
|
38
|
+
self.resource = resource
|
|
39
|
+
token = SplightAuthToken(
|
|
40
|
+
access_key=access_id,
|
|
41
|
+
secret_key=secret_key,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
self._restclient = SplightRestClient(
|
|
45
|
+
transport=HTTPTransport(retries=3)
|
|
46
|
+
)
|
|
47
|
+
self._restclient.update_headers(token.header)
|
|
48
|
+
logger.debug(
|
|
49
|
+
"Remote datalake client initialized.", tags=LogTags.DATALAKE
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
@retry(EXCEPTIONS, tries=3, delay=2, jitter=1)
|
|
53
|
+
def save(self, records: dict) -> list[dict]:
|
|
54
|
+
url = self._base_url / f"{self.prefix}/write/"
|
|
55
|
+
response = self._restclient.post(url, json=records)
|
|
56
|
+
if response.is_error:
|
|
57
|
+
raise DatalakeRequestError(response.status_code, response.text)
|
|
58
|
+
return records["records"]
|
|
59
|
+
|
|
60
|
+
@retry(EXCEPTIONS, tries=3, delay=2, jitter=1)
|
|
61
|
+
async def async_save(
|
|
62
|
+
self,
|
|
63
|
+
records: dict,
|
|
64
|
+
) -> list[dict]:
|
|
65
|
+
url = self._base_url / f"{self.prefix}/write/"
|
|
66
|
+
response = await self._restclient.async_post(url, json=records)
|
|
67
|
+
if response.is_error:
|
|
68
|
+
raise DatalakeRequestError(response.status_code, response.text)
|
|
69
|
+
return records["records"]
|
|
70
|
+
|
|
71
|
+
@retry(EXCEPTIONS, tries=3, delay=2, jitter=1)
|
|
72
|
+
def _get(self, request: dict) -> list[dict]:
|
|
73
|
+
url = self._base_url / f"{self.prefix}/read/"
|
|
74
|
+
response = self._restclient.post(url, json=request)
|
|
75
|
+
if response.is_error:
|
|
76
|
+
raise DatalakeRequestError(response.status_code, response.text)
|
|
77
|
+
return response.json()
|
|
78
|
+
|
|
79
|
+
@retry(EXCEPTIONS, tries=3, delay=2, jitter=1)
|
|
80
|
+
async def _async_get(self, request: dict) -> list[dict]:
|
|
81
|
+
url = self._base_url / f"{self.prefix}/read/"
|
|
82
|
+
response = await self._restclient.async_post(url, json=request)
|
|
83
|
+
if response.is_error:
|
|
84
|
+
raise DatalakeRequestError(response.status_code, response.text)
|
|
85
|
+
return response.json()
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def prefix(self) -> str:
|
|
89
|
+
return f"v4/data/{self.resource}"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class BufferedAsyncRemoteDatalakeClient(SyncRemoteDatalakeClient):
|
|
93
|
+
def __init__(
|
|
94
|
+
self,
|
|
95
|
+
base_url: str,
|
|
96
|
+
access_id: str,
|
|
97
|
+
secret_key: str,
|
|
98
|
+
api_version: SplightAPIVersion,
|
|
99
|
+
buffer_size: int = 500,
|
|
100
|
+
buffer_timeout: float = 60,
|
|
101
|
+
*args,
|
|
102
|
+
**kwargs,
|
|
103
|
+
):
|
|
104
|
+
super().__init__(
|
|
105
|
+
base_url=base_url,
|
|
106
|
+
access_id=access_id,
|
|
107
|
+
secret_key=secret_key,
|
|
108
|
+
buffer_size=buffer_size,
|
|
109
|
+
buffer_timeout=buffer_timeout,
|
|
110
|
+
*args,
|
|
111
|
+
**kwargs,
|
|
112
|
+
)
|
|
113
|
+
self._base_url = furl(base_url)
|
|
114
|
+
|
|
115
|
+
token = SplightAuthToken(
|
|
116
|
+
access_key=access_id,
|
|
117
|
+
secret_key=secret_key,
|
|
118
|
+
)
|
|
119
|
+
self._restclient = SplightRestClient()
|
|
120
|
+
self._restclient.update_headers(token.header)
|
|
121
|
+
|
|
122
|
+
logger.debug(
|
|
123
|
+
"Initializing buffer with size %s and timeout %s",
|
|
124
|
+
buffer_size,
|
|
125
|
+
buffer_timeout,
|
|
126
|
+
)
|
|
127
|
+
self._data_buffers = {
|
|
128
|
+
"default": DatalakeDocumentBuffer(buffer_size, buffer_timeout),
|
|
129
|
+
"routineEvaluations": DatalakeDocumentBuffer(
|
|
130
|
+
buffer_size, buffer_timeout
|
|
131
|
+
),
|
|
132
|
+
}
|
|
133
|
+
self._lock = Lock()
|
|
134
|
+
self._flush_thread = Thread(target=self._flusher, daemon=True)
|
|
135
|
+
self._flush_thread.start()
|
|
136
|
+
logger.debug(
|
|
137
|
+
"Buffered Remote datalake client initialized.",
|
|
138
|
+
tags=LogTags.DATALAKE,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
def save(self, records: dict) -> list[dict]:
|
|
142
|
+
logger.debug("Saving documents in datalake", tags=LogTags.DATALAKE)
|
|
143
|
+
instances = records["records"]
|
|
144
|
+
buffer = self._data_buffers["default"]
|
|
145
|
+
with self._lock:
|
|
146
|
+
if buffer.should_flush():
|
|
147
|
+
logger.debug(
|
|
148
|
+
"Flushing datalake buffer with %s elements",
|
|
149
|
+
len(buffer.data),
|
|
150
|
+
)
|
|
151
|
+
self._send_documents(buffer.data)
|
|
152
|
+
buffer.reset()
|
|
153
|
+
buffer.add_documents(instances)
|
|
154
|
+
return instances
|
|
155
|
+
|
|
156
|
+
def _flusher(self):
|
|
157
|
+
while True:
|
|
158
|
+
for _, buffer in self._data_buffers.items():
|
|
159
|
+
self._flush_buffer(buffer)
|
|
160
|
+
sleep(0.5)
|
|
161
|
+
|
|
162
|
+
def _flush_buffer(self, buffer: DatalakeDocumentBuffer) -> None:
|
|
163
|
+
with self._lock:
|
|
164
|
+
if buffer.should_flush():
|
|
165
|
+
try:
|
|
166
|
+
logger.debug(
|
|
167
|
+
"Flushing datalake buffer with %s elements",
|
|
168
|
+
len(buffer.data),
|
|
169
|
+
)
|
|
170
|
+
self._send_documents(buffer.data)
|
|
171
|
+
buffer.reset()
|
|
172
|
+
except Exception:
|
|
173
|
+
logger.error("Unable to save documents", exc_info=True)
|
|
174
|
+
|
|
175
|
+
@retry(EXCEPTIONS, tries=3, delay=2, jitter=1)
|
|
176
|
+
def _send_documents(self, docs: list[dict]) -> list[dict]:
|
|
177
|
+
url = self._base_url / f"{self.prefix}/write/"
|
|
178
|
+
data = {
|
|
179
|
+
"records": docs,
|
|
180
|
+
}
|
|
181
|
+
response = self._restclient.post(url, json=data)
|
|
182
|
+
if response.is_error:
|
|
183
|
+
raise DatalakeRequestError(response.status_code, response.text)
|
|
184
|
+
return docs
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class BufferedSyncRemoteDataClient(SyncRemoteDatalakeClient):
|
|
188
|
+
def __init__(
|
|
189
|
+
self,
|
|
190
|
+
base_url: str,
|
|
191
|
+
access_id: str,
|
|
192
|
+
secret_key: str,
|
|
193
|
+
api_version: SplightAPIVersion,
|
|
194
|
+
buffer_size: int = 500,
|
|
195
|
+
buffer_timeout: float = 60,
|
|
196
|
+
*args,
|
|
197
|
+
**kwargs,
|
|
198
|
+
):
|
|
199
|
+
super().__init__(
|
|
200
|
+
base_url=base_url,
|
|
201
|
+
access_id=access_id,
|
|
202
|
+
secret_key=secret_key,
|
|
203
|
+
buffer_size=buffer_size,
|
|
204
|
+
buffer_timeout=buffer_timeout,
|
|
205
|
+
*args,
|
|
206
|
+
**kwargs,
|
|
207
|
+
)
|
|
208
|
+
self._base_url = furl(base_url)
|
|
209
|
+
token = SplightAuthToken(
|
|
210
|
+
access_key=access_id,
|
|
211
|
+
secret_key=secret_key,
|
|
212
|
+
)
|
|
213
|
+
self._restclient = SplightRestClient()
|
|
214
|
+
self._restclient.update_headers(token.header)
|
|
215
|
+
|
|
216
|
+
logger.debug(
|
|
217
|
+
"Initializing buffer with size %s and timeout %s",
|
|
218
|
+
buffer_size,
|
|
219
|
+
buffer_timeout,
|
|
220
|
+
tags=LogTags.DATALAKE,
|
|
221
|
+
)
|
|
222
|
+
self._data_buffers = {
|
|
223
|
+
"default": DatalakeDocumentBuffer(buffer_size, buffer_timeout),
|
|
224
|
+
"routine_evaluations": DatalakeDocumentBuffer(
|
|
225
|
+
buffer_size, buffer_timeout
|
|
226
|
+
),
|
|
227
|
+
}
|
|
228
|
+
self._lock = Lock()
|
|
229
|
+
logger.debug(
|
|
230
|
+
"Synchronous Buffered Remote datalake client initialized.",
|
|
231
|
+
tags=LogTags.DATALAKE,
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
def save(self, records: Records) -> list[dict]:
|
|
235
|
+
logger.debug("Saving documents in datalake", tags=LogTags.DATALAKE)
|
|
236
|
+
buffer = self._data_buffers["default"]
|
|
237
|
+
with self._lock:
|
|
238
|
+
buffer.add_documents(records["records"])
|
|
239
|
+
if buffer.should_flush():
|
|
240
|
+
logger.debug(
|
|
241
|
+
"Flushing datalake buffer with %s elements",
|
|
242
|
+
len(buffer.data),
|
|
243
|
+
tags=LogTags.DATALAKE,
|
|
244
|
+
)
|
|
245
|
+
self._send_documents(buffer.data)
|
|
246
|
+
buffer.reset()
|
|
247
|
+
return records["records"]
|
|
248
|
+
|
|
249
|
+
@retry(EXCEPTIONS, tries=3, delay=2, jitter=1)
|
|
250
|
+
def _send_documents(self, docs: list[dict]) -> list[dict]:
|
|
251
|
+
url = self._base_url / f"{self.prefix}/write/"
|
|
252
|
+
data = {
|
|
253
|
+
"records": docs,
|
|
254
|
+
}
|
|
255
|
+
response = self._restclient.post(url, json=data)
|
|
256
|
+
if response.is_error:
|
|
257
|
+
raise DatalakeRequestError(response.status_code, response.text)
|
|
258
|
+
return docs
|
|
@@ -2,10 +2,10 @@ import os
|
|
|
2
2
|
|
|
3
3
|
from pytest_mock import MockerFixture
|
|
4
4
|
|
|
5
|
-
from splight_lib.client.datalake import
|
|
6
|
-
|
|
7
|
-
SplightRestClient,
|
|
5
|
+
from splight_lib.client.datalake.v3 import ( # noqa E402
|
|
6
|
+
SyncRemoteDatalakeClient,
|
|
8
7
|
)
|
|
8
|
+
from splight_lib.restclient import SplightRestClient
|
|
9
9
|
|
|
10
10
|
base_url = "http://test.com"
|
|
11
11
|
os.environ["ACCESS_ID"] = "access_id"
|
|
@@ -3,7 +3,7 @@ from pathlib import Path
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
5
|
from splight_lib.client.database.abstract import AbstractDatabaseClient
|
|
6
|
-
from splight_lib.client.datalake.abstract import AbstractDatalakeClient
|
|
6
|
+
from splight_lib.client.datalake.common.abstract import AbstractDatalakeClient
|
|
7
7
|
from splight_lib.settings import SplightAPIVersion, api_settings
|
|
8
8
|
|
|
9
9
|
# Only load these tests when API_VERSION is v4
|
|
@@ -169,6 +169,7 @@ elif api_version == SplightAPIVersion.V4:
|
|
|
169
169
|
AssetKind,
|
|
170
170
|
AssetRelationship,
|
|
171
171
|
Attribute,
|
|
172
|
+
AttributeDocument,
|
|
172
173
|
AttributeType,
|
|
173
174
|
Battery,
|
|
174
175
|
Boolean,
|
|
@@ -179,7 +180,6 @@ elif api_version == SplightAPIVersion.V4:
|
|
|
179
180
|
ComponentType,
|
|
180
181
|
CustomType,
|
|
181
182
|
DataAddress,
|
|
182
|
-
DataRequest,
|
|
183
183
|
Endpoint,
|
|
184
184
|
ExternalGrid,
|
|
185
185
|
File,
|
|
@@ -195,8 +195,9 @@ elif api_version == SplightAPIVersion.V4:
|
|
|
195
195
|
Number,
|
|
196
196
|
Output,
|
|
197
197
|
Parameter,
|
|
198
|
-
PipelineStep,
|
|
199
198
|
PrivacyPolicy,
|
|
199
|
+
Query,
|
|
200
|
+
Records,
|
|
200
201
|
ResourceSummary,
|
|
201
202
|
Routine,
|
|
202
203
|
RoutineEvaluation,
|
|
@@ -206,10 +207,10 @@ elif api_version == SplightAPIVersion.V4:
|
|
|
206
207
|
Segment,
|
|
207
208
|
Server,
|
|
208
209
|
SlackLine,
|
|
210
|
+
SolutionOutputDocument,
|
|
209
211
|
SplightDatalakeBaseModel,
|
|
210
212
|
String,
|
|
211
213
|
Tag,
|
|
212
|
-
Trace,
|
|
213
214
|
Transformer,
|
|
214
215
|
ValueType,
|
|
215
216
|
get_field_value,
|
|
@@ -235,9 +236,10 @@ elif api_version == SplightAPIVersion.V4:
|
|
|
235
236
|
"Parameter",
|
|
236
237
|
"DB_MODEL_TYPE_MAPPING",
|
|
237
238
|
"SplightDatalakeBaseModel",
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
239
|
+
"Query",
|
|
240
|
+
"Records",
|
|
241
|
+
"AttributeDocument",
|
|
242
|
+
"SolutionOutputDocument",
|
|
241
243
|
"File",
|
|
242
244
|
"DataAddress",
|
|
243
245
|
"InputDataAddress",
|
|
@@ -6,8 +6,8 @@ from typing import Annotated, Any, Generator, Generic, Literal, Self, TypeVar
|
|
|
6
6
|
from pydantic import BaseModel, ConfigDict, Field, PrivateAttr
|
|
7
7
|
|
|
8
8
|
from splight_lib.client.datalake import DatalakeClientBuilder
|
|
9
|
-
from splight_lib.client.datalake.abstract import AbstractDatalakeClient
|
|
10
|
-
from splight_lib.client.datalake.constants import StepName
|
|
9
|
+
from splight_lib.client.datalake.common.abstract import AbstractDatalakeClient
|
|
10
|
+
from splight_lib.client.datalake.v3.constants import StepName
|
|
11
11
|
from splight_lib.models._v3.asset import Asset
|
|
12
12
|
from splight_lib.models._v3.attribute import Attribute
|
|
13
13
|
from splight_lib.models._v3.exceptions import TraceAlreadyExistsError
|
|
@@ -27,8 +27,10 @@ def hash(string: str) -> str:
|
|
|
27
27
|
|
|
28
28
|
def get_datalake_client() -> AbstractDatalakeClient:
|
|
29
29
|
return DatalakeClientBuilder.build(
|
|
30
|
-
|
|
30
|
+
version=api_settings.API_VERSION,
|
|
31
|
+
dl_client_type="sync",
|
|
31
32
|
parameters={
|
|
33
|
+
"resource": "attributes",
|
|
32
34
|
"base_url": workspace_settings.SPLIGHT_PLATFORM_API_HOST,
|
|
33
35
|
"access_id": workspace_settings.SPLIGHT_ACCESS_ID,
|
|
34
36
|
"secret_key": workspace_settings.SPLIGHT_SECRET_KEY,
|
|
@@ -61,7 +61,7 @@ class SplightDatalakeBaseModel(BaseModel):
|
|
|
61
61
|
cls, asset, attribute, extra_pipeline, **params
|
|
62
62
|
)
|
|
63
63
|
instances = request.apply()
|
|
64
|
-
df = pd.DataFrame([instance.
|
|
64
|
+
df = pd.DataFrame([instance.model_dump() for instance in instances])
|
|
65
65
|
if not df.empty:
|
|
66
66
|
df.index = df["timestamp"]
|
|
67
67
|
df.drop(columns="timestamp", inplace=True)
|
|
@@ -27,7 +27,12 @@ from splight_lib.models._v4.component import (
|
|
|
27
27
|
get_field_value,
|
|
28
28
|
)
|
|
29
29
|
from splight_lib.models._v4.data_address import DataAddresses as DataAddress
|
|
30
|
-
from splight_lib.models._v4.datalake import
|
|
30
|
+
from splight_lib.models._v4.datalake import (
|
|
31
|
+
AttributeDocument,
|
|
32
|
+
Query,
|
|
33
|
+
Records,
|
|
34
|
+
SolutionOutputDocument,
|
|
35
|
+
)
|
|
31
36
|
from splight_lib.models._v4.datalake_base import SplightDatalakeBaseModel
|
|
32
37
|
from splight_lib.models._v4.external_grid import ExternalGrid
|
|
33
38
|
from splight_lib.models._v4.file import File
|
|
@@ -73,7 +78,10 @@ __all__ = [
|
|
|
73
78
|
"get_field_value",
|
|
74
79
|
"Parameter",
|
|
75
80
|
"DB_MODEL_TYPE_MAPPING",
|
|
76
|
-
"
|
|
81
|
+
"Query",
|
|
82
|
+
"Records",
|
|
83
|
+
"AttributeDocument",
|
|
84
|
+
"SolutionOutputDocument",
|
|
77
85
|
"DataAddress",
|
|
78
86
|
"InputDataAddress",
|
|
79
87
|
"PipelineStep",
|