Skip to main content

Declarative, typed query language that compiles to SQL.

Project description

Website Discord PyPI version

Trilogy is a batteries-included data-productivity toolkit that accelerates SQL-based analytics with a typed, expressive language. It's great for humans - and even better for agents. Start with a single file and scale fast with a rich ecosystem, including UI and CLI tooling, public models to get started, rich python integration, and modern visuals and reporting.

Why Trilogy

SQL is the best way to work with data with but shows strain at scale and as it ages. Can we have the pros without the cons? We believe you can.

Trilogy adds a lightweight semantic layer to keep SQL fast through the full lifecycle of analytics - from exploration to production. It provides a full stack for interactive, visualization, and orchestration that can be adopted incrementally and without lock-in; start with checking types and asking agents questions; end with a more efficient and productive warehouse.

Headline features:

  • No manual joins; no from clause
  • Reusable models, types, and functions
  • Safe refactoring across queries
  • Supports all standard engines: BigQuery, DuckDB, Snowflake, Presto
  • Easy to write - for humans and AI
  • Built-in semantic layer without boilerplate or YAML

This repo contains pytrilogy, the reference implementation of the core language and CLI.

Install To try it out, include both the CLI and serve dependencies.

pip install pytrilogy[cli,serve]

or

uv tool install "pytrilogy[cli,serve]"

Docs and Website

[!TIP] Try it now: Open-source studio | Interactive demo | Documentation

Hello World

Trilogy includes a public model registry with fun datasets you can explore. Run the below to import, query, and explore one of these models directly.

# 1. Pull a public model (fetches all source .preql + setup.sql + trilogy.toml).
trilogy public fetch faa ./faa-demo
cd faa-demo

# Run a quick adhoc query (--import prepends the import for you — discover
# what's available with `trilogy explore flight.preql`)
trilogy run --import flight "select carrier.code, count(id) as flight_count order by flight_count desc;"

# Plot it
trilogy run --import flight "chart layer barh ( y_axis <- carrier.name, x_axis <- count(id) as flight_count ) order by flight_count desc limit 10;"

# 3. Add a derived datasource by grabbing the hosted snippet
trilogy file write reporting.preql --from-url https://raw.githubusercontent.com/trilogy-data/trilogy-public-models/refs/heads/main/examples/duckdb/faa/example.preql

# 4. Refresh — builds the managed asset declared in reporting.preql and tracks watermarks.
trilogy refresh reporting.preql

# 5. Launch the Studio UI against the live model (opens your browser) to explore + query
trilogy serve .

The snippet fetched in step 3 looks like this — copy/paste it into your editor if you'd rather author it by hand:

import flight as flight;

# derive reusable concepts
auto flight_date <- flight.dep_time::date;

# this can be properties or metrics
auto flight_count <- count(flight.id);

# datasources can be read from or written to
# use this to write to 
datasource daily_airplane_usage (
    flight_date,
    flight.aircraft.model.name,
    flight_count
)
grain(flight_date, flight.aircraft.model.name)
address daily_airplane_usage
;

Browse other available models with trilogy public list (filter with --engine duckdb or --tag benchmark). Every model in trilogy-public-models is pullable.

Principles

Versus SQL, Trilogy aims to:

Keep:

  • Correctness
  • Accessibility

Improve:

  • Simplicity
  • Refactoring and maintainability
  • Reusability and composability
  • Expressivness

Maintain:

  • Acceptable performance

Backend Support

Backend Status Notes
BigQuery Core Full support
DuckDB Core Full support
Snowflake Core Full support
Sqlite Core Full support
SQL Server Experimental Limited testing
Presto Experimental Limited testing

Syntax Overview

Trilogy preql models are compositions of types, keys, and properties

Save the following code in a file named hello.preql

# semantic model is abstract from data

type word string; # types can be used to provide expressive metadata tags that propagate through dataflow

key sentence_id int;
property sentence_id.word_one string::word; # comments after a definition 
property sentence_id.word_two string::word; # are syntactic sugar for adding
property sentence_id.word_three string::word; # a description to it

# comments in other places are just comments

# define our datasource to bind the model to data
# for most work, you can import something already defined
# testing using query fixtures is a common pattern
datasource word_one(
    sentence: sentence_id,
    word:word_one
)
grain(sentence_id)
query '''
select 1 as sentence, 'Hello' as word
union all
select 2, 'Bonjour'
''';

datasource word_two(
    sentence: sentence_id,
    word:word_two
)
grain(sentence_id)
query '''
select 1 as sentence, 'World' as word
union all
select 2 as sentence, 'World'
''';

datasource word_three(
    sentence: sentence_id,
    word:word_three
)
grain(sentence_id)
query '''
select 1 as sentence, '!' as word
union all
select 2 as sentence, '!'
''';

def concat_with_space(x,y) -> x || ' ' || y;

# an actual select statement
# joins are automatically resolved between the 3 sources
with sentences as
select sentence_id, @concat_with_space(word_one, word_two) || word_three as text;

WHERE 
    sentences.sentence_id in (1,2)
SELECT
    sentences.text
;

Run it:

trilogy run hello.preql duckdb

UI Preview

Python SDK Intro

Use the python SDK to embed Trilogy in larger python workflows.

A BigQuery example, similar to the BigQuery quickstart:

from trilogy import Dialects, Environment

environment = Environment()

environment.parse('''
key name string;
key gender string;
key state string;
key year int;
key yearly_name_count int; int;

datasource usa_names(
    name:name,
    number:yearly_name_count,
    year:year,
    gender:gender,
    state:state
)
address `bigquery-public-data.usa_names.usa_1910_2013`;
''')

executor = Dialects.BIGQUERY.default_executor(environment=environment)

results = executor.execute_text('''
WHERE
    name = 'Elvis'
SELECT
    name,
    sum(yearly_name_count) -> name_count 
ORDER BY
    name_count desc
LIMIT 10;
''')

# multiple queries can result from one text batch
for row in results:
    # get results for first query
    answers = row.fetchall()
    for x in answers:
        print(x)

LLM Usage

Connect to your favorite provider and generate queries with confidence.

from trilogy import Environment, Dialects
from trilogy.ai import Provider, text_to_query
import os

executor = Dialects.DUCK_DB.default_executor(
    environment=Environment(working_path=Path(__file__).parent)
)

api_key = os.environ.get(OPENAI_API_KEY)
if not api_key:
    raise ValueError("OPENAI_API_KEY required for gpt generation")
# load a model
executor.parse_file("flight.preql")
# create tables in the DB if needed
executor.execute_file("setup.sql")
# generate a query
query = text_to_query(
    executor.environment,
    "number of flights by month in 2005",
    Provider.OPENAI,
    "gpt-5.5",
    api_key,
)

# print the generated trilogy query
print(query)
# run it
results = executor.execute_text(query)[-1].fetchall()
assert len(results) == 12

for row in results:
    # all monthly flights are between 5000 and 7000
    assert row[1] > 5000 and row[1] < 7000, row

CLI Usage

Trilogy can be run through a CLI tool, also named 'trilogy'.

Basic syntax:

trilogy run <cmd or path to trilogy file> <dialect>

With backend options:

trilogy run "key x int; datasource test_source(i:x) grain(x) address test; select x;" duckdb --path <path/to/database>

Format code:

trilogy fmt <path to trilogy file>

Browse and pull public models:

trilogy public list [--engine duckdb] [--tag benchmark]
trilogy public fetch <model-name> [<dir>] [--no-examples]

Fetches model source files, setup scripts, and a ready-to-use trilogy.toml from trilogy-public-models into a local directory so you can immediately refresh and serve it.

Managing workspace files from the CLI

trilogy file has shell-agnostic CRUD operations on the filesystem.

trilogy file list .                      # list entries (-r for recursive, -l for size)
trilogy file read reporting.preql        # dump contents to stdout
trilogy file write path --content "..."  # create/overwrite from a string
trilogy file write path --from-file src  # copy from a local file
trilogy file write path --from-url URL   # fetch from http(s):// or file:// URL
trilogy file delete path --recursive     # remove a file or directory
trilogy file move old.preql new.preql    # rename within a backend
trilogy file exists path                 # exit 0 if present, 1 otherwise

Backend Configuration

BigQuery:

  • Uses applicationdefault authentication (TODO: support arbitrary credential paths)
  • In Python, you can pass a custom client

DuckDB:

  • --path - Optional database file path

Postgres:

  • --host - Database host
  • --port - Database port
  • --username - Username
  • --password - Password
  • --database - Database name

Snowflake:

  • --account - Snowflake account
  • --username - Username
  • --password - Password

Config Files

The CLI can pick up default configuration from a config file in the toml format. Detection will be recursive form parent directories of the current working directory, including the current working directory.

This can be used to set

  • default engine and arguments
  • parallelism for execute for the CLI
  • any startup commands to run whenever creating an executor.
# Trilogy Configuration File
# Learn more at: https://github.com/trilogy-data/pytrilogy

[engine]
# Default dialect for execution
dialect = "duck_db"

# Parallelism level for directory execution
# parallelism = 2

# Startup scripts to run before execution
[setup]
# startup_trilogy = []
sql = ['setup/setup_dev.sql']

More Resources

Python API Integration

Root Imports

Are stable and should be sufficient for executing code from Trilogy as text.

from pytrilogy import Executor, Dialect

Authoring Imports

Are also stable, and should be used for cases which programatically generate Trilogy statements without text inputs or need to process/transform parsed code in more complicated ways.

from pytrilogy.authoring import Concept, Function, ...

Contributing

Clone repository and install requirements.txt and requirements-test.txt.

Please open an issue first to discuss what you would like to change, and then create a PR against that issue.

Similar Projects

Trilogy combines two aspects: a semantic layer and a query language. Examples of both are linked below:

Semantic layers - tools for defining a metadata layer above SQL/warehouse to enable higher level abstractions:

Better SQL has been a popular space. We believe Trilogy takes a different approach than the following, but all are worth checking out. Please open PRs/comment for anything missed!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytrilogy-0.3.308.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pytrilogy-0.3.308-cp314-cp314-pyemscripten_2026_0_wasm32.whl (1.7 MB view details)

Uploaded CPython 3.14PyEmscripten 2026.0 wasm32

pytrilogy-0.3.308-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.308-cp313-cp313-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.308-cp313-cp313-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.308-cp312-cp312-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.308-cp312-cp312-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.308-cp312-cp312-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.308-cp311-cp311-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.308-cp311-cp311-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.308-cp311-cp311-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

Details for the file pytrilogy-0.3.308.tar.gz.

File metadata

  • Download URL: pytrilogy-0.3.308.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytrilogy-0.3.308.tar.gz
Algorithm Hash digest
SHA256 afac65db54db67412c0667ef650c1600a5e8c7dda77918531f1d77571fd14d2b
MD5 dad58d77dd0ef8ffdfa5986533a41b79
BLAKE2b-256 706e3a25e456010277017e82c7f852679afd4cb1c53410b27f403bd817df3d0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308.tar.gz:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp314-cp314-pyemscripten_2026_0_wasm32.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Algorithm Hash digest
SHA256 7a028604d22c4603c036a3de81c0558f6499d7c0e6b043d01cff17387d076501
MD5 6c7970d1b60bff977c0506cf403ab71d
BLAKE2b-256 62b8a5c0fdafa434691bd80071bc62754abf8c5cb6d1b55b1dd124b56839d605

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp314-cp314-pyemscripten_2026_0_wasm32.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 27fa9d8d355d9532359ba1a49c2867c75b70d8b9eee64f0450a4cb904eb60e2b
MD5 cd4644dc6b89bc9cfea57f03950f1b5c
BLAKE2b-256 7690aecf8d4409f22c11f955b45f3b6165e6b54fcd24e0fe12188dce78d07395

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp313-cp313-win_amd64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea7ad56fd95891142f9c37b8d6993aaa00c8a4b22ed5a3e05ab45211235bf869
MD5 097ae706862a755f214b828a4761a82d
BLAKE2b-256 40deea77fb3242162622beeb2fe9f9a10f5aee484a9141e50c9fcdeeaf7f6312

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1d610d30ad3536a2705071a32fa2fbaa6dc112071c210bc9498adf451ccc24d1
MD5 5da9bb13891104d42b41d69131193d97
BLAKE2b-256 296ca9dcfe87faca54990bdbccc07fcf20d89b7d7fc8e778d09db98e1ba534e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22bffb7b6bdb24b0e9b434a527d0f19413b3a73418791943dc20a948c23a6e3c
MD5 707484a15b7b77e5ac91e89830753dfa
BLAKE2b-256 80d14912ca78687622545f86d5cc8f93b711b6d96a968d7e92eca07a57299ec1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 79fc5a73c3520fa44519f0fd53c32357e1cca68bfe6ef609a1d8e8f340e94d1f
MD5 f5c82e9815550ddb27b2ca55da2ed83b
BLAKE2b-256 caa08866960466a34235f828a1b40d1680d8228559e7a1da0bd26829c113f9ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 28515ec2b500a5473ccf845c937772c87dc2dda35b11042210bcb243b9430350
MD5 34c588d1d9943a5d8746d3bbf486b150
BLAKE2b-256 88dc874d05ec488a25ff1f275bd7deb099194b405a6058380f2ccfa00042b1c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp312-cp312-win_amd64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a1e7b8a086a7ad51647822ce210e6ffb46fcc422fcc1c0183c1cf4265d0562c4
MD5 5601ef837c71a93aafd0fe40599e9c9c
BLAKE2b-256 7eda57e45844326ad35fabfdd9230468f9030f5301c3bc0a09425642e42b5008

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8eca0145285388c05507165927f855a21bc62e789c6d1c8536628f80790bbbe6
MD5 42e2c0410324275d64b7fb3a1b66d9c5
BLAKE2b-256 9264c730f7f4693bcffb06a80754c4caaf4de5e462a72e3e11b658db9af27e91

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00b1e3f35ee24d820428a3730e6fc11a4f0aad7ce6021fbeb0195dfe9c911564
MD5 e5a54580161feade4a3f635ef31f334b
BLAKE2b-256 8ace9c70c48efb02962dc11d3109452a39d0d10523836410b661f31bbbcc0ffb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 470778c22f515bb922b183c8a2ebdaf001d096a748e9774175ab9e8cae184a02
MD5 6de2bdbc04135af8a8f03f5253f46bd1
BLAKE2b-256 0a2fb7f1cfe31360d76fcfbb42d56f8c72ddc2667540d39d7d5dbfc3f10ed1e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 923594dce2c2de58260517a69b1ec7a58807fda25fed0611017b3027e85f2bb9
MD5 7789ac1980702434eb56ebb35f8d31b4
BLAKE2b-256 02fc6c0973a052164e4e036de80edf4e495b26c995d71a5e7627660d0d071d24

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp311-cp311-win_amd64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8b14551b1cd823443bb9379e4c4fe378ce099eb5633225f951e8d30b350357b
MD5 f14c28bc3373a577a5f829016bb2f198
BLAKE2b-256 ae324430d6dad53337aba2a3d85711106011e5f693cbeb5b32733fdca0ee90a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7e907fcf1d053db6245efd58b3e62d4f5e6d4981a8bf0c3e731eaf9292efcadc
MD5 fbddf0652f0b8ea89592c2ef579715bc
BLAKE2b-256 ee6aa3960a5d4cfa3620a3a3af80cfbaf9b185c8df166261dc7d08cfcc0f843a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 479ee8ace0c7f23a7c084d7681f6077300cf11987a8fad90003d3f65e2a399c6
MD5 8f629bfed274c620bf97c9846fe7664b
BLAKE2b-256 e6c3674a06581815f957cbebb3d1d0ece373e0185d944d0abf3993880a1201f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytrilogy-0.3.308-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.308-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4c3c79ac9a56adc1e3980267d0664d74a5c76388a008976bad9299f95a5f2186
MD5 0d8b9da4d2240110e16a69118a3f55a2
BLAKE2b-256 5b49c3b4ae300261d026edf877cc41d55b4328f124c7aca6302295351e3454c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.308-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: pythonpublish.yml on trilogy-data/pytrilogy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page