Skip to main content

Declarative, typed query language that compiles to SQL.

Project description

Trilogy

SQL with superpowers for analytics

Website Discord PyPI version

The Trilogy language is an experiment in better SQL for analytics - a streamlined SQL that replaces tables/joins with a lightweight semantic binding layer and provides easy reuse and composability. It compiles to SQL - making it easy to debug or integrate into existing workflows - and can be run against any supported SQL backend.

pytrilogy is the reference implementation, written in Python.

What Trilogy Gives You

  • Speed - write faster, with concise, powerful syntax
  • Efficiency - write less SQL, and reuse what you do
  • Fearless refactoring - change models without breaking queries
  • Testability - built-in testing patterns with query fixtures
  • Easy to use - 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 studio to explore Trilogy. For integration, pytrilogy can be run locally to parse and execute trilogy model [.preql] files using the trilogy CLI tool, or can be run in python by importing the trilogy package.

Quick Start

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

Install

pip install pytrilogy

Save in hello.preql

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

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
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.171.tar.gz (320.6 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.171-cp313-cp313-win_amd64.whl (670.3 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.171-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (764.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.171-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (747.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.171-cp313-cp313-macosx_11_0_arm64.whl (727.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.171-cp313-cp313-macosx_10_12_x86_64.whl (747.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.171-cp312-cp312-win_amd64.whl (670.7 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.171-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (764.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.171-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (747.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.171-cp312-cp312-macosx_11_0_arm64.whl (728.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.171-cp312-cp312-macosx_10_12_x86_64.whl (747.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.171-cp311-cp311-win_amd64.whl (670.1 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.171-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (764.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.171-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (747.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.171-cp311-cp311-macosx_11_0_arm64.whl (728.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.171-cp311-cp311-macosx_10_12_x86_64.whl (747.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.171.tar.gz
  • Upload date:
  • Size: 320.6 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.171.tar.gz
Algorithm Hash digest
SHA256 2f2f4c4a52443078c801c3831bc1fa2d6a7c496e6a0ee3be03ee7f732a743a4b
MD5 536855fdce429cceb6642aa9f2fc5444
BLAKE2b-256 3734fe48ef0014abb88503a301bb7a545a2c380af7c79cf03c49d3f4d595cbe9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.171-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 670.3 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.171-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1bb6fa3a07a54f7accf723aeec7e9b7f83b9cba43505418deb7176a02c2c1cdb
MD5 a3ea4a2c902a9ff85a78f8feb16dfdfa
BLAKE2b-256 460fe974c4207bb3046c907b4a829ec4497df167bc4e203295872fd20617f345

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43db1ff1ee40beee20527eeea9916306b9a42740df0db4227ae5703259b17a47
MD5 dc0b05a356a605b52d74b1718e732b62
BLAKE2b-256 38f75393d0aa3d4764ba2e80d326c485e43377acb815ad6c8d3e6b7cf8d76b42

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7b0e785bbaf2e0077058de15478c7ec28ecafbf1e3a6b140a7dd11caa609fb14
MD5 a6cef2474d2e8cbb33c9b289f5ecc0da
BLAKE2b-256 12814b25a0fd47953ad39cd7d0a712a40b42f99d89c1f456c9213fc54bb7f1b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3854564e686a5365c0a20a6eee92e8a1f56897f17776ddf46412fdcd93cf10f
MD5 412da35211f28c8d5ecca80e4a74f290
BLAKE2b-256 e4a5fc508c39373ac518b52c0d2517516724166f9c3a09884b32b3794bdf6db7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 003eff814b61064d1a13613898159a3fb97ae55b5cb4797109416db4962e3c16
MD5 240e04092ac1057ccb027aea50c5545a
BLAKE2b-256 51e846fc1e462d22dab95c0f7f7d8a6625f3a173cecbbf9d0eda3ce74ecc9d9b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.171-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 670.7 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.171-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 062648381e30371ae69b6b341ab285e273d6c720d65579af1dcfce8de699d95f
MD5 64eab7346603806d8ac76c5fcdca3bf6
BLAKE2b-256 3fe2ba6febadeabf18d12a525380703c5125956da226f9117772a5a152621d64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1caf4cdd62619840bb2df506717310c12c5be10a58dc959946021b1ea57a768e
MD5 7fc14cd2cb96ce0e1215ce1e570b60f3
BLAKE2b-256 99ffb609b314e39dd3d311d665c6dbb4bed20bf0509bbf7305ff4075c4acf950

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 44801459aaac1b603fde553a0bfd2dc762300c07c51411659d36ea3454b78569
MD5 247147656295ff42a1215e21d2b9674a
BLAKE2b-256 f212003c302f87e99461dfba3ac0de991844838abeea3516877ab9156f2d6779

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f3bcb6bdcef59e4d668d0bf44ff5fb2006382dd6152b2d9f7b31fda571141bd
MD5 87c535b75f71633a74d914dd22a00fce
BLAKE2b-256 8239a4c597d6ad7442d5d263cab766982a9c9a7020bd1afaec409796df2d1adf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4fa4b8fd7a5ac6d721e731b809f9a7e0d03ded1862a6659ebbd9a9f6c41cd7f4
MD5 10cd7beff3f9229b3c74ef9851f1a429
BLAKE2b-256 631669d0975568f4aba2e625400ba26a53f68cfd4385e640bd9f8b7150fd5ecd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.171-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 670.1 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.171-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 44d9c516a87dd787a42fd3d8d302cddc1bb0214750d61767fd63562c8ecd4b22
MD5 5166dabbb94ae1b6653d6925985550e5
BLAKE2b-256 27bd4c37e2efa023f9f06d75ee17239fe3287d6427404816287254a2e6ae1d12

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95268ede41815b93470e435dd7ed33708914c5be9647e2e43a9e909d09bafd3e
MD5 588d6f005dd29005cc039df89b7c9c59
BLAKE2b-256 1695ee42aa261c55969def2dd7c2abb42e2a8f414deeb8a59d15e9c44be5dd56

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b744b37874440929ef9c7662863c62aabaa64ab8445229b0af2c07d448ebf4f
MD5 83615d1c91ef108fd857520f50b2dacb
BLAKE2b-256 a6fcf0cd746d360e34f988819294a6575fd60508964a42bc141d26b3e124a18d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e476a6532ef719be7d040a0d6c81538bdfad5dd8b8b81ed53b4aa4d9cfb8719f
MD5 ddbba417b4d7616ad8a42ddfb219bab8
BLAKE2b-256 f6f5983e305137087b495abd3ce062994d901cbb13a90b4c21097ccdad8998df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.171-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ae07c3c21d394082e5eeaa4db8821164690a12159411f3b9665357df53584cd4
MD5 eb499be58ace335a892dc1e45abd5cef
BLAKE2b-256 569c26e0deac2a993dbbb8428c262c63cbb1827e6cb7601776fb28a44f793d4f

See more details on using hashes here.

Provenance

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