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
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.185.tar.gz (336.3 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.185-cp313-cp313-win_amd64.whl (699.4 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.185-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (794.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.185-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (777.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.185-cp313-cp313-macosx_11_0_arm64.whl (756.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.185-cp313-cp313-macosx_10_12_x86_64.whl (776.9 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.185-cp312-cp312-win_amd64.whl (699.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.185-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (795.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.185-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (778.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.185-cp312-cp312-macosx_11_0_arm64.whl (756.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.185-cp312-cp312-macosx_10_12_x86_64.whl (777.5 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.185-cp311-cp311-win_amd64.whl (699.0 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.185-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (795.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.185-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (778.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.185-cp311-cp311-macosx_11_0_arm64.whl (756.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.185-cp311-cp311-macosx_10_12_x86_64.whl (777.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.185.tar.gz
  • Upload date:
  • Size: 336.3 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.185.tar.gz
Algorithm Hash digest
SHA256 262c0f895eb9694532579084579ffabe87be4dfd2fb533125488650f05233f93
MD5 6e42930815a455d2fb348f2a95d9e21b
BLAKE2b-256 f19978e9f641e6f891c6d0f7505ecb461ed398faa729a668f683ea1eb455c1d1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.185-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 699.4 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.185-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 052c0c5af9ba67afe352cc1f43e593c59b4ed167605d5d923d3be24eb59fa1d5
MD5 e179c56048d36ea48605826e675dbad0
BLAKE2b-256 12bdc5ce4937e850984ef76768c4083f87e056fb911cdebc3932cf351d5445e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db6357234859bb0ccf11020b259ec441a6aaccf3bcf93530e8db52c068933a3d
MD5 127421639ad03e078b949858de66b218
BLAKE2b-256 eeb71a37da2c0c4a2f1a0ffc47cebb5bcebf5277114655024a0b245339c2b812

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f9e432090a2898b24fe365ada2a7659a68a56f8c8b3bde520a9fe30a98abf84
MD5 89012be8b47c63eee97ae25d0f5419e9
BLAKE2b-256 5f1ab06a599a4d98058e46b93302aa402551fb2da875bc407bce94391a60925a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e1137ca75db270c95a7954308e211beb10e3ede3a25126b87208c20c92acdfa
MD5 2c3ac5fd1df33bdb9eef8ce8801c2ece
BLAKE2b-256 23e6521057b01f921f60480906f6f7822bf83b5d8f50889c0ea7d1774ef3ac7e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3f61e619182c6c0e425507823696da3dceb9bf7e7e9bc8bee753efa5510ec6ed
MD5 0a9d179bb0c45ed27d08dc988910e94a
BLAKE2b-256 b4308bf947382017f3aa6ac4b79bb6a123927b581456f6ca69745d99d96ce107

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.185-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 699.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.185-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 839131fe114c10c3f97d12f77ea58a41eeac6ce16006612442b41006e329c71f
MD5 707c8b982548d080a0a98f2474352a15
BLAKE2b-256 ccd9e09d38f10c5f654053a487ce569b1ee4c861e9ed6135545b01a502da34a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c537dbb2f2ddb0ecf461a4791c79393436b48f5b0334c7c7d11321cbbe2873d
MD5 56160db5bbe2001168e5c8f01a0af52f
BLAKE2b-256 ec9f9182e705eaccf5455a557ce8ff04b96ff00ef3f7e3e8a4b8e959e80e180f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d4b2a90587c7ccbe1d4bf2fd19b4e969cae9206ad43d73bda1a89bc3648456bf
MD5 dcc2276588ce9bb26ef13148e4577119
BLAKE2b-256 b68e9b5f494ad2a7d442e09b03107eeb12720a1901810588a3ff1173d3b350b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d1bc03f313813a14da02d3608981ac1b244e44da04b0dff06b12520fd537acd
MD5 cd631a1d60fc19c129725467e1006a77
BLAKE2b-256 b0b0e2a239433baa03d422d372eb0f470811a704f0f0127e148ecd45dd31070d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f072dbf3d52b10b60a7d7ce21fa41d86eca41de056cad61fd458f676d02423c8
MD5 06c20ff1887a017db934b9ac4d3b455b
BLAKE2b-256 e363d81b5bd543f1fb4a413040a57b3529e601bd8a72b96f9472bbf646295422

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.185-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 699.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pytrilogy-0.3.185-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3574705215209186061d282ba4684455b41cfc82de09dff76ebb45acf21c88bc
MD5 39491889845e387fc459203a035b4802
BLAKE2b-256 0bd4e9c82a954db0f33e07ee9f757f840b151343d68da16f671bcd89a577c4a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c5ddd30121965b78b4645e6af6e33d3f15253ee9ee8920c9b2648f9e734aa5a
MD5 2aefe83e77a569f1a8ccbc8ef1a3f22a
BLAKE2b-256 e37cd876131061f692cd990e1a552b3544a8d3a8b8399ec9312ec8f37c245190

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f1a73c7e7389a1f6771c5275c6ae6436831066859090f0e401348cf88090a9be
MD5 456524d69dad908b9e406a32be935afc
BLAKE2b-256 3e6e6e4efe8ff63cb4ef8a09b54f22df6a315a024371ff9a4a604060d18dc5c3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 838096a31adae648fea1928b837c3e0cd2fdeb71fe0a3f624a439485f49695fb
MD5 47ddac0dbffb0f2ff34338886612a7f2
BLAKE2b-256 0dee80891f93f0718b1ef1c47d9591de23bbb2b84c19a55923a41570316f9bae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.185-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 09d24908d0f08f8d56d9d19d315c42940d77d45ec8e783c09d73dca0b6346486
MD5 fd54a1937eb5e4890c1e90e5f77f0cf0
BLAKE2b-256 ed700c75c937219a64438b8cba4a279bacf11d46517c615998a4c45184b20ea6

See more details on using hashes here.

Provenance

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