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 version 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.

It shines when used with AI agents, but is built for people first.

pytrilogy is the reference implementation, written in Python.

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 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.178.tar.gz (327.0 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.178-cp313-cp313-win_amd64.whl (686.3 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.178-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (779.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.178-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (762.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.178-cp313-cp313-macosx_11_0_arm64.whl (743.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.178-cp313-cp313-macosx_10_12_x86_64.whl (763.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.178-cp312-cp312-win_amd64.whl (686.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.178-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (780.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.178-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (762.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.178-cp312-cp312-macosx_11_0_arm64.whl (743.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.178-cp312-cp312-macosx_10_12_x86_64.whl (764.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.178-cp311-cp311-win_amd64.whl (685.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.178-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (780.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.178-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (762.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.178-cp311-cp311-macosx_11_0_arm64.whl (743.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.178-cp311-cp311-macosx_10_12_x86_64.whl (764.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.178.tar.gz
  • Upload date:
  • Size: 327.0 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.178.tar.gz
Algorithm Hash digest
SHA256 8f1e1d514b49e15f6c9a71ba755415cf0ff025d05a9feffcd3dcc63c802ba7f5
MD5 3b7f4efb1fbdd93193a97f74f8dc92df
BLAKE2b-256 cd888dd01bcbdcd1ed68567508721103177cf4fcbbe011d1bccebe07bbb8bf5a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.178-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 686.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.178-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9f5e3cd205e284b6b66f04a2ba7c92839cea34f7e5acb5e082eda308a3be179d
MD5 fa6b797f912f530731037c226bd935c9
BLAKE2b-256 c4774e6b9150da696228469d0a3dbc1804afdf6c629fda0e6a43b696f7814c1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 edfd69e42fb01c6af499543a4e3bf6f17d95c944134df7b58f7572eff7ff753c
MD5 38106621fced4c7b87dc9819f6e08a7b
BLAKE2b-256 5ad29317bd36a77311251e1c61a33cbec124d6d55dba936b32e80e5041058e62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 032cf80b4030dad430f49de48c1d8eac05920c0fc8cd95bde3a272a95700894d
MD5 d8cd32235fce39567e85581a987bc533
BLAKE2b-256 6e544729f59c2a8fe47c816426a7b5b259a183d79aef1e2885e6ddfef41cd554

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9fc9cc90d18335a86ae748656dba162e8caaea4bfe9294960bc3ef148277adb
MD5 b53051c330831fcb0fef8fb9741b2c4a
BLAKE2b-256 e4f998f3176203224e5e36d66743688679b79937613d7d6ca03715f07fcd6655

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2721f5b3402a451f6a0d8b4c94a5345e60112e65ee7441acffacf3446986e0d3
MD5 5424f14630ce50c75678cd9be7b802c8
BLAKE2b-256 8f2346077b135c101f82b21925ec207fefe6a2753b85dd5328ef3ad47d755b09

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.178-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 686.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.178-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 05518ffaf4aa60559afbdcdd3ad1008324485b197a9a74b538c94a23374162a9
MD5 29c1b6cb227afb7f49b8401420626e61
BLAKE2b-256 7e8a3c4171479069217253dd95f4acb255470b55e9e33ccaec9fcb360ad61781

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba8e363bc9f9b491386c9268990bc47e4933a3ae9c157bdc35e57616d2b782e4
MD5 d35117bb0d669280fccbb9a6a1dbe903
BLAKE2b-256 afe186bdb84ce0de145e0c64541c583323fbfcd917b561dac3ddf465738c60e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e096e00e94aa7f672f228dd3ce36d9487e56efeebb4235b2efd370c32fc37291
MD5 534cd8b499a6224c3a68374dceb45a39
BLAKE2b-256 9fb2f15a053b86e9e8f773ee71148eb0a73622602778a209055c0826e0473ada

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f22fc085d556e4b2aef2a7a85e929ee3f3ec585b534ec008b6efa6f9e67b069
MD5 3f1e32b9213733af9db129a9406e2d30
BLAKE2b-256 92998174f97779639e51fb0d2f9ae01cd8a0df312a753a3a42fccbf0404db117

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4adee986a4bc0f2b6af613cd4dbf6c57a68565eb635779697baa0cc8cefd6b8f
MD5 602786b497b225eb27ec5c7deeef191e
BLAKE2b-256 c95a4dc41216b2d40648d985e130b5126ff86f43df6954a99345469e333b5daf

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.178-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 685.9 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.178-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 773b3d9f89f9e872f36841e71eff4459091952dfd3577e0473c7873f9cc3282d
MD5 e7b1ded9d702e92e2ec6fd32a3346f57
BLAKE2b-256 007a41c77db363be7347368c1840acd23224736e7bdaa9de66180c2348bf81e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ccd808f01dad3cfe1d5aece8a181bb648ebe9d1809cc23394e2b207f024078a0
MD5 17f70f328d35a95088d21e93812a6dca
BLAKE2b-256 1ed87fc540268bb8646ad00f855b3f4b6cb6f539bbfe6dfe50812b1b18fb2b15

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e22e1f9a23fdd39737103a5d3341db212b58595a431444011cef80e2c8ccad53
MD5 ac0999d982b40a68f9fb72167dfe4c2f
BLAKE2b-256 8a3d755405c374260a6d8bdc9bc459456ea1ea28139e8e70050a6516787ae305

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8159c949f860dd1095f965c8cc7ad2acb6837dc1f266e2e1b5cd909fb3188875
MD5 81f0e1c205eb8907029298258c895a42
BLAKE2b-256 3c0e56cd260f8930583c9a9d07d8ec0a9b3d78292cf66e116475b1b1493b8536

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.178-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 15b1852c22641f638ebd96829a17065f8bb70e658c614440b2a9fed6d58512ae
MD5 670b40dec1991ccf2b5c6caa509531e7
BLAKE2b-256 282bea6a593fd0a97a918c7db8fbeed5b0af309a3d44b0ee3f5cc70edcc9fc96

See more details on using hashes here.

Provenance

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