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.206.tar.gz (367.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.206-cp313-cp313-win_amd64.whl (734.5 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.206-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (829.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.206-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (812.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.206-cp313-cp313-macosx_11_0_arm64.whl (793.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.206-cp313-cp313-macosx_10_12_x86_64.whl (813.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.206-cp312-cp312-win_amd64.whl (734.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.206-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (829.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.206-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (813.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.206-cp312-cp312-macosx_11_0_arm64.whl (793.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.206-cp312-cp312-macosx_10_12_x86_64.whl (813.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.206-cp311-cp311-win_amd64.whl (734.0 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.206-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (830.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.206-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (813.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.206-cp311-cp311-macosx_11_0_arm64.whl (793.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.206-cp311-cp311-macosx_10_12_x86_64.whl (813.9 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.206.tar.gz
  • Upload date:
  • Size: 367.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.206.tar.gz
Algorithm Hash digest
SHA256 ca9a48e7775793b740d5189b85ded9312d82dbf139d0e7e4e62d71218edf4d7e
MD5 97c0f2db474aa947ccc7e95efe24117b
BLAKE2b-256 1f0740339ecfd1caf3dfb592c1d681aa88af4906c3506318021b10cf9a41615d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.206-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 734.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.206-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5f255a77a1efe16c526224c56f924e94e6874be3b8231b50d089d29636c8e2c4
MD5 351e848d433231435ac0f7ceef5b5738
BLAKE2b-256 7eff6cc4269494632de8687b5ab030a2b81a4fc423e3541a7683d5ed650aa4ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e6f983b69abb25bf8eeea5d6e72d90c594f6c9e5c837031eb38fe27e1ece8a06
MD5 d5a7c30ef9a04e5dcbb081c208ccdc4e
BLAKE2b-256 bc788f458658a3acea2ec3dec5fd75acd4ed03d210ecb16257c0ee3f6344b9f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e1b3841d72e5a1db2dfad5bb9a04da89ad9d1b3759d2dcfa5b55f1d9123f5a4c
MD5 b58ba76dcf1c6058e4f0de55496ac86a
BLAKE2b-256 ede8aa0134ad56c7df3d0ed8f99a2764b454dbc2ae50c9a5de1d402457ad6c64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f0f4b50e8f7c5c84e108ec5792f2534e169c463e2aec65b8368808a0da5843aa
MD5 a6af7b4216f9ce5e7e88561eb309f951
BLAKE2b-256 da7debd9038f21a2351ca8bc227a58e2821cb6163ca92a5cd51bbf982bd6f91b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a37478beb746aaf9aa5076c6c4df7d23acb3be612b451b4b23fe75425032b2c7
MD5 790542535f15c0555fd8b1cee7936c11
BLAKE2b-256 207677a624a5c40aa392a0ed28854885fc0b6fd42c247b0c17173cc23ce0b8d3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.206-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 734.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.206-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 30458d25817c54f53348f6e811223325ed69957c97509a8b1a9374c41ed492fc
MD5 5b89369a3f0e27bcd891da30fda54c3d
BLAKE2b-256 fbebb2803b2d5056931b6854916d14713584d33eff6c41de57ef6b1311a9bacc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f671cea4ed5fba3aef2880b40c1a4d368c0a607c21c54e2455931a40040d677
MD5 bb9a985c9a20fee31bba158a1bdf241a
BLAKE2b-256 193f39df0b2e01cf08b32174f05e90bd1c8cbe37415eb902ca2021e8459efbed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b5ccd2cad7ab218601846604e4851dc3a7b623d3a573b060d7ad77e0acf9a2ff
MD5 cffeeaea0818a2830a96bc6879b40fa6
BLAKE2b-256 2378ea1b961db4f21e25463203cc064730e6ca7e614091f627ed66a3d1e103f3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a197c9c1d9d95cc3253d7196436abd079abda49d1f6805ba173da62a4a30016
MD5 207a7a813a4dafbb7e6c40235d7c4a8a
BLAKE2b-256 aab489162f28d8029dea0aff26b101c1fef4e5e74660a16dcfc2cdbb8ed93d9a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7436cf1f6b750404d0fa6dcff19b724bbe2bf99fe589c829bfe898c8b4b41071
MD5 000cca7a4cd969ad7b795e0d1da1b8f0
BLAKE2b-256 645ffffe18222e966e9d0698d608613bcee711c2ea84074d72e8ee370bf4a58a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.206-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 734.0 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.206-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2de7ebfbee9c2fc0ed7fe796691758f2a3ee2a93618fcf9c4b570180fa4e2f7a
MD5 a0c7af388d1937d9cfa4ba03e50ca829
BLAKE2b-256 a6bc0fe9501ca7ca8a8c396066d1a0c84c0e6e1c5be52816027d9a7a61931282

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d0710fef0b6e9fd40d71acae01d519b88cdb642ab4e5acaf2271166b77798a3
MD5 e27aef78b63cf02fb4770659652dec9c
BLAKE2b-256 bd2dac1c640cf77d9ea432044c2c0dda2f2e386d979eb74e468d2857b1192046

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b2e34a368a0b525cb8d66f0a1d6c2381e30be6f3e3b77082659131bccc78499b
MD5 dcba65e1be48f1d42abfce05daf0565e
BLAKE2b-256 bf1470e89531af8dc4d698d587ed5a8c9dd24a06865dfa722ddd2418d3b3bab8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f085093ee58cdd5daed0aa13b923a720632247da102bdd1e140041080a08ebac
MD5 01b59f8180fec0ea85b9f037a4c185c8
BLAKE2b-256 f89b995ddb1337f3076ebc318866a1a72687d6270b0fe7c8ab04133c67ee55f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.206-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0c25dd9a987e5dac8884a78da4c3a1ce41ad3df9853b3528b3a999f416099530
MD5 3a32c02a50b496edb0a50ab17d369da7
BLAKE2b-256 30a8991a0c07ca97542143f9bb2726d4dd03093d2756fca01172c309cf04e488

See more details on using hashes here.

Provenance

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