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.169.tar.gz (318.1 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.169-cp313-cp313-win_amd64.whl (667.9 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.169-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.169-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (745.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.169-cp313-cp313-macosx_11_0_arm64.whl (725.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.169-cp313-cp313-macosx_10_12_x86_64.whl (745.0 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.169-cp312-cp312-win_amd64.whl (668.1 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.169-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (763.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.169-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (746.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.169-cp312-cp312-macosx_11_0_arm64.whl (725.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.169-cp312-cp312-macosx_10_12_x86_64.whl (745.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.169-cp311-cp311-win_amd64.whl (667.5 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.169-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.169-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (746.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.169-cp311-cp311-macosx_11_0_arm64.whl (725.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.169-cp311-cp311-macosx_10_12_x86_64.whl (745.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.169.tar.gz
  • Upload date:
  • Size: 318.1 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.169.tar.gz
Algorithm Hash digest
SHA256 ec8bc48cf65c6648f7457cb113848a1c3e0a7c2ccbca1a8384e94df883ee19f2
MD5 79a4de2e1b2a0c37e25fb9957e21afb7
BLAKE2b-256 ba85f4e49ef545e5579b65687158cabe31a69f72b28d6e0276c4c4471739b3bd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.169-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 667.9 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.169-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c3a4427c015797759b6133d8ec238ccf082964d51f708b835cb99584abfa8907
MD5 6884145377040b0a28307183d86d6988
BLAKE2b-256 03089186fdd95961df22573f5c491f1868f67b11da66a8b7aedb8e3c84a54754

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ee8bc08bf37d984d2b7cc979074d6dd9f8ad1326e1c6ec492253b68a88cbe9b
MD5 860ee068133980202ac885339e70faa1
BLAKE2b-256 f4eb6cf53ac39c7876ccd2beb57de1e353c6c913da69b7132b1072448de31c38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a9e4267710fd04463ab3070d9b700edd54b865e2855308cd604e1d807069f18
MD5 6a14e4581c854b4bb8166c0f5844caa8
BLAKE2b-256 889a5c6af0cbdab265e1106043890670ba933b073fca6d0f6b90e7fad8b5be4e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f8e10e54a790a823cdf02a58b64ee6b5a56031248adeff65f54567232598e1d
MD5 d557cc90aedfda6a2d98087f2895143d
BLAKE2b-256 1234ba8a93ab3c2b927d3f61ac188ca1acabee4b5630a377257012b37cdb2b4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cfe35a9c885862b3d366744ad9cf10099204f5168a55850a91415f71ec25724b
MD5 ef92a2e75b4bad0f3d4eccc7efdc8fa6
BLAKE2b-256 76df39d7b206c5dc2025deefd21729de01a2a476233f18d89c259bd75aea0ab1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.169-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 668.1 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.169-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6a496208ef46be3e6d0494084d2681838446c741bf9d61ff768af304e3988d20
MD5 d4106eff43a3dbf813814c9326f4fe40
BLAKE2b-256 26a5ae7d6e21c361b5dc9ecbe76e8ab936ea797de6d21cceb0395b94f7a9270d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7253cebe8b7b7b901d36f6cc7d60dc41f744e6c9b5b5479a5684dd3d551a8dd0
MD5 1c849c3ee44e26e8d274c16f0f4203c8
BLAKE2b-256 0065756957687a6170db290208a57ab06ff7c5bbf05f6428610dfa13a7824a24

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 502ff6f5c4b6124cbb427c573f4a259b1f6951cba05f9679a107aca764a62482
MD5 54eba1133969b4a37b3c2341a4aa45ec
BLAKE2b-256 dfe6688a94d4a8f98564d36f8fff896cba8784e4c4cc3192fc93304e81d5beba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0729b81aa13464448cc5ddf5d620cc81c457ff5461db6a610a37dde7efa4df61
MD5 10e6c4a6811f9994b5ecfb476f4ae57a
BLAKE2b-256 12c277cf209afbbe0dc5efaf75d1bac01d3f3f02d78558a86233b7fb0864c56a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7fbfd07d21729358c68d706cf4515dd60ecd31e97cd556ad7b665ceb9d7cb1dd
MD5 c47700c86a73b250a9cacaa4e3ff152c
BLAKE2b-256 8ab75c094989590709d04ec2c70823cef52c484a5051609af85dc486c585fba0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.169-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 667.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.169-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 36c2a55fc5905406e83520a22f6961bf2f9491b307bc8012ec12a865bf29c554
MD5 352e1cdadc0ed0b24d36b34f919f0982
BLAKE2b-256 d1c9f38c42bbafed789dad487b6cbebcad1db225830c672b8e7dd952217ac7ec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc89d9181473666dea6477bea7f0f0c8255f07a8ccc053c4f48d191c5f812c54
MD5 fc3c212af77ef9374c896268e3e3b43e
BLAKE2b-256 1764056c8513d9819f23876517a18e3282f3c4b9a714362af4722789493a30e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8ff7cb710db60c2fb1bcc8310739379158bed2d9a2db033ebcba7b18c18fce79
MD5 0025fb56c23e060a213f7a27773664cd
BLAKE2b-256 11db57411ff6c47d6bd38d3c00cefd90552788190ef19b01201f5818df822d72

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9e03f2865b2d074fc7b4baac771f152e22850aff09623f8d3e4f84286f29a89
MD5 3358086110f7fdb9a918be8d6662c404
BLAKE2b-256 16fba38b83182f4e6d1df8c5e0f9a4731428d57ae93f42ac21262f8519604b57

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.169-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fbca85623f44b23af4f1fc9ba289470c73ebacfde2123a9946491ef6e00fc521
MD5 4895fe7164058ddc70a6f6d69feddd6b
BLAKE2b-256 cc30470087cd6ed8cb4c3c8decd82312535f023854752dc84458552b55b22488

See more details on using hashes here.

Provenance

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