diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4f8c6fb..91afe94 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.23" + ".": "0.1.24" } diff --git a/CHANGELOG.md b/CHANGELOG.md index fec9946..22aef72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.24](https://github.com/cloudquery/plugin-sdk-python/compare/v0.1.23...v0.1.24) (2024-05-24) + + +### Bug Fixes + +* Set spec to `b"{}"` on empty input ([#174](https://github.com/cloudquery/plugin-sdk-python/issues/174)) ([3f46922](https://github.com/cloudquery/plugin-sdk-python/commit/3f469227003f0df101df36724bfc6019411b9bf0)) + ## [0.1.23](https://github.com/cloudquery/plugin-sdk-python/compare/v0.1.22...v0.1.23) (2024-05-17) diff --git a/cloudquery/sdk/internal/memdb/memdb.py b/cloudquery/sdk/internal/memdb/memdb.py index e9315fd..aa1c9e8 100644 --- a/cloudquery/sdk/internal/memdb/memdb.py +++ b/cloudquery/sdk/internal/memdb/memdb.py @@ -1,14 +1,22 @@ +import json + from cloudquery.sdk import plugin from cloudquery.sdk import message from cloudquery.sdk import schema from typing import List, Generator, Dict import pyarrow as pa from cloudquery.sdk.types import JSONType +from dataclasses import dataclass, field NAME = "memdb" VERSION = "development" +@dataclass +class Spec: + abc: str = field(default="abc") + + class MemDB(plugin.Plugin): def __init__(self) -> None: super().__init__( @@ -73,6 +81,12 @@ def __init__(self) -> None: ), } + def init(self, spec, no_connection: bool = False): + if no_connection: + return + self._spec_json = json.loads(spec) + self._spec = Spec(**self._spec_json) + def get_tables(self, options: plugin.TableOptions = None) -> List[plugin.Table]: tables = list(self._tables.values()) return schema.filter_dfs(tables, options.tables, options.skip_tables) diff --git a/cloudquery/sdk/internal/servers/plugin_v3/plugin.py b/cloudquery/sdk/internal/servers/plugin_v3/plugin.py index 8246085..e8a94ae 100644 --- a/cloudquery/sdk/internal/servers/plugin_v3/plugin.py +++ b/cloudquery/sdk/internal/servers/plugin_v3/plugin.py @@ -32,7 +32,9 @@ def GetSpecSchema(self, request, context): return plugin_pb2.GetSpecSchema.Response(json_schema=self._plugin.json_schema()) def Init(self, request: plugin_pb2.Init.Request, context): - self._plugin.init(request.spec, no_connection=request.no_connection) + self._plugin.init( + sanitize_spec(request.spec), no_connection=request.no_connection + ) return plugin_pb2.Init.Response() def GetTables(self, request: plugin_pb2.GetTables.Request, context): @@ -113,3 +115,7 @@ def msg_iterator() -> Generator[WriteMessage, None, None]: def Close(self, request, context): self._plugin.close() return plugin_pb2.Close.Response() + + +def sanitize_spec(spec=None): + return b"{}" if spec is None or spec == b"" or spec == b"null" else spec diff --git a/setup.py b/setup.py index ec5272c..344cada 100644 --- a/setup.py +++ b/setup.py @@ -51,7 +51,7 @@ ] setuptools.setup( name=name, - version="0.1.23", + version="0.1.24", description=description, long_description=long_description, author="CloudQuery LTD", diff --git a/tests/internal/memdb/memdb.py b/tests/internal/memdb/memdb.py index 546d109..5b75f38 100644 --- a/tests/internal/memdb/memdb.py +++ b/tests/internal/memdb/memdb.py @@ -1,10 +1,11 @@ from cloudquery.sdk.internal import memdb +from cloudquery.sdk.internal.servers.plugin_v3 import plugin from cloudquery.sdk.plugin import SyncOptions def test_memdb(): p = memdb.MemDB() - p.init(None) + p.init(plugin.sanitize_spec(b"null")) msgs = [] for msg in p.sync(SyncOptions(tables=["*"])): msgs.append(msg)