Skip to main content

Declarative, typed query language that compiles to SQL.

Project description

Trilogy

SQL with superpowers for analytics

Website Discord PyPI version

Trilogy is a semantic SQL language for analytics.

It lets you write queries without manual joins, reuse and compose logic, and get type-checked, safe SQL for any supported backend.

Why Trilogy

Analytics SQL can get hard to maintain - fast.

Trilogy adds a lightweight semantic layer that makes queries reusable, refactorable, and safer at any scale.

  • No manual joins; no from clause
  • Reusable models, calculations, and functions
  • Safe refactoring across queries
  • Works where analytics lives: BigQuery, DuckDB, Snowflake, Presto
  • Easy to write - for humans and AI
  • Built-in semantic layer without boilerplate or YAML

Trilogy is future proof - with the fast feedback loops agents crave -but is built for people first.

This repo contains pytrilogy, the reference implementation of the language.

Quick Start

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

Install

pip install pytrilogy[cli]

Create a file hello.preql

Trilogy supports reusable functions and constants.

const prime <- unnest([2, 3, 5, 7, 11, 13, 17, 19, 23, 29]);

def cube_plus_one(x) -> (x * x * x + 1);

WHERE 
    prime_cubed_plus_one % 7 = 0
SELECT
    prime,
    @cube_plus_one(prime) as prime_cubed_plus_one
ORDER BY
    prime asc
LIMIT 10;

Run it in DuckDB

trilogy run hello.preql duckdb

What Trilogy Gives You

  • Speed - write less, faster. Concise but powerful syntax
  • Efficiency - easily reuse and compose functions and models, modeled after python
  • Easy refactoring - change and update tables without breaking queries, and easy testing snd static analysis
  • Testability - built-in testing patterns with query fixtures
  • Straightforward - for humans and LLMs alike

Trilogy is especially powerful for data consumption, providing a rich metadata layer that makes creating, interpreting, and visualizing queries easy and expressive.

We recommend starting with the free studio UI to explore Trilogy for most users. The SDK pytrilogy provides a CLI - similiar to DBT - that can be run locally to parse and execute trilogy model [.preql], or can be embedding larger python applications by importing the trilogy package.

Trilogy is Easy to Write

For humans and AI. Enjoy flexible, one-shot query generation without any DB access or security risks.

(full code in the python API section.)

query = text_to_query(
    executor.environment,
    "number of flights by month in 2005",
    Provider.OPENAI,
    "gpt-5-chat-latest",
    api_key,
)

# get a ready to run query
print(query)
# typical output
'''where local.dep_time.year = 2020  
select
    local.dep_time.month,
    count(local.id2) as number_of_flights
order by
    local.dep_time.month asc;'''

Goals

Versus SQL, Trilogy aims to:

Keep:

  • Correctness
  • Accessibility

Improve:

  • Simplicity
  • Refactoring/maintainability
  • Reusability/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

Examples

Hello World

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 Usage

Trilogy can be run directly in python through the core SDK. Trilogy code can be defined and parsed inline or parsed out of files.

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 and high accuracy.

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-chat-latest",
    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>

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, ...

Other Imports

Are likely to be unstable. Open an issue if you need to take dependencies on other modules outside those two paths.

MCP/Server

Trilogy is straightforward to run as a server/MCP server; the former to generate SQL on demand and integrate into other tools, and MCP for full interactive query loops.

This makes it easy to integrate Trilogy into existing tools or workflows.

You can see examples of both use cases in the trilogy-studio codebase here and install and run an MCP server directly with that codebase.

If you're interested in a more fleshed out standalone server or MCP server, please open an issue and we'll prioritize it!

Trilogy Syntax Reference

Not exhaustive - see documentation for more details.

Import

import [path] as [alias];

Concepts

Types: string | int | float | bool | date | datetime | time | numeric(scale, precision) | timestamp | interval | array<[type]> | map<[type], [type]> | struct<name:[type], name:[type]>

Key:

key [name] [type];

Property:

property [key].[name] [type];
property x.y int;

# or multi-key
property <[key],[key]>.[name] [type];
property <x,y>.z int;

Transformation:

auto [name] <- [expression];
auto x <- y + 1;

Datasource

datasource <name>(
    <column_and_concept_with_same_name>,
    # or a mapping from column to concept
    <column>:<concept>,
    <column>:<concept>,
)
grain(<concept>, <concept>)
address <table>;

datasource orders(
    order_id,
    order_date,
    total_rev: point_of_sale_rev,
    customomer_id: customer.id
)
grain orders
address orders;

Queries

Basic SELECT:

WHERE
    <concept> = <value>
SELECT
    <concept>,
    <concept>+1 -> <alias>,
    ...
HAVING
    <alias> = <value2>
ORDER BY
    <concept> asc|desc
;

CTEs/Rowsets:

with <alias> as
WHERE
    <concept> = <value>
select
    <concept>,
    <concept>+1 -> <alias>,
    ...

select <alias>.<concept>;

Data Operations

Persist to table:

persist <alias> as <table_name> from
<select>;

Export to file:

COPY INTO <TARGET_TYPE> '<target_path>' FROM SELECT
    <concept>, ...
ORDER BY
    <concept>, ...
;

Show generated SQL:

show <select>;

Validate Model

validate all
validate concepts abc,def...
validate datasources abc,def...

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.219.tar.gz (390.2 kB 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.219-cp313-cp313-win_amd64.whl (839.5 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.219-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (934.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.219-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (911.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.219-cp313-cp313-macosx_11_0_arm64.whl (887.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.219-cp313-cp313-macosx_10_12_x86_64.whl (916.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.219-cp312-cp312-win_amd64.whl (839.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.219-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (935.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.219-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (911.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.219-cp312-cp312-macosx_11_0_arm64.whl (887.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.219-cp312-cp312-macosx_10_12_x86_64.whl (917.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.219-cp311-cp311-win_amd64.whl (838.5 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.219-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (934.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.219-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (912.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.219-cp311-cp311-macosx_11_0_arm64.whl (887.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.219-cp311-cp311-macosx_10_12_x86_64.whl (916.7 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pytrilogy-0.3.219.tar.gz
Algorithm Hash digest
SHA256 2a41c9db4d8aed8746b160dcfa7e78f9e582fa0dcd8d29ead8d4ab8f3fc9d8e9
MD5 e0a43c3bda33dc9f40c914a7d274102a
BLAKE2b-256 fa51d462604ee1dd17045560e66d861aa70832588d5f1703cf747b7437ffc1dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219.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.219-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pytrilogy-0.3.219-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 839.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytrilogy-0.3.219-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0112c8d184db520c5a414e97f304978d03aaaa75058eb613cee71463a7d2755c
MD5 018c4416a590bbc79dd20db52eda251a
BLAKE2b-256 423fa6b0d2edc30e609623304dafcf233a8b68f71fbcfbe0f90aef85b822896d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f65d4420fd72d421d5278a5cd83e9f07fdd8bd396f7b102338d725aaecec8fb2
MD5 8f8d317d55d79fc75acab614bb54ea51
BLAKE2b-256 d3a6e61870ac06e65ed4e8925efa17622a656dc95ba8ee7e7a4ef57bce7a358c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4d2b8ce9fc38cddaf9282f3c5ea77d71fa8665d94c8e9ad325d3b6365df024c5
MD5 998fd95ba6570da84619e8aa2cad3cfb
BLAKE2b-256 1706d5d2a5409a629d7021ed529186d2c206d62da4c61a5e5dafe7ab84dd65e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ad35db0dce50e78f9f61a09458d38f2d941f5d8f1d812ddccac536c2101a6b6
MD5 db2c5ff5d661475065d460a5586dada8
BLAKE2b-256 cce47764453a8891f829e8f58e034c0caecf31ccf2752fc1ec171e5a6014e0e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3d5f08831644ae58e02fd80abc633ced01a5f5e662b8cc3f396340e781a04548
MD5 b812dd545001c71f1e8946379d8bab2a
BLAKE2b-256 7cc3d161e821e87000dc473148dffb24326bcb2a8654f2ba3910e8c225775c5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pytrilogy-0.3.219-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 839.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytrilogy-0.3.219-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4165c23bc508dbb238d965acb73a2e3d2a0cfcf6e18c981416f5e4e3ffdaa3c3
MD5 5638ded2ba1a48c3d79812c8acb8408c
BLAKE2b-256 542b6fb11fa2276f7435801c4e9150946578a8aa0f2348098b0a92de5dcd592e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1e12e48e7fab0d2ec271f9ebbfa0ac2822823855bb78ff4c81e99dfafc874c5
MD5 a6d199cc5ef142e37ffc8d704be57d9e
BLAKE2b-256 ae5ecb19deade304eb30dbc0ddfc094d8293333f4a76c08e130badbe6578500c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 21e6825f1b6fe8a7a05e1fe3bd981d55e489f52ffe36e83d22e2c79de9bcb42f
MD5 1b0cc08a1a2c19278303505bb4dd07c3
BLAKE2b-256 7c3b76eb9524643c791a1f246ac264507f00db51f6f9670238c95dcc99e752a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c837f689ca3180891d92f671223ac492281655ac8fc4642690b8cb76a1e9b9e0
MD5 8b6b85964517f88d303e3e3a76c0bf5a
BLAKE2b-256 d692a8ee60ac903778d8a5f054d40d2995bc0c77fac88b5e8b6a1e0a23075ceb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 336a170f9bf09227dd6b10402938b5e1bb46ae7b9ba18fe6e8114f440cbc4470
MD5 ff7bfe52ec66b0b74243d171d248e5e3
BLAKE2b-256 580f06bedcca7987ec78f2efcfa2d086b947eaea9ff8df9df3fb1ba2e3dc736f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pytrilogy-0.3.219-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 838.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytrilogy-0.3.219-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 88f5d6a069a114162b59a1f398cd0a4513bc68d4cd03c48571e9a0be19c8f4fa
MD5 2975a5a97997a29da6859c6e637968a4
BLAKE2b-256 6ab100f50608f5151ef9cdae9216cbff3bfebb4c50a0a4487330c8076244d385

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2682b3ea62058b764ec34eb4d8d600b5e4a1be9e3b7443fc29a1a8ae8308f430
MD5 5880a51a2c3cd5244b4b8dad8cdbb37b
BLAKE2b-256 2a157deb7a4daf2f7416e157f55c51fff9304f5fbc9f2d3c7c06c5dc06ce26b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5f7568f83baef53e5393b94fa9ab35a43c983d2f4911667a12f4c0124174cc4b
MD5 f482ea92d6fef709a59efc17c7b7c039
BLAKE2b-256 7743acb7bef456c0e26bfc16401a3771fc3e64a7d4a0fb240a3927c63713883f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc4550cdf3d0233f276fc4e5b43bb1d889f9f3926f36ca5ee925a99c38463519
MD5 875857f9e81c2b07b6d17057e8bdfd32
BLAKE2b-256 f13b4c42616dcf58bf5d5994af35f79857b3cf83b0a3fa25b732caa77b291c9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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.219-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pytrilogy-0.3.219-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ae6f3eb0370594cae4aea00c2bffdb8d5e5919aea3669d467f2aad056ba6ec98
MD5 b9087a442b944e3f6a4e425a04fd222d
BLAKE2b-256 bfe21b265a513ca8b2a1972a00d2d115a9c0723e443acf7e0332ae685a6ad6eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytrilogy-0.3.219-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