From bdf356e85bd68e4d8db31c6b29c68149eea75c22 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 16 Jun 2025 18:27:17 +0100 Subject: [PATCH 1/3] fix(deps): Update dependency protobuf to v5.29.5 [SECURITY] (#162) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [protobuf](https://developers.google.com/protocol-buffers/) | patch | `==5.29.4` -> `==5.29.5` | ### GitHub Vulnerability Alerts #### [CVE-2025-4565](https://redirect.github.com/protocolbuffers/protobuf/security/advisories/GHSA-735f-pc8j-v9w8) ### Summary Any project that uses Protobuf pure-Python backend to parse untrusted Protocol Buffers data containing an arbitrary number of **recursive groups**, **recursive messages** or **a series of [`SGROUP`](https://protobuf.dev/programming-guides/encoding/#groups) tags** can be corrupted by exceeding the Python recursion limit. Reporter: Alexis Challande, Trail of Bits Ecosystem Security Team [ecosystem@trailofbits.com](mailto:ecosystem@trailofbits.com) Affected versions: This issue only affects the [pure-Python implementation](https://redirect.github.com/protocolbuffers/protobuf/tree/main/python#implementation-backends) of protobuf-python backend. This is the implementation when `PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python` environment variable is set or the default when protobuf is used from Bazel or pure-Python PyPi wheels. CPython PyPi wheels do not use pure-Python by default. This is a Python variant of a [previous issue affecting protobuf-java](https://redirect.github.com/protocolbuffers/protobuf/security/advisories/GHSA-735f-pc8j-v9w8). ### Severity This is a potential Denial of Service. Parsing nested protobuf data creates unbounded recursions that can be abused by an attacker. ### Proof of Concept For reproduction details, please refer to the unit tests [decoder_test.py](https://redirect.github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/decoder_test.py#L87-L98) and [message_test](https://redirect.github.com/protocolbuffers/protobuf/blob/main/python/google/protobuf/internal/message_test.py#L1436-L1478) ### Remediation and Mitigation A mitigation is available now. Please update to the latest available versions of the following packages: * protobuf-python(4.25.8, 5.29.5, 6.31.1) --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 160e0f5..c8bc7b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ black==25.1.0 grpcio-tools==1.71.0 grpcio==1.71.0 -protobuf==5.29.4 +protobuf==5.29.5 pyarrow==19.0.1 pytest==8.3.5 From 386b701fe64be6aa2a9a08cddbc0c1a104e621b8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 25 Jun 2025 11:58:13 +0100 Subject: [PATCH 2/3] fix: Generate Python Code from `plugin-pb` (#164) This PR was created by a scheduled workflow to regenerate the Python code from `plugin-pb`. --- cloudquery/plugin_v3/plugin_pb2.py | 110 ++++++++++++++-------------- cloudquery/plugin_v3/plugin_pb2.pyi | 13 +++- 2 files changed, 67 insertions(+), 56 deletions(-) diff --git a/cloudquery/plugin_v3/plugin_pb2.py b/cloudquery/plugin_v3/plugin_pb2.py index 464b046..3215a5f 100644 --- a/cloudquery/plugin_v3/plugin_pb2.py +++ b/cloudquery/plugin_v3/plugin_pb2.py @@ -25,7 +25,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!cloudquery/plugin_v3/plugin.proto\x12\x14\x63loudquery.plugin.v3\x1a\x1fgoogle/protobuf/timestamp.proto\".\n\x07GetName\x1a\t\n\x07Request\x1a\x18\n\x08Response\x12\x0c\n\x04name\x18\x01 \x01(\t\"4\n\nGetVersion\x1a\t\n\x07Request\x1a\x1b\n\x08Response\x12\x0f\n\x07version\x18\x01 \x01(\t\"P\n\rGetSpecSchema\x1a\t\n\x07Request\x1a\x34\n\x08Response\x12\x18\n\x0bjson_schema\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_json_schema\"Y\n\x04Init\x1a\x45\n\x07Request\x12\x0c\n\x04spec\x18\x01 \x01(\x0c\x12\x15\n\rno_connection\x18\x02 \x01(\x08\x12\x15\n\rinvocation_id\x18\x03 \x01(\t\x1a\n\n\x08Response\"v\n\tGetTables\x1aM\n\x07Request\x12\x0e\n\x06tables\x18\x01 \x03(\t\x12\x13\n\x0bskip_tables\x18\x02 \x03(\t\x12\x1d\n\x15skip_dependent_tables\x18\x03 \x01(\x08\x1a\x1a\n\x08Response\x12\x0e\n\x06tables\x18\x01 \x03(\x0c\"\xaa\x06\n\x04Sync\x1a\x1f\n\rMessageInsert\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x1a$\n\x13MessageMigrateTable\x12\r\n\x05table\x18\x01 \x01(\x0c\x1a\xa4\x01\n\x13MessageDeleteRecord\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12;\n\x0cwhere_clause\x18\x02 \x03(\x0b\x32%.cloudquery.plugin.v3.PredicatesGroup\x12<\n\x0ftable_relations\x18\x03 \x03(\x0b\x32#.cloudquery.plugin.v3.TableRelation\x1a\x38\n\x0e\x42\x61\x63kendOptions\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x12\n\nconnection\x18\x02 \x01(\t\x1a\x93\x02\n\x07Request\x12\x0e\n\x06tables\x18\x01 \x03(\t\x12\x13\n\x0bskip_tables\x18\x02 \x03(\t\x12\x1d\n\x15skip_dependent_tables\x18\x03 \x01(\x08\x12\x1b\n\x13\x64\x65terministic_cq_id\x18\x04 \x01(\x08\x12:\n\x07\x62\x61\x63kend\x18\x05 \x01(\x0b\x32).cloudquery.plugin.v3.Sync.BackendOptions\x12<\n\x05shard\x18\x06 \x01(\x0b\x32(.cloudquery.plugin.v3.Sync.Request.ShardH\x00\x88\x01\x01\x1a#\n\x05Shard\x12\x0b\n\x03num\x18\x01 \x01(\x05\x12\r\n\x05total\x18\x02 \x01(\x05\x42\x08\n\x06_shard\x1a\xe3\x01\n\x08Response\x12G\n\rmigrate_table\x18\x01 \x01(\x0b\x32..cloudquery.plugin.v3.Sync.MessageMigrateTableH\x00\x12:\n\x06insert\x18\x02 \x01(\x0b\x32(.cloudquery.plugin.v3.Sync.MessageInsertH\x00\x12G\n\rdelete_record\x18\x03 \x01(\x0b\x32..cloudquery.plugin.v3.Sync.MessageDeleteRecordH\x00\x42\t\n\x07message\"<\n\x04Read\x1a\x18\n\x07Request\x12\r\n\x05table\x18\x01 \x01(\x0c\x1a\x1a\n\x08Response\x12\x0e\n\x06record\x18\x01 \x01(\x0c\"9\n\rTableRelation\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x14\n\x0cparent_table\x18\x02 \x01(\t\"{\n\tPredicate\x12:\n\x08operator\x18\x01 \x01(\x0e\x32(.cloudquery.plugin.v3.Predicate.Operator\x12\x0e\n\x06\x63olumn\x18\x02 \x01(\t\x12\x0e\n\x06record\x18\x03 \x01(\x0c\"\x12\n\x08Operator\x12\x06\n\x02\x45Q\x10\x00\"\xb2\x01\n\x0fPredicatesGroup\x12I\n\rgrouping_type\x18\x01 \x01(\x0e\x32\x32.cloudquery.plugin.v3.PredicatesGroup.GroupingType\x12\x33\n\npredicates\x18\x02 \x03(\x0b\x32\x1f.cloudquery.plugin.v3.Predicate\"\x1f\n\x0cGroupingType\x12\x07\n\x03\x41ND\x10\x00\x12\x06\n\x02OR\x10\x01\"\xc3\x05\n\x05Write\x1a;\n\x13MessageMigrateTable\x12\r\n\x05table\x18\x01 \x01(\x0c\x12\x15\n\rmigrate_force\x18\x02 \x01(\x08\x1a\x1f\n\rMessageInsert\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x1a\x7f\n\x12MessageDeleteStale\x12\x11\n\x05table\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x13\n\x0bsource_name\x18\x02 \x01(\t\x12-\n\tsync_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ntable_name\x18\x04 \x01(\t\x1a\xa4\x01\n\x13MessageDeleteRecord\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12;\n\x0cwhere_clause\x18\x02 \x03(\x0b\x32%.cloudquery.plugin.v3.PredicatesGroup\x12<\n\x0ftable_relations\x18\x03 \x03(\x0b\x32#.cloudquery.plugin.v3.TableRelation\x1a\xa7\x02\n\x07Request\x12H\n\rmigrate_table\x18\x01 \x01(\x0b\x32/.cloudquery.plugin.v3.Write.MessageMigrateTableH\x00\x12;\n\x06insert\x18\x02 \x01(\x0b\x32).cloudquery.plugin.v3.Write.MessageInsertH\x00\x12@\n\x06\x64\x65lete\x18\x03 \x01(\x0b\x32..cloudquery.plugin.v3.Write.MessageDeleteStaleH\x00\x12H\n\rdelete_record\x18\x04 \x01(\x0b\x32/.cloudquery.plugin.v3.Write.MessageDeleteRecordH\x00\x42\t\n\x07message\x1a\n\n\x08Response\"B\n\tTransform\x1a\x19\n\x07Request\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x1a\x1a\n\x08Response\x12\x0e\n\x06record\x18\x01 \x01(\x0c\"H\n\x0fTransformSchema\x1a\x19\n\x07Request\x12\x0e\n\x06schema\x18\x01 \x01(\x0c\x1a\x1a\n\x08Response\x12\x0e\n\x06schema\x18\x01 \x01(\x0c\"\x1e\n\x05\x43lose\x1a\t\n\x07Request\x1a\n\n\x08Response\"y\n\x0eTestConnection\x1a\x17\n\x07Request\x12\x0c\n\x04spec\x18\x01 \x01(\x0c\x1aN\n\x08Response\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x14\n\x0c\x66\x61ilure_code\x18\x02 \x01(\t\x12\x1b\n\x13\x66\x61ilure_description\x18\x03 \x01(\t2\xf7\x08\n\x06Plugin\x12X\n\x07GetName\x12%.cloudquery.plugin.v3.GetName.Request\x1a&.cloudquery.plugin.v3.GetName.Response\x12\x61\n\nGetVersion\x12(.cloudquery.plugin.v3.GetVersion.Request\x1a).cloudquery.plugin.v3.GetVersion.Response\x12j\n\rGetSpecSchema\x12+.cloudquery.plugin.v3.GetSpecSchema.Request\x1a,.cloudquery.plugin.v3.GetSpecSchema.Response\x12O\n\x04Init\x12\".cloudquery.plugin.v3.Init.Request\x1a#.cloudquery.plugin.v3.Init.Response\x12^\n\tGetTables\x12\'.cloudquery.plugin.v3.GetTables.Request\x1a(.cloudquery.plugin.v3.GetTables.Response\x12Q\n\x04Sync\x12\".cloudquery.plugin.v3.Sync.Request\x1a#.cloudquery.plugin.v3.Sync.Response0\x01\x12Q\n\x04Read\x12\".cloudquery.plugin.v3.Read.Request\x1a#.cloudquery.plugin.v3.Read.Response0\x01\x12T\n\x05Write\x12#.cloudquery.plugin.v3.Write.Request\x1a$.cloudquery.plugin.v3.Write.Response(\x01\x12\x62\n\tTransform\x12\'.cloudquery.plugin.v3.Transform.Request\x1a(.cloudquery.plugin.v3.Transform.Response(\x01\x30\x01\x12p\n\x0fTransformSchema\x12-.cloudquery.plugin.v3.TransformSchema.Request\x1a..cloudquery.plugin.v3.TransformSchema.Response\x12R\n\x05\x43lose\x12#.cloudquery.plugin.v3.Close.Request\x1a$.cloudquery.plugin.v3.Close.Response\x12m\n\x0eTestConnection\x12,.cloudquery.plugin.v3.TestConnection.Request\x1a-.cloudquery.plugin.v3.TestConnection.ResponseBS\n\x17io.cloudquery.plugin.v3P\x01Z6github.com/cloudquery/plugin-pb-go/pb/plugin/v3;pluginb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!cloudquery/plugin_v3/plugin.proto\x12\x14\x63loudquery.plugin.v3\x1a\x1fgoogle/protobuf/timestamp.proto\".\n\x07GetName\x1a\t\n\x07Request\x1a\x18\n\x08Response\x12\x0c\n\x04name\x18\x01 \x01(\t\"4\n\nGetVersion\x1a\t\n\x07Request\x1a\x1b\n\x08Response\x12\x0f\n\x07version\x18\x01 \x01(\t\"P\n\rGetSpecSchema\x1a\t\n\x07Request\x1a\x34\n\x08Response\x12\x18\n\x0bjson_schema\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_json_schema\"Y\n\x04Init\x1a\x45\n\x07Request\x12\x0c\n\x04spec\x18\x01 \x01(\x0c\x12\x15\n\rno_connection\x18\x02 \x01(\x08\x12\x15\n\rinvocation_id\x18\x03 \x01(\t\x1a\n\n\x08Response\"v\n\tGetTables\x1aM\n\x07Request\x12\x0e\n\x06tables\x18\x01 \x03(\t\x12\x13\n\x0bskip_tables\x18\x02 \x03(\t\x12\x1d\n\x15skip_dependent_tables\x18\x03 \x01(\x08\x1a\x1a\n\x08Response\x12\x0e\n\x06tables\x18\x01 \x03(\x0c\"\x97\x07\n\x04Sync\x1a\x1f\n\rMessageInsert\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x1a$\n\x13MessageMigrateTable\x12\r\n\x05table\x18\x01 \x01(\x0c\x1a\xa4\x01\n\x13MessageDeleteRecord\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12;\n\x0cwhere_clause\x18\x02 \x03(\x0b\x32%.cloudquery.plugin.v3.PredicatesGroup\x12<\n\x0ftable_relations\x18\x03 \x03(\x0b\x32#.cloudquery.plugin.v3.TableRelation\x1a\x31\n\x0cMessageError\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x1a\x38\n\x0e\x42\x61\x63kendOptions\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x12\n\nconnection\x18\x02 \x01(\t\x1a\x93\x02\n\x07Request\x12\x0e\n\x06tables\x18\x01 \x03(\t\x12\x13\n\x0bskip_tables\x18\x02 \x03(\t\x12\x1d\n\x15skip_dependent_tables\x18\x03 \x01(\x08\x12\x1b\n\x13\x64\x65terministic_cq_id\x18\x04 \x01(\x08\x12:\n\x07\x62\x61\x63kend\x18\x05 \x01(\x0b\x32).cloudquery.plugin.v3.Sync.BackendOptions\x12<\n\x05shard\x18\x06 \x01(\x0b\x32(.cloudquery.plugin.v3.Sync.Request.ShardH\x00\x88\x01\x01\x1a#\n\x05Shard\x12\x0b\n\x03num\x18\x01 \x01(\x05\x12\r\n\x05total\x18\x02 \x01(\x05\x42\x08\n\x06_shard\x1a\x9d\x02\n\x08Response\x12G\n\rmigrate_table\x18\x01 \x01(\x0b\x32..cloudquery.plugin.v3.Sync.MessageMigrateTableH\x00\x12:\n\x06insert\x18\x02 \x01(\x0b\x32(.cloudquery.plugin.v3.Sync.MessageInsertH\x00\x12G\n\rdelete_record\x18\x03 \x01(\x0b\x32..cloudquery.plugin.v3.Sync.MessageDeleteRecordH\x00\x12\x38\n\x05\x65rror\x18\x04 \x01(\x0b\x32\'.cloudquery.plugin.v3.Sync.MessageErrorH\x00\x42\t\n\x07message\"<\n\x04Read\x1a\x18\n\x07Request\x12\r\n\x05table\x18\x01 \x01(\x0c\x1a\x1a\n\x08Response\x12\x0e\n\x06record\x18\x01 \x01(\x0c\"9\n\rTableRelation\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x14\n\x0cparent_table\x18\x02 \x01(\t\"{\n\tPredicate\x12:\n\x08operator\x18\x01 \x01(\x0e\x32(.cloudquery.plugin.v3.Predicate.Operator\x12\x0e\n\x06\x63olumn\x18\x02 \x01(\t\x12\x0e\n\x06record\x18\x03 \x01(\x0c\"\x12\n\x08Operator\x12\x06\n\x02\x45Q\x10\x00\"\xb2\x01\n\x0fPredicatesGroup\x12I\n\rgrouping_type\x18\x01 \x01(\x0e\x32\x32.cloudquery.plugin.v3.PredicatesGroup.GroupingType\x12\x33\n\npredicates\x18\x02 \x03(\x0b\x32\x1f.cloudquery.plugin.v3.Predicate\"\x1f\n\x0cGroupingType\x12\x07\n\x03\x41ND\x10\x00\x12\x06\n\x02OR\x10\x01\"\xc3\x05\n\x05Write\x1a;\n\x13MessageMigrateTable\x12\r\n\x05table\x18\x01 \x01(\x0c\x12\x15\n\rmigrate_force\x18\x02 \x01(\x08\x1a\x1f\n\rMessageInsert\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x1a\x7f\n\x12MessageDeleteStale\x12\x11\n\x05table\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x13\n\x0bsource_name\x18\x02 \x01(\t\x12-\n\tsync_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ntable_name\x18\x04 \x01(\t\x1a\xa4\x01\n\x13MessageDeleteRecord\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12;\n\x0cwhere_clause\x18\x02 \x03(\x0b\x32%.cloudquery.plugin.v3.PredicatesGroup\x12<\n\x0ftable_relations\x18\x03 \x03(\x0b\x32#.cloudquery.plugin.v3.TableRelation\x1a\xa7\x02\n\x07Request\x12H\n\rmigrate_table\x18\x01 \x01(\x0b\x32/.cloudquery.plugin.v3.Write.MessageMigrateTableH\x00\x12;\n\x06insert\x18\x02 \x01(\x0b\x32).cloudquery.plugin.v3.Write.MessageInsertH\x00\x12@\n\x06\x64\x65lete\x18\x03 \x01(\x0b\x32..cloudquery.plugin.v3.Write.MessageDeleteStaleH\x00\x12H\n\rdelete_record\x18\x04 \x01(\x0b\x32/.cloudquery.plugin.v3.Write.MessageDeleteRecordH\x00\x42\t\n\x07message\x1a\n\n\x08Response\"B\n\tTransform\x1a\x19\n\x07Request\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x1a\x1a\n\x08Response\x12\x0e\n\x06record\x18\x01 \x01(\x0c\"H\n\x0fTransformSchema\x1a\x19\n\x07Request\x12\x0e\n\x06schema\x18\x01 \x01(\x0c\x1a\x1a\n\x08Response\x12\x0e\n\x06schema\x18\x01 \x01(\x0c\"\x1e\n\x05\x43lose\x1a\t\n\x07Request\x1a\n\n\x08Response\"y\n\x0eTestConnection\x1a\x17\n\x07Request\x12\x0c\n\x04spec\x18\x01 \x01(\x0c\x1aN\n\x08Response\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x14\n\x0c\x66\x61ilure_code\x18\x02 \x01(\t\x12\x1b\n\x13\x66\x61ilure_description\x18\x03 \x01(\t2\xf7\x08\n\x06Plugin\x12X\n\x07GetName\x12%.cloudquery.plugin.v3.GetName.Request\x1a&.cloudquery.plugin.v3.GetName.Response\x12\x61\n\nGetVersion\x12(.cloudquery.plugin.v3.GetVersion.Request\x1a).cloudquery.plugin.v3.GetVersion.Response\x12j\n\rGetSpecSchema\x12+.cloudquery.plugin.v3.GetSpecSchema.Request\x1a,.cloudquery.plugin.v3.GetSpecSchema.Response\x12O\n\x04Init\x12\".cloudquery.plugin.v3.Init.Request\x1a#.cloudquery.plugin.v3.Init.Response\x12^\n\tGetTables\x12\'.cloudquery.plugin.v3.GetTables.Request\x1a(.cloudquery.plugin.v3.GetTables.Response\x12Q\n\x04Sync\x12\".cloudquery.plugin.v3.Sync.Request\x1a#.cloudquery.plugin.v3.Sync.Response0\x01\x12Q\n\x04Read\x12\".cloudquery.plugin.v3.Read.Request\x1a#.cloudquery.plugin.v3.Read.Response0\x01\x12T\n\x05Write\x12#.cloudquery.plugin.v3.Write.Request\x1a$.cloudquery.plugin.v3.Write.Response(\x01\x12\x62\n\tTransform\x12\'.cloudquery.plugin.v3.Transform.Request\x1a(.cloudquery.plugin.v3.Transform.Response(\x01\x30\x01\x12p\n\x0fTransformSchema\x12-.cloudquery.plugin.v3.TransformSchema.Request\x1a..cloudquery.plugin.v3.TransformSchema.Response\x12R\n\x05\x43lose\x12#.cloudquery.plugin.v3.Close.Request\x1a$.cloudquery.plugin.v3.Close.Response\x12m\n\x0eTestConnection\x12,.cloudquery.plugin.v3.TestConnection.Request\x1a-.cloudquery.plugin.v3.TestConnection.ResponseBS\n\x17io.cloudquery.plugin.v3P\x01Z6github.com/cloudquery/plugin-pb-go/pb/plugin/v3;pluginb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -66,75 +66,77 @@ _globals['_GETTABLES_RESPONSE']._serialized_start=459 _globals['_GETTABLES_RESPONSE']._serialized_end=485 _globals['_SYNC']._serialized_start=488 - _globals['_SYNC']._serialized_end=1298 + _globals['_SYNC']._serialized_end=1407 _globals['_SYNC_MESSAGEINSERT']._serialized_start=496 _globals['_SYNC_MESSAGEINSERT']._serialized_end=527 _globals['_SYNC_MESSAGEMIGRATETABLE']._serialized_start=529 _globals['_SYNC_MESSAGEMIGRATETABLE']._serialized_end=565 _globals['_SYNC_MESSAGEDELETERECORD']._serialized_start=568 _globals['_SYNC_MESSAGEDELETERECORD']._serialized_end=732 - _globals['_SYNC_BACKENDOPTIONS']._serialized_start=734 - _globals['_SYNC_BACKENDOPTIONS']._serialized_end=790 - _globals['_SYNC_REQUEST']._serialized_start=793 - _globals['_SYNC_REQUEST']._serialized_end=1068 - _globals['_SYNC_REQUEST_SHARD']._serialized_start=1023 - _globals['_SYNC_REQUEST_SHARD']._serialized_end=1058 - _globals['_SYNC_RESPONSE']._serialized_start=1071 - _globals['_SYNC_RESPONSE']._serialized_end=1298 - _globals['_READ']._serialized_start=1300 - _globals['_READ']._serialized_end=1360 - _globals['_READ_REQUEST']._serialized_start=1308 - _globals['_READ_REQUEST']._serialized_end=1332 - _globals['_READ_RESPONSE']._serialized_start=1334 - _globals['_READ_RESPONSE']._serialized_end=1360 - _globals['_TABLERELATION']._serialized_start=1362 - _globals['_TABLERELATION']._serialized_end=1419 - _globals['_PREDICATE']._serialized_start=1421 - _globals['_PREDICATE']._serialized_end=1544 - _globals['_PREDICATE_OPERATOR']._serialized_start=1526 - _globals['_PREDICATE_OPERATOR']._serialized_end=1544 - _globals['_PREDICATESGROUP']._serialized_start=1547 - _globals['_PREDICATESGROUP']._serialized_end=1725 - _globals['_PREDICATESGROUP_GROUPINGTYPE']._serialized_start=1694 - _globals['_PREDICATESGROUP_GROUPINGTYPE']._serialized_end=1725 - _globals['_WRITE']._serialized_start=1728 - _globals['_WRITE']._serialized_end=2435 - _globals['_WRITE_MESSAGEMIGRATETABLE']._serialized_start=1737 - _globals['_WRITE_MESSAGEMIGRATETABLE']._serialized_end=1796 + _globals['_SYNC_MESSAGEERROR']._serialized_start=734 + _globals['_SYNC_MESSAGEERROR']._serialized_end=783 + _globals['_SYNC_BACKENDOPTIONS']._serialized_start=785 + _globals['_SYNC_BACKENDOPTIONS']._serialized_end=841 + _globals['_SYNC_REQUEST']._serialized_start=844 + _globals['_SYNC_REQUEST']._serialized_end=1119 + _globals['_SYNC_REQUEST_SHARD']._serialized_start=1074 + _globals['_SYNC_REQUEST_SHARD']._serialized_end=1109 + _globals['_SYNC_RESPONSE']._serialized_start=1122 + _globals['_SYNC_RESPONSE']._serialized_end=1407 + _globals['_READ']._serialized_start=1409 + _globals['_READ']._serialized_end=1469 + _globals['_READ_REQUEST']._serialized_start=1417 + _globals['_READ_REQUEST']._serialized_end=1441 + _globals['_READ_RESPONSE']._serialized_start=1443 + _globals['_READ_RESPONSE']._serialized_end=1469 + _globals['_TABLERELATION']._serialized_start=1471 + _globals['_TABLERELATION']._serialized_end=1528 + _globals['_PREDICATE']._serialized_start=1530 + _globals['_PREDICATE']._serialized_end=1653 + _globals['_PREDICATE_OPERATOR']._serialized_start=1635 + _globals['_PREDICATE_OPERATOR']._serialized_end=1653 + _globals['_PREDICATESGROUP']._serialized_start=1656 + _globals['_PREDICATESGROUP']._serialized_end=1834 + _globals['_PREDICATESGROUP_GROUPINGTYPE']._serialized_start=1803 + _globals['_PREDICATESGROUP_GROUPINGTYPE']._serialized_end=1834 + _globals['_WRITE']._serialized_start=1837 + _globals['_WRITE']._serialized_end=2544 + _globals['_WRITE_MESSAGEMIGRATETABLE']._serialized_start=1846 + _globals['_WRITE_MESSAGEMIGRATETABLE']._serialized_end=1905 _globals['_WRITE_MESSAGEINSERT']._serialized_start=496 _globals['_WRITE_MESSAGEINSERT']._serialized_end=527 - _globals['_WRITE_MESSAGEDELETESTALE']._serialized_start=1831 - _globals['_WRITE_MESSAGEDELETESTALE']._serialized_end=1958 + _globals['_WRITE_MESSAGEDELETESTALE']._serialized_start=1940 + _globals['_WRITE_MESSAGEDELETESTALE']._serialized_end=2067 _globals['_WRITE_MESSAGEDELETERECORD']._serialized_start=568 _globals['_WRITE_MESSAGEDELETERECORD']._serialized_end=732 - _globals['_WRITE_REQUEST']._serialized_start=2128 - _globals['_WRITE_REQUEST']._serialized_end=2423 + _globals['_WRITE_REQUEST']._serialized_start=2237 + _globals['_WRITE_REQUEST']._serialized_end=2532 _globals['_WRITE_RESPONSE']._serialized_start=114 _globals['_WRITE_RESPONSE']._serialized_end=124 - _globals['_TRANSFORM']._serialized_start=2437 - _globals['_TRANSFORM']._serialized_end=2503 - _globals['_TRANSFORM_REQUEST']._serialized_start=2450 - _globals['_TRANSFORM_REQUEST']._serialized_end=2475 - _globals['_TRANSFORM_RESPONSE']._serialized_start=1334 - _globals['_TRANSFORM_RESPONSE']._serialized_end=1360 - _globals['_TRANSFORMSCHEMA']._serialized_start=2505 - _globals['_TRANSFORMSCHEMA']._serialized_end=2577 - _globals['_TRANSFORMSCHEMA_REQUEST']._serialized_start=2524 - _globals['_TRANSFORMSCHEMA_REQUEST']._serialized_end=2549 - _globals['_TRANSFORMSCHEMA_RESPONSE']._serialized_start=2551 - _globals['_TRANSFORMSCHEMA_RESPONSE']._serialized_end=2577 - _globals['_CLOSE']._serialized_start=2579 - _globals['_CLOSE']._serialized_end=2609 + _globals['_TRANSFORM']._serialized_start=2546 + _globals['_TRANSFORM']._serialized_end=2612 + _globals['_TRANSFORM_REQUEST']._serialized_start=2559 + _globals['_TRANSFORM_REQUEST']._serialized_end=2584 + _globals['_TRANSFORM_RESPONSE']._serialized_start=1443 + _globals['_TRANSFORM_RESPONSE']._serialized_end=1469 + _globals['_TRANSFORMSCHEMA']._serialized_start=2614 + _globals['_TRANSFORMSCHEMA']._serialized_end=2686 + _globals['_TRANSFORMSCHEMA_REQUEST']._serialized_start=2633 + _globals['_TRANSFORMSCHEMA_REQUEST']._serialized_end=2658 + _globals['_TRANSFORMSCHEMA_RESPONSE']._serialized_start=2660 + _globals['_TRANSFORMSCHEMA_RESPONSE']._serialized_end=2686 + _globals['_CLOSE']._serialized_start=2688 + _globals['_CLOSE']._serialized_end=2718 _globals['_CLOSE_REQUEST']._serialized_start=103 _globals['_CLOSE_REQUEST']._serialized_end=112 _globals['_CLOSE_RESPONSE']._serialized_start=114 _globals['_CLOSE_RESPONSE']._serialized_end=124 - _globals['_TESTCONNECTION']._serialized_start=2611 - _globals['_TESTCONNECTION']._serialized_end=2732 + _globals['_TESTCONNECTION']._serialized_start=2720 + _globals['_TESTCONNECTION']._serialized_end=2841 _globals['_TESTCONNECTION_REQUEST']._serialized_start=284 _globals['_TESTCONNECTION_REQUEST']._serialized_end=307 - _globals['_TESTCONNECTION_RESPONSE']._serialized_start=2654 - _globals['_TESTCONNECTION_RESPONSE']._serialized_end=2732 - _globals['_PLUGIN']._serialized_start=2735 - _globals['_PLUGIN']._serialized_end=3878 + _globals['_TESTCONNECTION_RESPONSE']._serialized_start=2763 + _globals['_TESTCONNECTION_RESPONSE']._serialized_end=2841 + _globals['_PLUGIN']._serialized_start=2844 + _globals['_PLUGIN']._serialized_end=3987 # @@protoc_insertion_point(module_scope) diff --git a/cloudquery/plugin_v3/plugin_pb2.pyi b/cloudquery/plugin_v3/plugin_pb2.pyi index d74477d..5742645 100644 --- a/cloudquery/plugin_v3/plugin_pb2.pyi +++ b/cloudquery/plugin_v3/plugin_pb2.pyi @@ -98,6 +98,13 @@ class Sync(_message.Message): where_clause: _containers.RepeatedCompositeFieldContainer[PredicatesGroup] table_relations: _containers.RepeatedCompositeFieldContainer[TableRelation] def __init__(self, table_name: _Optional[str] = ..., where_clause: _Optional[_Iterable[_Union[PredicatesGroup, _Mapping]]] = ..., table_relations: _Optional[_Iterable[_Union[TableRelation, _Mapping]]] = ...) -> None: ... + class MessageError(_message.Message): + __slots__ = ("table_name", "error") + TABLE_NAME_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + table_name: str + error: str + def __init__(self, table_name: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ... class BackendOptions(_message.Message): __slots__ = ("table_name", "connection") TABLE_NAME_FIELD_NUMBER: _ClassVar[int] @@ -128,14 +135,16 @@ class Sync(_message.Message): shard: Sync.Request.Shard def __init__(self, tables: _Optional[_Iterable[str]] = ..., skip_tables: _Optional[_Iterable[str]] = ..., skip_dependent_tables: bool = ..., deterministic_cq_id: bool = ..., backend: _Optional[_Union[Sync.BackendOptions, _Mapping]] = ..., shard: _Optional[_Union[Sync.Request.Shard, _Mapping]] = ...) -> None: ... class Response(_message.Message): - __slots__ = ("migrate_table", "insert", "delete_record") + __slots__ = ("migrate_table", "insert", "delete_record", "error") MIGRATE_TABLE_FIELD_NUMBER: _ClassVar[int] INSERT_FIELD_NUMBER: _ClassVar[int] DELETE_RECORD_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] migrate_table: Sync.MessageMigrateTable insert: Sync.MessageInsert delete_record: Sync.MessageDeleteRecord - def __init__(self, migrate_table: _Optional[_Union[Sync.MessageMigrateTable, _Mapping]] = ..., insert: _Optional[_Union[Sync.MessageInsert, _Mapping]] = ..., delete_record: _Optional[_Union[Sync.MessageDeleteRecord, _Mapping]] = ...) -> None: ... + error: Sync.MessageError + def __init__(self, migrate_table: _Optional[_Union[Sync.MessageMigrateTable, _Mapping]] = ..., insert: _Optional[_Union[Sync.MessageInsert, _Mapping]] = ..., delete_record: _Optional[_Union[Sync.MessageDeleteRecord, _Mapping]] = ..., error: _Optional[_Union[Sync.MessageError, _Mapping]] = ...) -> None: ... def __init__(self) -> None: ... class Read(_message.Message): From 3004e96e5851e95b00d4172c1983a233edf94ece Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 26 Jun 2025 11:15:12 +0100 Subject: [PATCH 3/3] chore(main): Release v0.0.44 (#163) :robot: I have created a release *beep* *boop* --- ## [0.0.44](https://github.com/cloudquery/plugin-pb-python/compare/v0.0.43...v0.0.44) (2025-06-25) ### Bug Fixes * **deps:** Update dependency protobuf to v5.29.5 [SECURITY] ([#162](https://github.com/cloudquery/plugin-pb-python/issues/162)) ([bdf356e](https://github.com/cloudquery/plugin-pb-python/commit/bdf356e85bd68e4d8db31c6b29c68149eea75c22)) * Generate Python Code from `plugin-pb` ([#164](https://github.com/cloudquery/plugin-pb-python/issues/164)) ([386b701](https://github.com/cloudquery/plugin-pb-python/commit/386b701fe64be6aa2a9a08cddbc0c1a104e621b8)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ setup.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d7a636b..23eee9e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.43" + ".": "0.0.44" } diff --git a/CHANGELOG.md b/CHANGELOG.md index bb03777..c27d4f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.0.44](https://github.com/cloudquery/plugin-pb-python/compare/v0.0.43...v0.0.44) (2025-06-25) + + +### Bug Fixes + +* **deps:** Update dependency protobuf to v5.29.5 [SECURITY] ([#162](https://github.com/cloudquery/plugin-pb-python/issues/162)) ([bdf356e](https://github.com/cloudquery/plugin-pb-python/commit/bdf356e85bd68e4d8db31c6b29c68149eea75c22)) +* Generate Python Code from `plugin-pb` ([#164](https://github.com/cloudquery/plugin-pb-python/issues/164)) ([386b701](https://github.com/cloudquery/plugin-pb-python/commit/386b701fe64be6aa2a9a08cddbc0c1a104e621b8)) + ## [0.0.43](https://github.com/cloudquery/plugin-pb-python/compare/v0.0.42...v0.0.43) (2025-05-01) diff --git a/setup.py b/setup.py index 98fa3a1..46aba5c 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ ] setuptools.setup( name=name, - version="0.0.43", + version="0.0.44", description=description, long_description=long_description, author="CloudQuery LTD",