This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: deprecated
continuo-python-runtime-trino
Trino (Iceberg connector) runtime-adapter library for Continuo python nodes.
Implements continuo_validation_contract.port.RuntimeAdapter (from the
published continuo-validation-contract package) and registers itself under
entry-point group continuo_runtime.adapters as trino.
Connection env: TRINO_HOST, TRINO_CATALOG (required); TRINO_PORT (default
8080), TRINO_USER (default continuo), TRINO_HTTP_SCHEME (default http),
TRINO_PASSWORD (optional; requires TRINO_HTTP_SCHEME=https). Mirrors
continuo_validation_trino.adapter.TrinoAdapter.from_env exactly.
No multi-statement transactions
Unlike the postgres runtime adapter, Trino/Iceberg has no multi-statement
transactions, so load() cannot be a single atomic TRUNCATE+INSERT. Two
atomic-replace primitives were verified live (Trino 483 + Iceberg REST catalog)
before choosing one — see the full writeup in continuo_python_runtime_trino/adapter.py's
module docstring:
CREATE OR REPLACE TABLE t AS SELECT * FROM stageis a single Iceberg metadata commit but silently drops NOT NULL constraints on the replaced table (verified live: a NULL insert into a "NOT NULL" column succeeds afterwards, and this connector/version does not support re-adding NOT NULL viaALTER TABLE ... ALTER COLUMN ... SET NOT NULL). Rejected for this reason.CREATE TABLE stage (LIKE target INCLUDING PROPERTIES)at a fresh sibling Iceberg location + populate + a two-statementALTER TABLE ... RENAME TOswap preserves the target's exact columns, NOT NULL constraints, partitioning, format, and other connector properties (verified live). This is whatload()uses.
The swap's exact atomicity guarantee: nothing under the target name is touched
until every row has been inserted into staging, so a failure before the swap
begins (e.g. a NOT-NULL-violating row) leaves the prior target contents
untouched. The two-statement rename swap itself is not single-statement
atomic — there is a brief window between the two renames during which the
target name refers to neither table. load() makes a best-effort recovery
attempt (rename the private old relation back) if the second rename raises, and
best-effort drops only a private staging relation created by that load. If
recovery itself fails, the logged private old relation remains available for
manual recovery because it contains the original target data.
load() assumes a single writer per table: Continuo's scheduler runs at most
one Job per node at a time. Concurrent load() calls against the same table are
unsupported because their target renames would race. Each load uses UUID-named
private swap relations, so distinct targets cannot collide with each other or
with legitimate user tables.
NOT NULL is supported here
Verified live against Trino 483 + the Iceberg REST catalog: NOT NULL column
constraints in CREATE TABLE are supported and enforced by INSERT
(CONSTRAINT_VIOLATION on a NULL value). ensure_table() emits NOT NULL for
nullable=False columns, same as the postgres adapter.
Type-name mapping
The contract's SQL-type grammar (copied verbatim from the postgres adapter, same
regex) admits spellings Trino does not recognize as type names: TEXT,
DOUBLE PRECISION, NUMERIC(p,s). These are mapped to Trino's own spellings
(VARCHAR, DOUBLE, DECIMAL(p,s)) after the grammar guard has already
rejected anything injection-shaped. Every other grammar token is valid Trino DDL
unchanged.
Identifier quoting
The trino DBAPI has no psycopg2-style sql.Identifier. Catalog, schema, table,
and column names are double-quoted by hand, with every embedded double quote
doubled. This preserves legal delimited identifiers such as sales-prod,
order id, and has"quote without allowing names to escape their quotes.
Verification tier: unit tests are mock-free pure-logic tests (type-grammar
validation, type-name mapping, identifier quoting, location derivation, Arrow
table construction from rows); DDL/swap behavior (schema/table creation,
load-owned swap relations, property and NOT NULL preservation, failure cleanup)
is verified against a live Trino 483 + Iceberg REST stack in
tests/test_integration_runtime_trino.py.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file continuo_python_runtime_trino-0.1.0.tar.gz.
File metadata
- Download URL: continuo_python_runtime_trino-0.1.0.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36545a0fa42fae3a2b2838b0987d68badd72dd0b214b78922d659c0fa44857a5
|
|
| MD5 |
10c0d3e7e8926578276d417d072839f9
|
|
| BLAKE2b-256 |
fb7940807e867f2f52b8d2229fba0c7de57dbd54aa55593f2992d2413df047cb
|
Provenance
The following attestation bundles were made for continuo_python_runtime_trino-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on carolsimone/continuo-python-runtime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
continuo_python_runtime_trino-0.1.0.tar.gz -
Subject digest:
36545a0fa42fae3a2b2838b0987d68badd72dd0b214b78922d659c0fa44857a5 - Sigstore transparency entry: 2334982366
- Sigstore integration time:
-
Permalink:
carolsimone/continuo-python-runtime@8b6f1bdf316dfdd7b93c783c30e3eafa02d950b1 -
Branch / Tag:
refs/tags/python-runtime-trino-v0.1.0 - Owner: https://github.com/carolsimone
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8b6f1bdf316dfdd7b93c783c30e3eafa02d950b1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file continuo_python_runtime_trino-0.1.0-py3-none-any.whl.
File metadata
- Download URL: continuo_python_runtime_trino-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1e37015bae7b0cd712d9b3d5119c8934cde1859b76443320fa23667104927c5
|
|
| MD5 |
1a9da14532eb3b73523a33ce58aad036
|
|
| BLAKE2b-256 |
741828689396edff2ba224eefc5540a99a9cd1c840766ce5a4ee9a7f1edabd1d
|
Provenance
The following attestation bundles were made for continuo_python_runtime_trino-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on carolsimone/continuo-python-runtime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
continuo_python_runtime_trino-0.1.0-py3-none-any.whl -
Subject digest:
e1e37015bae7b0cd712d9b3d5119c8934cde1859b76443320fa23667104927c5 - Sigstore transparency entry: 2334982374
- Sigstore integration time:
-
Permalink:
carolsimone/continuo-python-runtime@8b6f1bdf316dfdd7b93c783c30e3eafa02d950b1 -
Branch / Tag:
refs/tags/python-runtime-trino-v0.1.0 - Owner: https://github.com/carolsimone
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8b6f1bdf316dfdd7b93c783c30e3eafa02d950b1 -
Trigger Event:
push
-
Statement type: