From 45ad14055c3de3836001286f22d23de17266814f Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Thu, 20 Aug 2026 01:04:42 +0000 Subject: [PATCH 1/2] ## Python SDK Changes: * `textql.sandbox.execute_bash()`: **Added** --- .speakeasy/gen.lock | 84 +++++-- .speakeasy/gen.yaml | 2 +- .speakeasy/out.openapi.yaml | 104 ++++++++- .speakeasy/workflow.lock | 10 +- README-PYPI.md | 1 + README.md | 1 + RELEASES.md | 12 +- .../sandboxqueryserviceexecutebashrequest.md | 10 + .../sandboxqueryserviceexecutebashresponse.md | 17 ++ docs/models/textqlrpcauthorganization.md | 6 +- ...icsandboxquerysandboxexecutebashrequest.md | 9 + ...csandboxquerysandboxexecutebashresponse.md | 12 + docs/sdks/sandbox/README.md | 43 ++++ pyproject.toml | 2 +- src/textql_sdk/_version.py | 4 +- src/textql_sdk/models/__init__.py | 30 +++ .../sandboxqueryservice_executebashop.py | 86 +++++++ .../models/textql_rpc_auth_organization.py | 40 +++- ...sandbox_query_sandboxexecutebashrequest.py | 34 +++ ...andbox_query_sandboxexecutebashresponse.py | 71 ++++++ src/textql_sdk/sandbox.py | 218 ++++++++++++++++++ uv.lock | 2 +- 22 files changed, 749 insertions(+), 49 deletions(-) create mode 100644 docs/models/sandboxqueryserviceexecutebashrequest.md create mode 100644 docs/models/sandboxqueryserviceexecutebashresponse.md create mode 100644 docs/models/textqlrpcpublicsandboxquerysandboxexecutebashrequest.md create mode 100644 docs/models/textqlrpcpublicsandboxquerysandboxexecutebashresponse.md create mode 100644 src/textql_sdk/models/sandboxqueryservice_executebashop.py create mode 100644 src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashrequest.py create mode 100644 src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashresponse.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index e738178..2325ad1 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: 140336b3-3873-4a19-9c47-b02749d85f10 management: - docChecksum: 718da4b24d641bff11e94957ac4e712f + docChecksum: 7252c34872b0eda15d79d9b5b45cfd08 docVersion: 1.0.0 speakeasyVersion: 1.795.0 generationVersion: 2.931.0 - releaseVersion: 1.1.0 - configChecksum: 5427e5fec73194e3cdff8d74ad4b530d + releaseVersion: 1.1.1 + configChecksum: da9c41259f065571dbca9e160ca55b24 repoURL: https://github.com/TextQLLabs/textql-python-v3.git installationURL: https://github.com/TextQLLabs/textql-python-v3.git published: true persistentEdits: - generation_id: bd7bb060-db0b-461f-a85a-38b2c0a8a4a5 - pristine_commit_hash: 0c6cd567686a60eb1191c5eebafabcaca5637da2 - pristine_tree_hash: 49398965ef5492a34b31a3896d9cd2f535a3f7e6 + generation_id: 649d3d47-a01f-4607-8df4-1607b899e028 + pristine_commit_hash: 874a78409e87749cf033a976f14482d7feb73603 + pristine_tree_hash: 8987210c8bd4f613d35302860ecd0ce78c04619e features: python: additionalDependencies: 1.1.0 @@ -3589,6 +3589,14 @@ trackedFiles: id: b9b02f35e63d last_write_checksum: sha1:9306121c9c64aa2a4d77a80c224a6bf4a14425e8 pristine_git_object: 7be8b68a66ec9995395aeb550fec17a55d40bf77 + docs/models/sandboxqueryserviceexecutebashrequest.md: + id: 5079169d8ff3 + last_write_checksum: sha1:f7cbef55fceb0763670b20c519eeebec4c946b44 + pristine_git_object: 82367ea4b1ffed7ea72fd37761996fa81ac3b36d + docs/models/sandboxqueryserviceexecutebashresponse.md: + id: c7dba30f50b8 + last_write_checksum: sha1:d654460665806a80ffb734d39c63e002b1de2f4d + pristine_git_object: 43901c7d4203bad3c2053536ea33a7b917b9fe69 docs/models/sandboxqueryserviceexecutequeryrequest.md: id: 7903408b0c68 last_write_checksum: sha1:8d8695dcb84343d1f861c2af271766dd1a1025a3 @@ -4091,8 +4099,8 @@ trackedFiles: pristine_git_object: 0d967cf3d0de25fc43e79dd295df8912e31aebc5 docs/models/textqlrpcauthorganization.md: id: 9cd100fd12d1 - last_write_checksum: sha1:d72fc529c9931e712ab29554e504c49d5d0673be - pristine_git_object: 9389bcd7c7abca73315a0f0e3a543ff9f805b120 + last_write_checksum: sha1:7ab7ff8a1040e58c9df3ad4703f9368751afa869 + pristine_git_object: 64e491b8690f51e948ccc6ea67b0f2eac6fc6789 docs/models/textqlrpcauththeme.md: id: c153ce9ddfc8 last_write_checksum: sha1:9c3534b8fd1a9ffc26ba2429f11906897911d51f @@ -9149,6 +9157,14 @@ trackedFiles: id: 126840c53669 last_write_checksum: sha1:36c44ddcd2a9f69699dde6e87897cf4f65fb89de pristine_git_object: d1c3048ddb0346555e5b0538a1dd8e774fed75da + docs/models/textqlrpcpublicsandboxquerysandboxexecutebashrequest.md: + id: da0939b82a65 + last_write_checksum: sha1:76038e5428f31230f85a1d39ccf7cc64a4528854 + pristine_git_object: 0291a8b5aa588f0d670e6d7a82604536419e3e7f + docs/models/textqlrpcpublicsandboxquerysandboxexecutebashresponse.md: + id: 58ab68cb9abf + last_write_checksum: sha1:90110f44dbe1a24a2f5391c14a2df54cd51e7497 + pristine_git_object: bc45ed6f0834126e8205fa0cdd355ad37ec28dd4 docs/models/textqlrpcpublicsandboxquerysandboxexecutequeryrequest.md: id: 1f5c305f446c last_write_checksum: sha1:2df5ef98b70eb7f807dd2441bc06720b8edc95ca @@ -9711,8 +9727,8 @@ trackedFiles: pristine_git_object: 1db0ae8091d48ee06ac8a84e85084ad93c82ae2e docs/sdks/sandbox/README.md: id: 16b3b8b0e152 - last_write_checksum: sha1:84e57fa88913c0327010f7b4d929e47c2b5fc9d4 - pristine_git_object: d975fbb341ff2de5d8899f9cd915f9f90e0aa281 + last_write_checksum: sha1:45a06f1590059bad6a4cb19925235a399730e4c7 + pristine_git_object: d8d70a3315ff46df14d1520eda1d68126873939d docs/sdks/sandboxadmin/README.md: id: a02e1dc13020 last_write_checksum: sha1:47be0b366c5791a03c2784dbab44aaa834c71e09 @@ -9755,8 +9771,8 @@ trackedFiles: pristine_git_object: d45dd3dfed8f57c8dde47774f645a4eb9575ba90 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:4e32c698c5af0021b8591394541e8e4282afb98e - pristine_git_object: d9fa07b1a5f0cb91cd74738c8d57118596b001cf + last_write_checksum: sha1:510712b768cc716d79a21f5de81ae9775226c0f1 + pristine_git_object: 0e77225d46f9f376e4111b60faac92b105458655 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:d5a0f1ce09f7b890340fdb6f26345fce7dc9a70d @@ -9783,8 +9799,8 @@ trackedFiles: pristine_git_object: a9e63d694ae036ae9a43efc262dd124a2e1062e7 src/textql_sdk/_version.py: id: "226928447e58" - last_write_checksum: sha1:235bfcbe71dbab27737d950ceb4e08420633a877 - pristine_git_object: 871fa23431db456bb911d8d5de44cc952f3c3a95 + last_write_checksum: sha1:e9250c1815a6ba6ee3e64c0dda84636828d32331 + pristine_git_object: d74056e980004c50851d09586b53346e77fd67ca src/textql_sdk/agents.py: id: 4ff492529583 last_write_checksum: sha1:8a4e32311f74147bc4e282a193bc0131d91d3fda @@ -9851,8 +9867,8 @@ trackedFiles: pristine_git_object: f5227a747725a68f1c9b6ebffe42ac0d2436f77f src/textql_sdk/models/__init__.py: id: c8cef98ef3e7 - last_write_checksum: sha1:66d455ebf2408adb33fb8b5724e6f60b09560a29 - pristine_git_object: 142d9a73b1461b77eb4e243f16e5896980ff5b4d + last_write_checksum: sha1:986c037c725c80c880f2bbcc359383f144d20efc + pristine_git_object: e5dc83ba7260cc35b982cd2bc0307d7b74040fac src/textql_sdk/models/agentservice_createagentop.py: id: c31d4c4b52ae last_write_checksum: sha1:eb9ab95a772110d0f587963a73ff3ab4a6f11859 @@ -11301,6 +11317,10 @@ trackedFiles: id: 14625ba22540 last_write_checksum: sha1:9b4cdc52b390954b07bc6c313929857f63086852 pristine_git_object: fe97ddf88c33683adf658e8bebc109bc47e03030 + src/textql_sdk/models/sandboxqueryservice_executebashop.py: + id: ceb0c37e4704 + last_write_checksum: sha1:15d08703f04d4a661e627d55ef908f88cbe59309 + pristine_git_object: 42aa799d826ba429693421b190808699998225c4 src/textql_sdk/models/sandboxqueryservice_executequeryop.py: id: 85ae72dc7c73 last_write_checksum: sha1:6c5ad536a0d904049d453262ff1d8007e0ed4264 @@ -11503,8 +11523,8 @@ trackedFiles: pristine_git_object: 0c950c11ad05677515be17314becde169bb90f8d src/textql_sdk/models/textql_rpc_auth_organization.py: id: 9c2612c7ac65 - last_write_checksum: sha1:13032ec5e476b5387ea6abafef44326eaad53278 - pristine_git_object: 764a9fc5acb15e286e85c36825241f71048f9e71 + last_write_checksum: sha1:6d03efba25aa914bb754a74c29aa0337f68dc540 + pristine_git_object: ab6feb4c2e02284a9c30898be2339daf0bac64d8 src/textql_sdk/models/textql_rpc_auth_theme.py: id: d84272c6a772 last_write_checksum: sha1:5be5b7e34adc57a56a7f3025aea933123e58e378 @@ -16053,6 +16073,14 @@ trackedFiles: id: 9525a1d6bb96 last_write_checksum: sha1:6f37378f82df9a786dddb85d916e4bf1f66f3d41 pristine_git_object: 0ba99515e1299cf561ecad3be1a2eac14e2e1fc1 + src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashrequest.py: + id: 243b48dcb4fb + last_write_checksum: sha1:a9dea28891d968fc113b78d3528d64f9ab41761b + pristine_git_object: f6ee680816005632e582571e427c5d8046d09475 + src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashresponse.py: + id: 598edaa3f2d7 + last_write_checksum: sha1:4e2db7e40cc8b2b61b6e10dacec38b4ebffccf0a + pristine_git_object: 5ce6a3cea3127aadf9c0faa995c0ed06f0da2949 src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutequeryrequest.py: id: d16ca80a3a69 last_write_checksum: sha1:1866f8908cb9b1b2c79038b24c83871899658832 @@ -16467,8 +16495,8 @@ trackedFiles: pristine_git_object: bd26a14eaea7d3dc301b4a471de43db5b08bc3af src/textql_sdk/sandbox.py: id: 14dbbbbb7c86 - last_write_checksum: sha1:6d99b030433d76d1edfff756dc05ecacf6ee8037 - pristine_git_object: 4874b00283715edcff53cc7d242d029554c08b3d + last_write_checksum: sha1:6a93eebb67056a8c838601422c12ebd2f58cc254 + pristine_git_object: accb135a09dee4e0e329fdf06fba43edbe1cd82e src/textql_sdk/sandboxadmin.py: id: 9098d183635f last_write_checksum: sha1:65d7511173af7341eb2c1e44568045165e6c543f @@ -27502,5 +27530,19 @@ examples: application/json: {"organization": {"createdAt": "2023-01-15T01:30:15.01Z", "updatedAt": "2023-01-15T01:30:15.01Z"}} default: application/json: {"code": "not_found"} + SandboxQueryService_ExecuteBash: + speakeasy-default-sandbox-query-service-execute-bash: + parameters: + header: + Connect-Protocol-Version: 1 + requestBody: + application/json: {} + responses: + "200": + application/json: {} + default: + application/json: {"code": "not_found"} examplesVersion: 1.0.2 -releaseNotes: "## Python SDK Changes:\n* `textql.mcp.get_servers()`: `response.mcp_servers[].mcp_server` **Changed**\n* `textql.mcp.upsert_mcp_servers()`: \n * `request.mcp_servers[]` **Changed**\n * `response.mcp_servers[].mcp_server` **Changed**\n" +releaseNotes: | + ## Python SDK Changes: + * `textql.sandbox.execute_bash()`: **Added** diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 98a37ba..59f4c09 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -34,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: false python: - version: 1.1.0 + version: 1.1.1 additionalDependencies: dev: types-protobuf: '>=6.31' diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index cb712cf..eb8ee7b 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -13394,6 +13394,44 @@ paths: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.sandbox_exec.SandboxLoadConnectorDataResponse' + /textql.rpc.public.sandbox_query.SandboxQueryService/ExecuteBash: + post: + tags: + - SandboxQueryService + summary: Runs in the caller's own worker; no connector/source scoping. + description: Runs in the caller's own worker; no connector/source scoping. + operationId: SandboxQueryService_ExecuteBash + x-speakeasy-group: sandbox + x-speakeasy-name-override: executeBash + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/textql.rpc.public.sandbox_query.SandboxExecuteBashRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/textql.rpc.public.sandbox_query.SandboxExecuteBashResponse' /textql.rpc.public.sandbox_query.SandboxQueryService/ExecuteQuery: post: tags: @@ -15973,20 +16011,28 @@ components: type: boolean title: config_objects_enabled description: |- - config_objects feature_flags row: umbrella switch for all config-managed-object behavior — Ana's - authoring tools, the export RPC + capabilities, reconcile takeover. Supersedes config_migrations_enabled (field 74). + config_objects feature_flags row: the umbrella half of the config-management predicate + (library.ConfigManagedOrg = this flag AND the org already having a Library — the flag + alone does not make an org config-managed). One switch for every object type and every + config-managed-object behavior — Ana's authoring tools, the export RPC + capabilities, + reconcile takeover, the lazy row-to-config migration. Supersedes + config_migrations_enabled (field 74). nullable: true configObjectsPlaybooksEnabled: type: boolean title: config_objects_playbooks_enabled description: |- - Per-type sub-toggles under config_objects: playbooks-as-files / dashboards-as-files. - Effective only while config_objects_enabled is on; no feature_flags row means enabled. + Deprecated: never populated. config_objects_enabled (field 80) is the umbrella for every + object type — config management is one-way, so a per-type switch that cannot + un-migrate an object is either inert or actively harmful (ADR-0040). Retained only + because proto/api is additive-only. nullable: true + deprecated: true configObjectsDashboardsEnabled: type: boolean title: config_objects_dashboards_enabled nullable: true + deprecated: true configAutofixEnabled: type: boolean title: config_autofix_enabled @@ -38208,6 +38254,56 @@ components: description: library path to a .tql file title: LibraryTQLTemplate additionalProperties: false + textql.rpc.public.sandbox_query.SandboxExecuteBashRequest: + type: object + properties: + script: + type: string + title: script + env: + type: object + title: env + additionalProperties: + type: string + title: value + title: SandboxExecuteBashRequest + additionalProperties: false + textql.rpc.public.sandbox_query.SandboxExecuteBashRequest.EnvEntry: + type: object + properties: + key: + type: string + title: key + value: + type: string + title: value + title: EnvEntry + additionalProperties: false + textql.rpc.public.sandbox_query.SandboxExecuteBashResponse: + type: object + properties: + stdout: + type: string + title: stdout + format: byte + stderr: + type: string + title: stderr + format: byte + exitCode: + type: integer + title: exit_code + format: int32 + error: + type: string + title: error + description: non-empty on execution-level failure (timeout, spawn error) + refreshedToken: + type: string + title: refreshed_token + nullable: true + title: SandboxExecuteBashResponse + additionalProperties: false textql.rpc.public.sandbox_query.SandboxExecuteQueryRequest: type: object allOf: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index a5a1bd5..5601c44 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.795.0 sources: TextQL API: sourceNamespace: textql-api - sourceRevisionDigest: sha256:d157354305b3985bb2f5779630c5514c9b722efb4991824852c1ee21e41e5f80 - sourceBlobDigest: sha256:5f86f9af8817f7113213d7d337c4cf0b0ef7053362f583dad601916eb9ffe2a4 + sourceRevisionDigest: sha256:896f94386889ea862a6c5c9d15b530b069377483cb44f3d76a0963ba3cded091 + sourceBlobDigest: sha256:0ff5134102f12c642678e4b9a485a750f5186bd9525a0088d0dde77dd4b757e5 tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: textql: source: TextQL API sourceNamespace: textql-api - sourceRevisionDigest: sha256:d157354305b3985bb2f5779630c5514c9b722efb4991824852c1ee21e41e5f80 - sourceBlobDigest: sha256:5f86f9af8817f7113213d7d337c4cf0b0ef7053362f583dad601916eb9ffe2a4 + sourceRevisionDigest: sha256:896f94386889ea862a6c5c9d15b530b069377483cb44f3d76a0963ba3cded091 + sourceBlobDigest: sha256:0ff5134102f12c642678e4b9a485a750f5186bd9525a0088d0dde77dd4b757e5 codeSamplesNamespace: textql-api-python-code-samples - codeSamplesRevisionDigest: sha256:9298bc937f8b59e34b207da7bb4a98d73c4ec8dfa9e6eb29c4faedd62b124f86 + codeSamplesRevisionDigest: sha256:5862462d3657b57533f4118971cb9f58dee0381c5fa969e693f7a4f7b463c91b workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README-PYPI.md b/README-PYPI.md index a9b8009..72d3cc3 100644 --- a/README-PYPI.md +++ b/README-PYPI.md @@ -575,6 +575,7 @@ with Textql( * [execute_code](https://github.com/TextQLLabs/textql-python-v3/blob/master/docs/sdks/sandbox/README.md#execute_code) - ExecuteCode * [get_tool_availability](https://github.com/TextQLLabs/textql-python-v3/blob/master/docs/sdks/sandbox/README.md#get_tool_availability) - GetToolAvailability * [load_connector_data](https://github.com/TextQLLabs/textql-python-v3/blob/master/docs/sdks/sandbox/README.md#load_connector_data) - LoadConnectorData +* [execute_bash](https://github.com/TextQLLabs/textql-python-v3/blob/master/docs/sdks/sandbox/README.md#execute_bash) - Runs in the caller's own worker; no connector/source scoping. * [execute_query](https://github.com/TextQLLabs/textql-python-v3/blob/master/docs/sdks/sandbox/README.md#execute_query) - ExecuteQuery ### [SandboxAdmin](https://github.com/TextQLLabs/textql-python-v3/blob/master/docs/sdks/sandboxadmin/README.md) diff --git a/README.md b/README.md index 7177eaf..01c02aa 100644 --- a/README.md +++ b/README.md @@ -575,6 +575,7 @@ with Textql( * [execute_code](docs/sdks/sandbox/README.md#execute_code) - ExecuteCode * [get_tool_availability](docs/sdks/sandbox/README.md#get_tool_availability) - GetToolAvailability * [load_connector_data](docs/sdks/sandbox/README.md#load_connector_data) - LoadConnectorData +* [execute_bash](docs/sdks/sandbox/README.md#execute_bash) - Runs in the caller's own worker; no connector/source scoping. * [execute_query](docs/sdks/sandbox/README.md#execute_query) - ExecuteQuery ### [SandboxAdmin](docs/sdks/sandboxadmin/README.md) diff --git a/RELEASES.md b/RELEASES.md index 76bc4ea..1b54487 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -238,4 +238,14 @@ Based on: ### Generated - [python v1.1.0] . ### Releases -- [PyPI v1.1.0] https://pypi.org/project/textql-sdk/1.1.0 - . \ No newline at end of file +- [PyPI v1.1.0] https://pypi.org/project/textql-sdk/1.1.0 - . + +## 2026-08-20 01:01:06 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.795.0 (2.931.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.1.1] . +### Releases +- [PyPI v1.1.1] https://pypi.org/project/textql-sdk/1.1.1 - . \ No newline at end of file diff --git a/docs/models/sandboxqueryserviceexecutebashrequest.md b/docs/models/sandboxqueryserviceexecutebashrequest.md new file mode 100644 index 0000000..82367ea --- /dev/null +++ b/docs/models/sandboxqueryserviceexecutebashrequest.md @@ -0,0 +1,10 @@ +# SandboxQueryServiceExecuteBashRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `connect_protocol_version` | *float* | :heavy_check_mark: | N/A | +| `connect_timeout_ms` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `body` | [models.TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest](../models/textqlrpcpublicsandboxquerysandboxexecutebashrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/sandboxqueryserviceexecutebashresponse.md b/docs/models/sandboxqueryserviceexecutebashresponse.md new file mode 100644 index 0000000..43901c7 --- /dev/null +++ b/docs/models/sandboxqueryserviceexecutebashresponse.md @@ -0,0 +1,17 @@ +# SandboxQueryServiceExecuteBashResponse + + +## Supported Types + +### `models.TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse` + +```python +value: models.TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse = /* values here */ +``` + +### `models.ConnectError` + +```python +value: models.ConnectError = /* values here */ +``` + diff --git a/docs/models/textqlrpcauthorganization.md b/docs/models/textqlrpcauthorganization.md index 9389bcd..64e491b 100644 --- a/docs/models/textqlrpcauthorganization.md +++ b/docs/models/textqlrpcauthorganization.md @@ -83,9 +83,9 @@ | `sandbox_observability_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | | `data_apps_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | Internal gate for the data apps feature (apps resource + html generative dashboards). | | | `issues_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | -| `config_objects_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | config_objects feature_flags row: umbrella switch for all config-managed-object behavior — Ana's
authoring tools, the export RPC + capabilities, reconcile takeover. Supersedes config_migrations_enabled (field 74). | | -| `config_objects_playbooks_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | Per-type sub-toggles under config_objects: playbooks-as-files / dashboards-as-files.
Effective only while config_objects_enabled is on; no feature_flags row means enabled. | | -| `config_objects_dashboards_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `config_objects_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | config_objects feature_flags row: the umbrella half of the config-management predicate
(library.ConfigManagedOrg = this flag AND the org already having a Library — the flag
alone does not make an org config-managed). One switch for every object type and every
config-managed-object behavior — Ana's authoring tools, the export RPC + capabilities,
reconcile takeover, the lazy row-to-config migration. Supersedes
config_migrations_enabled (field 74). | | +| ~~`config_objects_playbooks_enabled`~~ | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated: never populated. config_objects_enabled (field 80) is the umbrella for every
object type — config management is one-way, so a per-type switch that cannot
un-migrate an object is either inert or actively harmful (ADR-0040). Retained only
because proto/api is additive-only. | | +| ~~`config_objects_dashboards_enabled`~~ | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | | | ~~`config_autofix_enabled`~~ | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated: never populated. The autofix sweep no longer has a per-org opt-in — it runs for
every org with the config-object checks surface on. Retained only because proto/api is additive-only. | | | `helm_chart_version` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | | `spend_transparency_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | Internal flag: show dollar costs (spend transparency) across the product.
Only rendered for internal (@textql.com) users while pricing is verified. | | diff --git a/docs/models/textqlrpcpublicsandboxquerysandboxexecutebashrequest.md b/docs/models/textqlrpcpublicsandboxquerysandboxexecutebashrequest.md new file mode 100644 index 0000000..0291a8b --- /dev/null +++ b/docs/models/textqlrpcpublicsandboxquerysandboxexecutebashrequest.md @@ -0,0 +1,9 @@ +# TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `script` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `env` | Dict[str, *str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/textqlrpcpublicsandboxquerysandboxexecutebashresponse.md b/docs/models/textqlrpcpublicsandboxquerysandboxexecutebashresponse.md new file mode 100644 index 0000000..bc45ed6 --- /dev/null +++ b/docs/models/textqlrpcpublicsandboxquerysandboxexecutebashresponse.md @@ -0,0 +1,12 @@ +# TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `stdout` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `stderr` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `exit_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `error` | *Optional[str]* | :heavy_minus_sign: | non-empty on execution-level failure (timeout, spawn error) | +| `refreshed_token` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdks/sandbox/README.md b/docs/sdks/sandbox/README.md index d975fbb..d8d70a3 100644 --- a/docs/sdks/sandbox/README.md +++ b/docs/sdks/sandbox/README.md @@ -9,6 +9,7 @@ * [execute_code](#execute_code) - ExecuteCode * [get_tool_availability](#get_tool_availability) - GetToolAvailability * [load_connector_data](#load_connector_data) - LoadConnectorData +* [execute_bash](#execute_bash) - Runs in the caller's own worker; no connector/source scoping. * [execute_query](#execute_query) - ExecuteQuery ## create @@ -226,6 +227,48 @@ with Textql( | ------------------------- | ------------------------- | ------------------------- | | errors.TextqlDefaultError | 4XX, 5XX | \*/\* | +## execute_bash + +Runs in the caller's own worker; no connector/source scoping. + +### Example Usage + + +```python +import os +from textql_sdk import Textql + + +with Textql( + api_key=os.getenv("TEXTQL_API_KEY", ""), +) as textql: + + res = textql.sandbox.execute_bash() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `connect_timeout_ms` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `script` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `env` | Dict[str, *str*] | :heavy_minus_sign: | N/A | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.SandboxQueryServiceExecuteBashResponse](../../models/sandboxqueryserviceexecutebashresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------- | ------------------------- | ------------------------- | +| errors.TextqlDefaultError | 4XX, 5XX | \*/\* | + ## execute_query ExecuteQuery diff --git a/pyproject.toml b/pyproject.toml index d9fa07b..0e77225 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "textql-sdk" -version = "1.1.0" +version = "1.1.1" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" diff --git a/src/textql_sdk/_version.py b/src/textql_sdk/_version.py index 871fa23..d74056e 100644 --- a/src/textql_sdk/_version.py +++ b/src/textql_sdk/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "textql-sdk" -__version__: str = "1.1.0" +__version__: str = "1.1.1" __openapi_doc_version__: str = "1.0.0" __gen_version__: str = "2.931.0" -__user_agent__: str = "speakeasy-sdk/python 1.1.0 2.931.0 1.0.0 textql-sdk" +__user_agent__: str = "speakeasy-sdk/python 1.1.1 2.931.0 1.0.0 textql-sdk" try: if __package__ is not None: diff --git a/src/textql_sdk/models/__init__.py b/src/textql_sdk/models/__init__.py index 142d9a7..e5dc83b 100644 --- a/src/textql_sdk/models/__init__.py +++ b/src/textql_sdk/models/__init__.py @@ -2186,6 +2186,12 @@ SandboxExecServiceLoadConnectorDataResponse, SandboxExecServiceLoadConnectorDataResponseTypedDict, ) + from .sandboxqueryservice_executebashop import ( + SandboxQueryServiceExecuteBashRequest, + SandboxQueryServiceExecuteBashRequestTypedDict, + SandboxQueryServiceExecuteBashResponse, + SandboxQueryServiceExecuteBashResponseTypedDict, + ) from .sandboxqueryservice_executequeryop import ( SandboxQueryServiceExecuteQueryRequest, SandboxQueryServiceExecuteQueryRequestTypedDict, @@ -7562,6 +7568,14 @@ TextqlRPCPublicSandboxQueryLibraryTQLTemplate, TextqlRPCPublicSandboxQueryLibraryTQLTemplateTypedDict, ) + from .textql_rpc_public_sandbox_query_sandboxexecutebashrequest import ( + TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest, + TextqlRPCPublicSandboxQuerySandboxExecuteBashRequestTypedDict, + ) + from .textql_rpc_public_sandbox_query_sandboxexecutebashresponse import ( + TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse, + TextqlRPCPublicSandboxQuerySandboxExecuteBashResponseTypedDict, + ) from .textql_rpc_public_sandbox_query_sandboxexecutequeryrequest import ( AppDb, AppDbTypedDict, @@ -9739,6 +9753,10 @@ "SandboxExecServiceLoadConnectorDataRequestTypedDict", "SandboxExecServiceLoadConnectorDataResponse", "SandboxExecServiceLoadConnectorDataResponseTypedDict", + "SandboxQueryServiceExecuteBashRequest", + "SandboxQueryServiceExecuteBashRequestTypedDict", + "SandboxQueryServiceExecuteBashResponse", + "SandboxQueryServiceExecuteBashResponseTypedDict", "SandboxQueryServiceExecuteQueryRequest", "SandboxQueryServiceExecuteQueryRequestTypedDict", "SandboxQueryServiceExecuteQueryResponse", @@ -12445,6 +12463,10 @@ "TextqlRPCPublicSandboxQueryLibraryTQLTemplateTypedDict", "TextqlRPCPublicSandboxQuerySQLQueryTemplate", "TextqlRPCPublicSandboxQuerySQLQueryTemplateTypedDict", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashRequestTypedDict", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashResponseTypedDict", "TextqlRPCPublicSandboxQuerySandboxExecuteQueryRequest", "TextqlRPCPublicSandboxQuerySandboxExecuteQueryRequestLibraryTql", "TextqlRPCPublicSandboxQuerySandboxExecuteQueryRequestLibraryTqlTypedDict", @@ -14138,6 +14160,10 @@ "SandboxExecServiceLoadConnectorDataRequestTypedDict": ".sandboxexecservice_loadconnectordataop", "SandboxExecServiceLoadConnectorDataResponse": ".sandboxexecservice_loadconnectordataop", "SandboxExecServiceLoadConnectorDataResponseTypedDict": ".sandboxexecservice_loadconnectordataop", + "SandboxQueryServiceExecuteBashRequest": ".sandboxqueryservice_executebashop", + "SandboxQueryServiceExecuteBashRequestTypedDict": ".sandboxqueryservice_executebashop", + "SandboxQueryServiceExecuteBashResponse": ".sandboxqueryservice_executebashop", + "SandboxQueryServiceExecuteBashResponseTypedDict": ".sandboxqueryservice_executebashop", "SandboxQueryServiceExecuteQueryRequest": ".sandboxqueryservice_executequeryop", "SandboxQueryServiceExecuteQueryRequestTypedDict": ".sandboxqueryservice_executequeryop", "SandboxQueryServiceExecuteQueryResponse": ".sandboxqueryservice_executequeryop", @@ -17184,6 +17210,10 @@ "TextqlRPCPublicSandboxQueryAppDBTemplateTypedDict": ".textql_rpc_public_sandbox_query_appdbtemplate", "TextqlRPCPublicSandboxQueryLibraryTQLTemplate": ".textql_rpc_public_sandbox_query_librarytqltemplate", "TextqlRPCPublicSandboxQueryLibraryTQLTemplateTypedDict": ".textql_rpc_public_sandbox_query_librarytqltemplate", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest": ".textql_rpc_public_sandbox_query_sandboxexecutebashrequest", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashRequestTypedDict": ".textql_rpc_public_sandbox_query_sandboxexecutebashrequest", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse": ".textql_rpc_public_sandbox_query_sandboxexecutebashresponse", + "TextqlRPCPublicSandboxQuerySandboxExecuteBashResponseTypedDict": ".textql_rpc_public_sandbox_query_sandboxexecutebashresponse", "AppDb": ".textql_rpc_public_sandbox_query_sandboxexecutequeryrequest", "AppDbTypedDict": ".textql_rpc_public_sandbox_query_sandboxexecutequeryrequest", "TextqlRPCPublicSandboxQuerySandboxExecuteQueryRequest": ".textql_rpc_public_sandbox_query_sandboxexecutequeryrequest", diff --git a/src/textql_sdk/models/sandboxqueryservice_executebashop.py b/src/textql_sdk/models/sandboxqueryservice_executebashop.py new file mode 100644 index 0000000..42aa799 --- /dev/null +++ b/src/textql_sdk/models/sandboxqueryservice_executebashop.py @@ -0,0 +1,86 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .connect_error import ConnectError, ConnectErrorTypedDict +from .textql_rpc_public_sandbox_query_sandboxexecutebashrequest import ( + TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest, + TextqlRPCPublicSandboxQuerySandboxExecuteBashRequestTypedDict, +) +from .textql_rpc_public_sandbox_query_sandboxexecutebashresponse import ( + TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse, + TextqlRPCPublicSandboxQuerySandboxExecuteBashResponseTypedDict, +) +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from textql_sdk.types import BaseModel, UNSET_SENTINEL +from textql_sdk.utils import ( + FieldMetadata, + HeaderMetadata, + RequestMetadata, + validate_const, +) +from typing import Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class SandboxQueryServiceExecuteBashRequestTypedDict(TypedDict): + body: TextqlRPCPublicSandboxQuerySandboxExecuteBashRequestTypedDict + connect_protocol_version: float + connect_timeout_ms: NotRequired[float] + + +class SandboxQueryServiceExecuteBashRequest(BaseModel): + body: Annotated[ + TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + connect_protocol_version: Annotated[ + Annotated[float, AfterValidator(validate_const(1))], + pydantic.Field(alias="Connect-Protocol-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = 1 + + connect_timeout_ms: Annotated[ + Optional[float], + pydantic.Field(alias="Connect-Timeout-Ms"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["Connect-Timeout-Ms"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +SandboxQueryServiceExecuteBashResponseTypedDict = TypeAliasType( + "SandboxQueryServiceExecuteBashResponseTypedDict", + Union[ + ConnectErrorTypedDict, + TextqlRPCPublicSandboxQuerySandboxExecuteBashResponseTypedDict, + ], +) + + +SandboxQueryServiceExecuteBashResponse = TypeAliasType( + "SandboxQueryServiceExecuteBashResponse", + Union[ConnectError, TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse], +) + + +try: + SandboxQueryServiceExecuteBashRequest.model_rebuild() +except NameError: + pass diff --git a/src/textql_sdk/models/textql_rpc_auth_organization.py b/src/textql_sdk/models/textql_rpc_auth_organization.py index 764a9fc..ab6feb4 100644 --- a/src/textql_sdk/models/textql_rpc_auth_organization.py +++ b/src/textql_sdk/models/textql_rpc_auth_organization.py @@ -300,12 +300,18 @@ class TextqlRPCAuthOrganizationTypedDict(TypedDict): r"""Internal gate for the data apps feature (apps resource + html generative dashboards).""" issues_enabled: NotRequired[Nullable[bool]] config_objects_enabled: NotRequired[Nullable[bool]] - r"""config_objects feature_flags row: umbrella switch for all config-managed-object behavior — Ana's - authoring tools, the export RPC + capabilities, reconcile takeover. Supersedes config_migrations_enabled (field 74). + r"""config_objects feature_flags row: the umbrella half of the config-management predicate + (library.ConfigManagedOrg = this flag AND the org already having a Library — the flag + alone does not make an org config-managed). One switch for every object type and every + config-managed-object behavior — Ana's authoring tools, the export RPC + capabilities, + reconcile takeover, the lazy row-to-config migration. Supersedes + config_migrations_enabled (field 74). """ config_objects_playbooks_enabled: NotRequired[Nullable[bool]] - r"""Per-type sub-toggles under config_objects: playbooks-as-files / dashboards-as-files. - Effective only while config_objects_enabled is on; no feature_flags row means enabled. + r"""Deprecated: never populated. config_objects_enabled (field 80) is the umbrella for every + object type — config management is one-way, so a per-type switch that cannot + un-migrate an object is either inert or actively harmful (ADR-0040). Retained only + because proto/api is additive-only. """ config_objects_dashboards_enabled: NotRequired[Nullable[bool]] config_autofix_enabled: NotRequired[Nullable[bool]] @@ -831,19 +837,33 @@ class TextqlRPCAuthOrganization(BaseModel): config_objects_enabled: Annotated[ OptionalNullable[bool], pydantic.Field(alias="configObjectsEnabled") ] = UNSET - r"""config_objects feature_flags row: umbrella switch for all config-managed-object behavior — Ana's - authoring tools, the export RPC + capabilities, reconcile takeover. Supersedes config_migrations_enabled (field 74). + r"""config_objects feature_flags row: the umbrella half of the config-management predicate + (library.ConfigManagedOrg = this flag AND the org already having a Library — the flag + alone does not make an org config-managed). One switch for every object type and every + config-managed-object behavior — Ana's authoring tools, the export RPC + capabilities, + reconcile takeover, the lazy row-to-config migration. Supersedes + config_migrations_enabled (field 74). """ config_objects_playbooks_enabled: Annotated[ - OptionalNullable[bool], pydantic.Field(alias="configObjectsPlaybooksEnabled") + OptionalNullable[bool], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + alias="configObjectsPlaybooksEnabled", + ), ] = UNSET - r"""Per-type sub-toggles under config_objects: playbooks-as-files / dashboards-as-files. - Effective only while config_objects_enabled is on; no feature_flags row means enabled. + r"""Deprecated: never populated. config_objects_enabled (field 80) is the umbrella for every + object type — config management is one-way, so a per-type switch that cannot + un-migrate an object is either inert or actively harmful (ADR-0040). Retained only + because proto/api is additive-only. """ config_objects_dashboards_enabled: Annotated[ - OptionalNullable[bool], pydantic.Field(alias="configObjectsDashboardsEnabled") + OptionalNullable[bool], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + alias="configObjectsDashboardsEnabled", + ), ] = UNSET config_autofix_enabled: Annotated[ diff --git a/src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashrequest.py b/src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashrequest.py new file mode 100644 index 0000000..f6ee680 --- /dev/null +++ b/src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashrequest.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from pydantic import model_serializer +from textql_sdk.types import BaseModel, UNSET_SENTINEL +from typing import Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class TextqlRPCPublicSandboxQuerySandboxExecuteBashRequestTypedDict(TypedDict): + script: NotRequired[str] + env: NotRequired[Dict[str, str]] + + +class TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest(BaseModel): + script: Optional[str] = None + + env: Optional[Dict[str, str]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["script", "env"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashresponse.py b/src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashresponse.py new file mode 100644 index 0000000..5ce6a3c --- /dev/null +++ b/src/textql_sdk/models/textql_rpc_public_sandbox_query_sandboxexecutebashresponse.py @@ -0,0 +1,71 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import pydantic +from pydantic import model_serializer +from textql_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TextqlRPCPublicSandboxQuerySandboxExecuteBashResponseTypedDict(TypedDict): + stdout: NotRequired[str] + stderr: NotRequired[str] + exit_code: NotRequired[int] + error: NotRequired[str] + r"""non-empty on execution-level failure (timeout, spawn error)""" + refreshed_token: NotRequired[Nullable[str]] + + +class TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse(BaseModel): + stdout: Optional[str] = None + + stderr: Optional[str] = None + + exit_code: Annotated[Optional[int], pydantic.Field(alias="exitCode")] = None + + error: Optional[str] = None + r"""non-empty on execution-level failure (timeout, spawn error)""" + + refreshed_token: Annotated[ + OptionalNullable[str], pydantic.Field(alias="refreshedToken") + ] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["stdout", "stderr", "exitCode", "error", "refreshedToken"] + ) + nullable_fields = set(["refreshedToken"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +try: + TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse.model_rebuild() +except NameError: + pass diff --git a/src/textql_sdk/sandbox.py b/src/textql_sdk/sandbox.py index 4874b00..accb135 100644 --- a/src/textql_sdk/sandbox.py +++ b/src/textql_sdk/sandbox.py @@ -1146,6 +1146,224 @@ async def load_connector_data_async( raise errors.TextqlDefaultError("Unexpected response received", http_res) + def execute_bash( + self, + *, + connect_timeout_ms: Optional[float] = None, + script: Optional[str] = None, + env: Optional[Mapping[str, str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SandboxQueryServiceExecuteBashResponse: + r"""Runs in the caller's own worker; no connector/source scoping. + + Runs in the caller's own worker; no connector/source scoping. + + :param connect_timeout_ms: + :param script: + :param env: + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.SandboxQueryServiceExecuteBashRequest( + connect_timeout_ms=connect_timeout_ms, + body=models.TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest( + script=script, + env=utils.unmarshal(env, Optional[Dict[str, str]]), + ), + ) + + req = self._build_request( + method="POST", + path="/textql.rpc.public.sandbox_query.SandboxQueryService/ExecuteBash", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.body, + False, + False, + "json", + models.TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="SandboxQueryService_ExecuteBash", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["SandboxQueryService"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse, http_res + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.TextqlDefaultError( + "API error occurred", http_res, http_res_text + ) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.TextqlDefaultError( + "API error occurred", http_res, http_res_text + ) + if utils.match_response(http_res, "default", "application/json"): + return unmarshal_json_response(models.ConnectError, http_res) + + raise errors.TextqlDefaultError("Unexpected response received", http_res) + + async def execute_bash_async( + self, + *, + connect_timeout_ms: Optional[float] = None, + script: Optional[str] = None, + env: Optional[Mapping[str, str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SandboxQueryServiceExecuteBashResponse: + r"""Runs in the caller's own worker; no connector/source scoping. + + Runs in the caller's own worker; no connector/source scoping. + + :param connect_timeout_ms: + :param script: + :param env: + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.SandboxQueryServiceExecuteBashRequest( + connect_timeout_ms=connect_timeout_ms, + body=models.TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest( + script=script, + env=utils.unmarshal(env, Optional[Dict[str, str]]), + ), + ) + + req = self._build_request_async( + method="POST", + path="/textql.rpc.public.sandbox_query.SandboxQueryService/ExecuteBash", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.body, + False, + False, + "json", + models.TextqlRPCPublicSandboxQuerySandboxExecuteBashRequest, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="SandboxQueryService_ExecuteBash", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["SandboxQueryService"], + extensions=None, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.TextqlRPCPublicSandboxQuerySandboxExecuteBashResponse, http_res + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.TextqlDefaultError( + "API error occurred", http_res, http_res_text + ) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.TextqlDefaultError( + "API error occurred", http_res, http_res_text + ) + if utils.match_response(http_res, "default", "application/json"): + return unmarshal_json_response(models.ConnectError, http_res) + + raise errors.TextqlDefaultError("Unexpected response received", http_res) + def execute_query( self, *, diff --git a/uv.lock b/uv.lock index 507eca3..33064ff 100644 --- a/uv.lock +++ b/uv.lock @@ -470,7 +470,7 @@ wheels = [ [[package]] name = "textql-sdk" -version = "1.1.0" +version = "1.1.1" source = { editable = "." } dependencies = [ { name = "connect-python" }, From 0a46bd3b274a850972131c794dd8a3594c39338e Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 01:04:54 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow