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.222.tar.gz (396.8 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.222-cp313-cp313-win_amd64.whl (846.8 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.222-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.222-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (918.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.222-cp313-cp313-macosx_11_0_arm64.whl (894.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.222-cp313-cp313-macosx_10_12_x86_64.whl (923.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.222-cp312-cp312-win_amd64.whl (847.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.222-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (942.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.222-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (919.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.222-cp312-cp312-macosx_11_0_arm64.whl (895.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.222-cp312-cp312-macosx_10_12_x86_64.whl (924.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.222-cp311-cp311-win_amd64.whl (845.8 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.222-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.222-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (919.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.222-cp311-cp311-macosx_11_0_arm64.whl (895.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.222-cp311-cp311-macosx_10_12_x86_64.whl (923.9 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.222.tar.gz
  • Upload date:
  • Size: 396.8 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.222.tar.gz
Algorithm Hash digest
SHA256 15daf2a92bb1afdabc2824dbb4785c1cc0f4156fade7a7ea54bb7be1849e8957
MD5 e2d938073ae5aeafe62efab59ee18913
BLAKE2b-256 eb5aed10dde17c5dec5de17da2f99053460a08578ab25e5734d32e49b042b652

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.222-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 846.8 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.222-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c4e1f5705b7affb5b69afa763db1c3446e735c69a67a0ea262d8e33f29aa997f
MD5 d79256fcdbfd3b38bdbe35a8acb76894
BLAKE2b-256 c8a92fee4837a34b8610ad99d42b9150bbeaeb55d2811ef9701e9bb9e472252a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f30f755678623d83d9ebfc11515721b59f5b0a5db116ef86e56308def9fec06d
MD5 7f32739c5391d665b9bc8064be84806c
BLAKE2b-256 362131756f791899dacb129b7efec85b4eaec3df16fb4b995d7e32808b8ea446

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 469d1e9a777b377c7108efbf77f16d1bca3175459eb6759ee28b7c704e793044
MD5 086508343a1ae91d5496185c78c4112b
BLAKE2b-256 ed209a86542b7eaa6014229857b8269d1d41c68e0952649be95364d15c3c5b5f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cfff7e4e775d768fccb0b7f75f436f2572b268acdba1bc3955403c6522648637
MD5 10568bb3de52939da9f217366883259b
BLAKE2b-256 2bd2aa2496b6f4d49a0d85fcc194043f3a03869b975e93494a7585a9107c0fd2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9692d96f960ca6bbd63efde46425dd4d019bc48d99ef8084f62a76676323f526
MD5 84ad5586865f84d415540b08d1301d20
BLAKE2b-256 c1b231f93b12a9a16048fef5ab51cc482428909174612d465404f3ef729bd343

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.222-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 847.2 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.222-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fa9e3a574b116949642994674cabd54f5611ac934c8c16fe52efeb6d0e02b56e
MD5 5ddf2c8e65f1a3e8d93f0a9c52d20dc5
BLAKE2b-256 73a61f34e6b71235580137f63ae409b4fe08a5eb0eb7d62ed7aa15ae902119b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1439f5f3160f5a4ebf5adb5e9d056ee9e46cacaa935a3a5d206f33b952960ba
MD5 9e28af30cb7865ee6198f947c590e6ab
BLAKE2b-256 665a83ab19f25f873b49d20836d5ddccdeb9f52576f108ac67fe22244e905b27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f1f307bf08ffd3a94853fd3ffddabd7e2eaff5108694101a1f70b28186a714ae
MD5 d2b171370a5fc48e049bc0eb93205504
BLAKE2b-256 f5f7d221f793c66e4c13006b9b0d360ea01d189e2081f87949c03f4b9ad7c381

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0532ce29bd400907130217ea5463156fed0cd8728c5238e17ea88a7ceec12486
MD5 0ed7a71761d79bb90c831f175ae46a77
BLAKE2b-256 21ad3d82e98bb44cfb87de4a9d6bda0c8e468df6557e9fa93a7b5425f4364586

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6e7fdbfe6ceb5957637b5b51dcfc91cf821696c6cb3a0d326e64d3b5ddcfed64
MD5 995e8163b91753d93c635d752f4f3b56
BLAKE2b-256 95856b5240fe8c1040cb54e7580ff51fae535f60996784b8d7480633e2a6ba68

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.222-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 845.8 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.222-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bffbc7f6852df85e41d9da3bb477b4f7b6d9eb6f4027cf5a202865781b7a4ee5
MD5 740078659dd2ea918ff2ae3fe507ff41
BLAKE2b-256 27ce73a80964e2ce79f047cfe58d672fac9f9386dc90698bf423e97ba055dc98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e24ec4d6df6e3b9c50b7dda9c938dbb5c64679b85c44e93697cb1f7a17a216e9
MD5 9f73503d83fe83c505e223ec3bd9a0c6
BLAKE2b-256 ebb4b88f9d0171741ed23a5b7bf4abaed1cd671bf544c90061f54d7d323e82c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a51f716460b32cd07f5b8ee78ce0ef4936a7aea064be7363f0bae88f7bfd7c89
MD5 a8f4a6062d8b2db8980f719c22a53679
BLAKE2b-256 42889876b0f133aec7441d2117118387368b94acc06e32d00353aef289476b06

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 acbf9b557a5c75fbf94986eb07c247d27b8d11244a3c22cdaed07867f5c07a78
MD5 eccb8a784eda37b8b1daf543ff84a76e
BLAKE2b-256 db19dbf7f2199b2285bec6dff691b043a88f7e7e16cb29723a9f49793207c0d0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.222-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 47a6fa2f8be72b17bc786fa57dd8a9b9b5f5fa02d91cb781652233e1a7b61ca3
MD5 50a06157480e60781d07efe81f0aafbb
BLAKE2b-256 db48c616d61a8557885e4cb51a4bab472455af18b75f7a307bf10e071408590a

See more details on using hashes here.

Provenance

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