cloudquery-plugin-sdk 0.1.33__tar.gz → 0.1.35__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.
Files changed (63) hide show
  1. {cloudquery_plugin_sdk-0.1.33/cloudquery_plugin_sdk.egg-info → cloudquery_plugin_sdk-0.1.35}/PKG-INFO +7 -7
  2. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/memdb/memdb.py +5 -0
  3. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/servers/plugin_v3/plugin.py +11 -3
  4. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/message/__init__.py +1 -0
  5. cloudquery_plugin_sdk-0.1.35/cloudquery/sdk/message/read.py +6 -0
  6. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/message/write.py +2 -1
  7. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/plugin/plugin.py +3 -0
  8. cloudquery_plugin_sdk-0.1.35/cloudquery/sdk/schema/__init__.py +16 -0
  9. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/schema/column.py +3 -1
  10. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/schema/table.py +139 -6
  11. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/types/json.py +3 -0
  12. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/types/uuid.py +3 -0
  13. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35/cloudquery_plugin_sdk.egg-info}/PKG-INFO +7 -7
  14. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery_plugin_sdk.egg-info/SOURCES.txt +1 -0
  15. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery_plugin_sdk.egg-info/requires.txt +6 -6
  16. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/setup.py +7 -7
  17. cloudquery_plugin_sdk-0.1.33/cloudquery/sdk/schema/__init__.py +0 -5
  18. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/LICENSE +0 -0
  19. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/README.md +0 -0
  20. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/__init__.py +0 -0
  21. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/__init__.py +0 -0
  22. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/memdb/__init__.py +0 -0
  23. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/servers/__init__.py +0 -0
  24. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/servers/discovery_v1/__init__.py +0 -0
  25. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/servers/discovery_v1/discovery.py +0 -0
  26. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/internal/servers/plugin_v3/__init__.py +0 -0
  27. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/message/sync.py +0 -0
  28. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/plugin/__init__.py +0 -0
  29. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/py.typed +0 -0
  30. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/__init__.py +0 -0
  31. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/binary.py +0 -0
  32. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/bool.py +0 -0
  33. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/date32.py +0 -0
  34. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/date64.py +0 -0
  35. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/float.py +0 -0
  36. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/int.py +0 -0
  37. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/json.py +0 -0
  38. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/list.py +0 -0
  39. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/scalar.py +0 -0
  40. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/scalar_factory.py +0 -0
  41. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/string.py +0 -0
  42. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/timestamp.py +0 -0
  43. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/uint.py +0 -0
  44. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/uuid.py +0 -0
  45. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scalar/vector.py +0 -0
  46. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scheduler/__init__.py +0 -0
  47. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scheduler/scheduler.py +0 -0
  48. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/scheduler/table_resolver.py +0 -0
  49. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/schema/arrow.py +0 -0
  50. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/schema/resource.py +0 -0
  51. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/serve/__init__.py +0 -0
  52. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/serve/plugin.py +0 -0
  53. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/stateclient/__init__.py +0 -0
  54. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/stateclient/stateclient.py +0 -0
  55. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/transformers/__init__.py +0 -0
  56. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/transformers/openapi.py +0 -0
  57. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/transformers/transformers.py +0 -0
  58. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery/sdk/types/__init__.py +0 -0
  59. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery_plugin_sdk.egg-info/dependency_links.txt +0 -0
  60. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery_plugin_sdk.egg-info/namespace_packages.txt +0 -0
  61. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery_plugin_sdk.egg-info/not-zip-safe +0 -0
  62. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/cloudquery_plugin_sdk.egg-info/top_level.txt +0 -0
  63. {cloudquery_plugin_sdk-0.1.33 → cloudquery_plugin_sdk-0.1.35}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudquery-plugin-sdk
3
- Version: 0.1.33
3
+ Version: 0.1.35
4
4
  Summary: CloudQuery Plugin SDK for Python
5
5
  Home-page: https://github.com/cloudquery/plugin-sdk-python
6
6
  Author: CloudQuery LTD
@@ -20,19 +20,19 @@ Classifier: Operating System :: OS Independent
20
20
  Classifier: Topic :: Internet
21
21
  Requires-Python: >=3.7
22
22
  License-File: LICENSE
23
- Requires-Dist: cloudquery-plugin-pb==0.0.33
23
+ Requires-Dist: cloudquery-plugin-pb==0.0.34
24
24
  Requires-Dist: exceptiongroup==1.2.2
25
- Requires-Dist: black==24.4.2
26
- Requires-Dist: grpcio==1.65.2
27
- Requires-Dist: grpcio-tools==1.65.2
25
+ Requires-Dist: black==24.8.0
26
+ Requires-Dist: grpcio==1.66.1
27
+ Requires-Dist: grpcio-tools==1.66.1
28
28
  Requires-Dist: iniconfig==2.0.0
29
29
  Requires-Dist: Jinja2==3.1.4
30
30
  Requires-Dist: MarkupSafe==2.1.5
31
- Requires-Dist: numpy==2.0.1
31
+ Requires-Dist: numpy==2.1.0
32
32
  Requires-Dist: packaging==24.1
33
33
  Requires-Dist: pandas==2.2.2
34
34
  Requires-Dist: pluggy==1.5.0
35
- Requires-Dist: protobuf==5.27.3
35
+ Requires-Dist: protobuf==5.28.0
36
36
  Requires-Dist: pyarrow==17.0.0
37
37
  Requires-Dist: pytest==8.3.2
38
38
  Requires-Dist: python-dateutil>=2.8.1
@@ -5,6 +5,7 @@ from cloudquery.sdk import message
5
5
  from cloudquery.sdk import schema
6
6
  from typing import List, Generator, Dict
7
7
  import pyarrow as pa
8
+ from cloudquery.sdk.schema.table import Table
8
9
  from cloudquery.sdk.types import JSONType
9
10
  from dataclasses import dataclass, field
10
11
 
@@ -109,5 +110,9 @@ class MemDB(plugin.Plugin):
109
110
  else:
110
111
  raise NotImplementedError(f"Unknown message type {type(msg)}")
111
112
 
113
+ def read(self, table: Table) -> Generator[message.ReadMessage, None, None]:
114
+ for table, record in self._db.items():
115
+ yield message.ReadMessage(record)
116
+
112
117
  def close(self) -> None:
113
118
  self._db = {}
@@ -81,8 +81,14 @@ class PluginServicer(plugin_pb2_grpc.PluginServicer):
81
81
  # unknown sync message type
82
82
  raise NotImplementedError()
83
83
 
84
- def Read(self, request, context):
85
- raise NotImplementedError()
84
+ def Read(
85
+ self, request: plugin_pb2.Read.Request, context
86
+ ) -> Generator[plugin_pb2.Read.Response, None, None]:
87
+ schema = arrow.new_schema_from_bytes(request.table)
88
+ table = Table.from_arrow_schema(schema)
89
+ for msg in self._plugin.read(table):
90
+ buf = arrow.record_to_bytes(msg.record)
91
+ yield plugin_pb2.Read.Response(record=buf)
86
92
 
87
93
  def Write(
88
94
  self, request_iterator: Generator[plugin_pb2.Write.Request, None, None], context
@@ -93,7 +99,9 @@ class PluginServicer(plugin_pb2_grpc.PluginServicer):
93
99
  if field == "migrate_table":
94
100
  sc = arrow.new_schema_from_bytes(msg.migrate_table.table)
95
101
  table = Table.from_arrow_schema(sc)
96
- yield WriteMigrateTableMessage(table=table)
102
+ yield WriteMigrateTableMessage(
103
+ table=table, migrate_force=msg.migrate_table.migrate_force
104
+ )
97
105
  elif field == "insert":
98
106
  yield WriteInsertMessage(
99
107
  record=arrow.new_record_from_bytes(msg.insert.record)
@@ -5,3 +5,4 @@ from .write import (
5
5
  WriteMigrateTableMessage,
6
6
  WriteDeleteStale,
7
7
  )
8
+ from .read import ReadMessage
@@ -0,0 +1,6 @@
1
+ import pyarrow as pa
2
+
3
+
4
+ class ReadMessage:
5
+ def __init__(self, record: pa.RecordBatch):
6
+ self.record = record
@@ -12,8 +12,9 @@ class WriteInsertMessage(WriteMessage):
12
12
 
13
13
 
14
14
  class WriteMigrateTableMessage(WriteMessage):
15
- def __init__(self, table: Table):
15
+ def __init__(self, table: Table, migrate_force: bool):
16
16
  self.table = table
17
+ self.migrate_force = migrate_force
17
18
 
18
19
 
19
20
  class WriteDeleteStale(WriteMessage):
@@ -93,5 +93,8 @@ class Plugin:
93
93
  def write(self, writer: Generator[message.WriteMessage, None, None]) -> None:
94
94
  raise NotImplementedError()
95
95
 
96
+ def read(self, table: Table) -> Generator[message.ReadMessage, None, None]:
97
+ raise NotImplementedError()
98
+
96
99
  def close(self) -> None:
97
100
  raise NotImplementedError()
@@ -0,0 +1,16 @@
1
+ from .column import Column
2
+ from .table import (
3
+ Table,
4
+ tables_to_arrow_schemas,
5
+ filter_dfs,
6
+ TableColumnChangeType,
7
+ TableColumnChange,
8
+ TableColumnChangeType,
9
+ get_table_changes,
10
+ get_table_column,
11
+ flatten_tables_recursive,
12
+ flatten_tables,
13
+ )
14
+ from .resource import Resource
15
+
16
+ # from .table_resolver import TableReso
@@ -55,7 +55,9 @@ class Column:
55
55
  arrow.METADATA_TRUE if self.incremental_key else arrow.METADATA_FALSE
56
56
  ),
57
57
  }
58
- return pa.field(self.name, self.type, metadata=metadata)
58
+ return pa.field(
59
+ self.name, self.type, metadata=metadata, nullable=not self.not_null
60
+ )
59
61
 
60
62
  @staticmethod
61
63
  def from_arrow_field(field: pa.Field) -> Column:
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import copy
4
+ from enum import IntEnum
4
5
  import fnmatch
5
- from typing import List
6
+ from typing import List, Optional
6
7
 
7
8
  import pyarrow as pa
8
9
 
@@ -10,6 +11,10 @@ from cloudquery.sdk.schema import arrow
10
11
  from .column import Column
11
12
 
12
13
 
14
+ CQ_SYNC_TIME_COLUMN = "cq_sync_time"
15
+ CQ_SOURCE_NAME_COLUMN = "cq_source_name"
16
+
17
+
13
18
  class Client:
14
19
  pass
15
20
 
@@ -192,9 +197,137 @@ def _filter_dfs_impl(t, parent_matched, include, exclude, skip_dependent_tables)
192
197
  return None
193
198
 
194
199
 
195
- def flatten_tables(tables: List[Table]) -> List[Table]:
196
- flattened: List[Table] = []
200
+ class TableColumnChangeType:
201
+ ADD = 1
202
+ REMOVE = 2
203
+ REMOVE_UNIQUE_CONSTRAINT = 3
204
+
205
+
206
+ class TableColumnChange:
207
+ def __init__(
208
+ self,
209
+ type: TableColumnChangeType,
210
+ column_name: str,
211
+ current: Optional[Column],
212
+ previous: Optional[Column],
213
+ ):
214
+ self.type = type
215
+ self.column_name = column_name
216
+ self.current = current
217
+ self.previous = previous
218
+
219
+
220
+ class TableColumnChangeType(IntEnum):
221
+ UNKNOWN = 0
222
+ ADD = 1
223
+ UPDATE = 2
224
+ REMOVE = 3
225
+ REMOVE_UNIQUE_CONSTRAINT = 4
226
+ MOVE_TO_CQ_ONLY = 5
227
+
228
+
229
+ def get_table_changes(new: Table, old: Table) -> List[TableColumnChange]:
230
+ changes = []
231
+
232
+ # Special case: Moving from individual PKs to singular PK on _cq_id
233
+ new_pks = new.primary_keys
234
+ if (
235
+ len(new_pks) == 1
236
+ and new_pks[0] == "CqIDColumn"
237
+ and get_table_column(old, "CqIDColumn") is None
238
+ and len(old.primary_keys) > 0
239
+ ):
240
+ changes.append(
241
+ TableColumnChange(
242
+ type=TableColumnChangeType.MOVE_TO_CQ_ONLY,
243
+ )
244
+ )
245
+
246
+ for c in new.columns:
247
+ other_column = get_table_column(old, c.name)
248
+ # A column was added to the table definition
249
+ if other_column is None:
250
+ changes.append(
251
+ TableColumnChange(
252
+ type=TableColumnChangeType.ADD,
253
+ column_name=c.name,
254
+ current=c,
255
+ previous=None,
256
+ )
257
+ )
258
+ continue
259
+
260
+ # Column type or options (e.g. PK, Not Null) changed in the new table definition
261
+ if (
262
+ c.type != other_column.type
263
+ or c.not_null != other_column.not_null
264
+ or c.primary_key != other_column.primary_key
265
+ ):
266
+ changes.append(
267
+ TableColumnChange(
268
+ type=TableColumnChangeType.UPDATE,
269
+ column_name=c.name,
270
+ current=c,
271
+ previous=other_column,
272
+ )
273
+ )
274
+
275
+ # Unique constraint was removed
276
+ if not c.unique and other_column.unique:
277
+ changes.append(
278
+ TableColumnChange(
279
+ type=TableColumnChangeType.REMOVE_UNIQUE_CONSTRAINT,
280
+ column_name=c.name,
281
+ current=c,
282
+ previous=other_column,
283
+ )
284
+ )
285
+
286
+ # A column was removed from the table definition
287
+ for c in old.columns:
288
+ if get_table_column(new, c.name) is None:
289
+ changes.append(
290
+ TableColumnChange(
291
+ type=TableColumnChangeType.REMOVE,
292
+ column_name=c.name,
293
+ current=None,
294
+ previous=c,
295
+ )
296
+ )
297
+
298
+ return changes
299
+
300
+
301
+ def get_table_column(table: Table, column_name: str) -> Optional[Column]:
302
+ for c in table.columns:
303
+ if c.name == column_name:
304
+ return c
305
+ return None
306
+
307
+
308
+ def flatten_tables_recursive(original_tables: List[Table]) -> List[Table]:
309
+ tables = []
310
+ for table in original_tables:
311
+ table_copy = Table(
312
+ name=table.name,
313
+ columns=table.columns,
314
+ relations=table.relations,
315
+ title=table.title,
316
+ description=table.description,
317
+ is_incremental=table.is_incremental,
318
+ parent=table.parent,
319
+ )
320
+ tables.append(table_copy)
321
+ tables.extend(flatten_tables_recursive(table.relations))
322
+ return tables
323
+
324
+
325
+ def flatten_tables(original_tables: List[Table]) -> List[Table]:
326
+ tables = flatten_tables_recursive(original_tables)
327
+ seen = set()
328
+ deduped = []
197
329
  for table in tables:
198
- flattened.append(table)
199
- flattened.extend(flatten_tables(table.relations))
200
- return flattened
330
+ if table.name not in seen:
331
+ deduped.append(table)
332
+ seen.add(table.name)
333
+ return deduped
@@ -21,3 +21,6 @@ class JSONType(pa.ExtensionType):
21
21
  # return an instance of this subclass given the serialized
22
22
  # metadata.
23
23
  return JSONType()
24
+
25
+
26
+ pa.register_extension_type(JSONType())
@@ -23,3 +23,6 @@ class UUIDType(pa.ExtensionType):
23
23
  # return an instance of this subclass given the serialized
24
24
  # metadata.
25
25
  return UUIDType()
26
+
27
+
28
+ pa.register_extension_type(UUIDType())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudquery-plugin-sdk
3
- Version: 0.1.33
3
+ Version: 0.1.35
4
4
  Summary: CloudQuery Plugin SDK for Python
5
5
  Home-page: https://github.com/cloudquery/plugin-sdk-python
6
6
  Author: CloudQuery LTD
@@ -20,19 +20,19 @@ Classifier: Operating System :: OS Independent
20
20
  Classifier: Topic :: Internet
21
21
  Requires-Python: >=3.7
22
22
  License-File: LICENSE
23
- Requires-Dist: cloudquery-plugin-pb==0.0.33
23
+ Requires-Dist: cloudquery-plugin-pb==0.0.34
24
24
  Requires-Dist: exceptiongroup==1.2.2
25
- Requires-Dist: black==24.4.2
26
- Requires-Dist: grpcio==1.65.2
27
- Requires-Dist: grpcio-tools==1.65.2
25
+ Requires-Dist: black==24.8.0
26
+ Requires-Dist: grpcio==1.66.1
27
+ Requires-Dist: grpcio-tools==1.66.1
28
28
  Requires-Dist: iniconfig==2.0.0
29
29
  Requires-Dist: Jinja2==3.1.4
30
30
  Requires-Dist: MarkupSafe==2.1.5
31
- Requires-Dist: numpy==2.0.1
31
+ Requires-Dist: numpy==2.1.0
32
32
  Requires-Dist: packaging==24.1
33
33
  Requires-Dist: pandas==2.2.2
34
34
  Requires-Dist: pluggy==1.5.0
35
- Requires-Dist: protobuf==5.27.3
35
+ Requires-Dist: protobuf==5.28.0
36
36
  Requires-Dist: pyarrow==17.0.0
37
37
  Requires-Dist: pytest==8.3.2
38
38
  Requires-Dist: python-dateutil>=2.8.1
@@ -13,6 +13,7 @@ cloudquery/sdk/internal/servers/discovery_v1/discovery.py
13
13
  cloudquery/sdk/internal/servers/plugin_v3/__init__.py
14
14
  cloudquery/sdk/internal/servers/plugin_v3/plugin.py
15
15
  cloudquery/sdk/message/__init__.py
16
+ cloudquery/sdk/message/read.py
16
17
  cloudquery/sdk/message/sync.py
17
18
  cloudquery/sdk/message/write.py
18
19
  cloudquery/sdk/plugin/__init__.py
@@ -1,16 +1,16 @@
1
- cloudquery-plugin-pb==0.0.33
1
+ cloudquery-plugin-pb==0.0.34
2
2
  exceptiongroup==1.2.2
3
- black==24.4.2
4
- grpcio==1.65.2
5
- grpcio-tools==1.65.2
3
+ black==24.8.0
4
+ grpcio==1.66.1
5
+ grpcio-tools==1.66.1
6
6
  iniconfig==2.0.0
7
7
  Jinja2==3.1.4
8
8
  MarkupSafe==2.1.5
9
- numpy==2.0.1
9
+ numpy==2.1.0
10
10
  packaging==24.1
11
11
  pandas==2.2.2
12
12
  pluggy==1.5.0
13
- protobuf==5.27.3
13
+ protobuf==5.28.0
14
14
  pyarrow==17.0.0
15
15
  pytest==8.3.2
16
16
  python-dateutil>=2.8.1
@@ -10,19 +10,19 @@ name = "cloudquery-plugin-sdk"
10
10
  description = "CloudQuery Plugin SDK for Python"
11
11
 
12
12
  dependencies = [
13
- "cloudquery-plugin-pb==0.0.33",
13
+ "cloudquery-plugin-pb==0.0.34",
14
14
  "exceptiongroup==1.2.2",
15
- "black==24.4.2",
16
- "grpcio==1.65.2",
17
- "grpcio-tools==1.65.2",
15
+ "black==24.8.0",
16
+ "grpcio==1.66.1",
17
+ "grpcio-tools==1.66.1",
18
18
  "iniconfig==2.0.0",
19
19
  "Jinja2==3.1.4",
20
20
  "MarkupSafe==2.1.5",
21
- "numpy==2.0.1",
21
+ "numpy==2.1.0",
22
22
  "packaging==24.1",
23
23
  "pandas==2.2.2",
24
24
  "pluggy==1.5.0",
25
- "protobuf==5.27.3",
25
+ "protobuf==5.28.0",
26
26
  "pyarrow==17.0.0",
27
27
  "pytest==8.3.2",
28
28
  "python-dateutil>=2.8.1",
@@ -51,7 +51,7 @@ packages = [
51
51
  ]
52
52
  setuptools.setup(
53
53
  name=name,
54
- version="0.1.33",
54
+ version="0.1.35",
55
55
  description=description,
56
56
  long_description=long_description,
57
57
  author="CloudQuery LTD",
@@ -1,5 +0,0 @@
1
- from .column import Column
2
- from .table import Table, tables_to_arrow_schemas, filter_dfs
3
- from .resource import Resource
4
-
5
- # from .table_resolver import TableReso