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.205.tar.gz (363.4 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.205-cp313-cp313-win_amd64.whl (730.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.205-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (825.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.205-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (808.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.205-cp313-cp313-macosx_11_0_arm64.whl (788.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.205-cp313-cp313-macosx_10_12_x86_64.whl (808.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.205-cp312-cp312-win_amd64.whl (730.5 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.205-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (825.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.205-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (809.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.205-cp312-cp312-macosx_11_0_arm64.whl (789.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.205-cp312-cp312-macosx_10_12_x86_64.whl (809.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.205-cp311-cp311-win_amd64.whl (729.5 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.205-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (825.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.205-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (809.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.205-cp311-cp311-macosx_11_0_arm64.whl (788.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.205-cp311-cp311-macosx_10_12_x86_64.whl (809.2 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.205.tar.gz
  • Upload date:
  • Size: 363.4 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.205.tar.gz
Algorithm Hash digest
SHA256 2b34bbd690ab9cdc76a7fb2ada461b5cb51f159586bdf51e7b8cd685d7ae065d
MD5 8402c8f930edd7c4595ff52ef5069836
BLAKE2b-256 5ad62629fa6cd5066e1602a49463ffe06e9b6deccb4edaa4eba51c3ec088fcbe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.205-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 730.0 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.205-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 52faf906f2e4846082410dde4e61dacde01e0fa792c3f34185a2cf5b726d80d6
MD5 ebd0bd39703e8c0d164bc95a29286b4a
BLAKE2b-256 85f20378bd0fb8dd0489b2d2efe497dc14eff76d6aacc6155dcea316b56cccd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a8891591245cda0ba6cb9dc69c945af32825ce8fd33c7a81c503ea450edcb31
MD5 cad457eec65c4fedfdbf10d9a0f4b702
BLAKE2b-256 1d59bb94d4e33c56d2fd4f3eb92b386fedbfdc23032dd32ed3fce313cd64ffbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fa257cd968174f39c79763e46f396496b2eede6268cce68b41d8e4105b04950c
MD5 d6c69d35c411864fa6410ab810347e66
BLAKE2b-256 7dc63ee93718db81b21efc248694df786b03691d1d26eca3f22bf46bad0b6ef1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ce49dbfa97a91378df5c702c546b49a1a931ee10487d0428376ce4b0cb85570
MD5 2bd57c44dae9edf49e8ffb74d7377f05
BLAKE2b-256 ecba1d1bdf013d1ada75f3020d840953d246bb1fea36654c81b11ad38addd200

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e953f4df739c8e990d885cec2eba10dea61b3c9b511363b2b069123f0676ab51
MD5 80fe08f05445d45e4de07bfceca8b9be
BLAKE2b-256 d72052f4ca010e28f25cd451f82eeeb33235d24cf16ed2a205ff72ebce4816c4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.205-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 730.5 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.205-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c586a86c1f9e3f821404f7fa897ce888626de76e7cb49beff57b7bc12e3a5637
MD5 381c41e2a019789ef75e7a070105e532
BLAKE2b-256 94dd31de6404cc6c2dac6851d7b324ed47ad4c07f6ed8650c2b42c8f24178438

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ff478672f5c85b726b8e912c9cc2ffd9a674c47e127dd2cb8900d84f97dd1cd
MD5 5e15430efec39e692b877fbcbfd02351
BLAKE2b-256 752374f7002a6f976b613cbc096184c1aca092ceb93c3a2e34e177bf94de349c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 512e74c8d47c08a575316e42ad7aef5f26cabbc658971a029ea81abea7e4a4b9
MD5 a3afb5466ff3c5200206bc30101cfdf4
BLAKE2b-256 bb3a63951f9398247d7ba966ba7311a9eb78c9be7be7eb8b38f6bb956b21f9be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c17d9529831cfaba55fa3b42e39719e915251e0633015b907a443f71338aca7
MD5 191e780a27212feeb39647ef91a43a0d
BLAKE2b-256 75ccd6b7c1dc2d2b2184a5de76eb1c0c02f7bc3f44fbae3b0aba4aa2f5fae425

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1b40d5b0b6d9d62be2622eeb969d1ef71888532e58c7a4a4f7d2c2e5bea2f95e
MD5 169d65b0267e2525b023dad23e1e0e23
BLAKE2b-256 5d45cc9666203714a1b5edb7518462232ea578e5d39629c18f3aaedb2ad448f8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.205-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 729.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.205-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 04da2f719b90e23491e4c7f1972a250b0871b3c44e8bb2350bbdd18981ac5ac3
MD5 9799a8a713131d0800b4e60520300381
BLAKE2b-256 9d977f5e6109b2e8b80faa1518fe19b90c153fd13917674cfe89b2a3f5fa15ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66112922d68b1734b45f5583ffd0671a362dd8dbcbfc84f8a703214530754eaf
MD5 672557b10b1135dcd62f677d96b11acc
BLAKE2b-256 195f89b6226d980ae52dcc6c7f2354c0799eb20744ba709423ac854293604206

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd761f6213c4b55d40d9e5dd07b953d40317612862c11580fa82d5b22f402c98
MD5 7d54333bc8565051770ba20f55397634
BLAKE2b-256 a2c5585639c96f83c201b6a9c3454f35595cf46d12862303e909bf338ff6c151

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c341b6826e2bfafbe60e5a031869b189a557acf515f94fb68100cd18484f7dd7
MD5 2ed7512ee7bfb91c1ce0d58f3660d60e
BLAKE2b-256 e4d981d819dd2538515d00b812a5459720c839e0d7a5c989947ed4b91f5f10ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.205-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c57ffa1fc6a83aa0ade87f469e069ce1ee59c480d70fbf5021fc23aeeb45c66e
MD5 6cef2f6d4a672469757636cac6a4dde3
BLAKE2b-256 ab2fe3cc55b542db74543481430bed00ee7fc1457d51dec1124bc1fd8ab07705

See more details on using hashes here.

Provenance

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