Skip to main content

Declarative, typed query language that compiles to SQL.

Project description

Trilogy

SQL with superpowers for analytics

Website Discord PyPI version

Trilogy is a semantic SQL language for analytics.

It lets you write queries without manual joins, reuse and compose logic, and get type-checked, safe SQL for any supported backend.

Why Trilogy

Analytics SQL can get hard to maintain - fast.

Trilogy adds a lightweight semantic layer that makes queries reusable, refactorable, and safer at any scale.

  • No manual joins; no from clause
  • Reusable models, calculations, and functions
  • Safe refactoring across queries
  • Works where analytics lives: BigQuery, DuckDB, Snowflake, Presto
  • Easy to write - for humans and AI
  • Built-in semantic layer without boilerplate or YAML

Trilogy is future proof - with the fast feedback loops agents crave -but is built for people first.

This repo contains pytrilogy, the reference implementation of the language.

Quick Start

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

Install

pip install pytrilogy[cli]

Create a file hello.preql

Trilogy supports reusable functions and constants.

const prime <- unnest([2, 3, 5, 7, 11, 13, 17, 19, 23, 29]);

def cube_plus_one(x) -> (x * x * x + 1);

WHERE 
    prime_cubed_plus_one % 7 = 0
SELECT
    prime,
    @cube_plus_one(prime) as prime_cubed_plus_one
ORDER BY
    prime asc
LIMIT 10;

Run it in DuckDB

trilogy run hello.preql duckdb

What Trilogy Gives You

  • Speed - write less, faster. Concise but powerful syntax
  • Efficiency - easily reuse and compose functions and models, modeled after python
  • Easy refactoring - change and update tables without breaking queries, and easy testing snd static analysis
  • Testability - built-in testing patterns with query fixtures
  • Straightforward - for humans and LLMs alike

Trilogy is especially powerful for data consumption, providing a rich metadata layer that makes creating, interpreting, and visualizing queries easy and expressive.

We recommend starting with the free studio UI to explore Trilogy for most users. The SDK pytrilogy provides a CLI - similiar to DBT - that can be run locally to parse and execute trilogy model [.preql], or can be embedding larger python applications by importing the trilogy package.

Trilogy is Easy to Write

For humans and AI. Enjoy flexible, one-shot query generation without any DB access or security risks.

(full code in the python API section.)

query = text_to_query(
    executor.environment,
    "number of flights by month in 2005",
    Provider.OPENAI,
    "gpt-5-chat-latest",
    api_key,
)

# get a ready to run query
print(query)
# typical output
'''where local.dep_time.year = 2020  
select
    local.dep_time.month,
    count(local.id2) as number_of_flights
order by
    local.dep_time.month asc;'''

Goals

Versus SQL, Trilogy aims to:

Keep:

  • Correctness
  • Accessibility

Improve:

  • Simplicity
  • Refactoring/maintainability
  • Reusability/composability
  • Expressivness

Maintain:

  • Acceptable performance

Backend Support

Backend Status Notes
BigQuery Core Full support
DuckDB Core Full support
Snowflake Core Full support
Sqlite Core Full support
SQL Server Experimental Limited testing
Presto Experimental Limited testing

Examples

Hello World

Save the following code in a file named hello.preql

# semantic model is abstract from data

type word string; # types can be used to provide expressive metadata tags that propagate through dataflow

key sentence_id int;
property sentence_id.word_one string::word; # comments after a definition 
property sentence_id.word_two string::word; # are syntactic sugar for adding
property sentence_id.word_three string::word; # a description to it

# comments in other places are just comments

# define our datasource to bind the model to data
# for most work, you can import something already defined
# testing using query fixtures is a common pattern
datasource word_one(
    sentence: sentence_id,
    word:word_one
)
grain(sentence_id)
query '''
select 1 as sentence, 'Hello' as word
union all
select 2, 'Bonjour'
''';

datasource word_two(
    sentence: sentence_id,
    word:word_two
)
grain(sentence_id)
query '''
select 1 as sentence, 'World' as word
union all
select 2 as sentence, 'World'
''';

datasource word_three(
    sentence: sentence_id,
    word:word_three
)
grain(sentence_id)
query '''
select 1 as sentence, '!' as word
union all
select 2 as sentence, '!'
''';

def concat_with_space(x,y) -> x || ' ' || y;

# an actual select statement
# joins are automatically resolved between the 3 sources
with sentences as
select sentence_id, @concat_with_space(word_one, word_two) || word_three as text;

WHERE 
    sentences.sentence_id in (1,2)
SELECT
    sentences.text
;

Run it:

trilogy run hello.preql duckdb

UI Preview

Python SDK Usage

Trilogy can be run directly in python through the core SDK. Trilogy code can be defined and parsed inline or parsed out of files.

A BigQuery example, similar to the BigQuery quickstart:

from trilogy import Dialects, Environment

environment = Environment()

environment.parse('''
key name string;
key gender string;
key state string;
key year int;
key yearly_name_count int; int;

datasource usa_names(
    name:name,
    number:yearly_name_count,
    year:year,
    gender:gender,
    state:state
)
address `bigquery-public-data.usa_names.usa_1910_2013`;
''')

executor = Dialects.BIGQUERY.default_executor(environment=environment)

results = executor.execute_text('''
WHERE
    name = 'Elvis'
SELECT
    name,
    sum(yearly_name_count) -> name_count 
ORDER BY
    name_count desc
LIMIT 10;
''')

# multiple queries can result from one text batch
for row in results:
    # get results for first query
    answers = row.fetchall()
    for x in answers:
        print(x)

LLM Usage

Connect to your favorite provider and generate queries with confidence and high accuracy.

from trilogy import Environment, Dialects
from trilogy.ai import Provider, text_to_query
import os

executor = Dialects.DUCK_DB.default_executor(
    environment=Environment(working_path=Path(__file__).parent)
)

api_key = os.environ.get(OPENAI_API_KEY)
if not api_key:
    raise ValueError("OPENAI_API_KEY required for gpt generation")
# load a model
executor.parse_file("flight.preql")
# create tables in the DB if needed
executor.execute_file("setup.sql")
# generate a query
query = text_to_query(
    executor.environment,
    "number of flights by month in 2005",
    Provider.OPENAI,
    "gpt-5-chat-latest",
    api_key,
)

# print the generated trilogy query
print(query)
# run it
results = executor.execute_text(query)[-1].fetchall()
assert len(results) == 12

for row in results:
    # all monthly flights are between 5000 and 7000
    assert row[1] > 5000 and row[1] < 7000, row

CLI Usage

Trilogy can be run through a CLI tool, also named 'trilogy'.

Basic syntax:

trilogy run <cmd or path to trilogy file> <dialect>

With backend options:

trilogy run "key x int; datasource test_source(i:x) grain(x) address test; select x;" duckdb --path <path/to/database>

Format code:

trilogy fmt <path to trilogy file>

Backend Configuration

BigQuery:

  • Uses applicationdefault authentication (TODO: support arbitrary credential paths)
  • In Python, you can pass a custom client

DuckDB:

  • --path - Optional database file path

Postgres:

  • --host - Database host
  • --port - Database port
  • --username - Username
  • --password - Password
  • --database - Database name

Snowflake:

  • --account - Snowflake account
  • --username - Username
  • --password - Password

Config Files

The CLI can pick up default configuration from a config file in the toml format. Detection will be recursive form parent directories of the current working directory, including the current working directory.

This can be used to set

  • default engine and arguments
  • parallelism for execute for the CLI
  • any startup commands to run whenever creating an executor.
# Trilogy Configuration File
# Learn more at: https://github.com/trilogy-data/pytrilogy

[engine]
# Default dialect for execution
dialect = "duck_db"

# Parallelism level for directory execution
# parallelism = 2

# Startup scripts to run before execution
[setup]
# startup_trilogy = []
sql = ['setup/setup_dev.sql']

More Resources

Python API Integration

Root Imports

Are stable and should be sufficient for executing code from Trilogy as text.

from pytrilogy import Executor, Dialect

Authoring Imports

Are also stable, and should be used for cases which programatically generate Trilogy statements without text inputs or need to process/transform parsed code in more complicated ways.

from pytrilogy.authoring import Concept, Function, ...

Other Imports

Are likely to be unstable. Open an issue if you need to take dependencies on other modules outside those two paths.

MCP/Server

Trilogy is straightforward to run as a server/MCP server; the former to generate SQL on demand and integrate into other tools, and MCP for full interactive query loops.

This makes it easy to integrate Trilogy into existing tools or workflows.

You can see examples of both use cases in the trilogy-studio codebase here and install and run an MCP server directly with that codebase.

If you're interested in a more fleshed out standalone server or MCP server, please open an issue and we'll prioritize it!

Trilogy Syntax Reference

Not exhaustive - see documentation for more details.

Import

import [path] as [alias];

Concepts

Types: string | int | float | bool | date | datetime | time | numeric(scale, precision) | timestamp | interval | array<[type]> | map<[type], [type]> | struct<name:[type], name:[type]>

Key:

key [name] [type];

Property:

property [key].[name] [type];
property x.y int;

# or multi-key
property <[key],[key]>.[name] [type];
property <x,y>.z int;

Transformation:

auto [name] <- [expression];
auto x <- y + 1;

Datasource

datasource <name>(
    <column_and_concept_with_same_name>,
    # or a mapping from column to concept
    <column>:<concept>,
    <column>:<concept>,
)
grain(<concept>, <concept>)
address <table>;

datasource orders(
    order_id,
    order_date,
    total_rev: point_of_sale_rev,
    customomer_id: customer.id
)
grain orders
address orders;

Queries

Basic SELECT:

WHERE
    <concept> = <value>
SELECT
    <concept>,
    <concept>+1 -> <alias>,
    ...
HAVING
    <alias> = <value2>
ORDER BY
    <concept> asc|desc
;

CTEs/Rowsets:

with <alias> as
WHERE
    <concept> = <value>
select
    <concept>,
    <concept>+1 -> <alias>,
    ...

select <alias>.<concept>;

Data Operations

Persist to table:

persist <alias> as <table_name> from
<select>;

Export to file:

COPY INTO <TARGET_TYPE> '<target_path>' FROM SELECT
    <concept>, ...
ORDER BY
    <concept>, ...
;

Show generated SQL:

show <select>;

Validate Model

validate all
validate concepts abc,def...
validate datasources abc,def...

Contributing

Clone repository and install requirements.txt and requirements-test.txt.

Please open an issue first to discuss what you would like to change, and then create a PR against that issue.

Similar Projects

Trilogy combines two aspects: a semantic layer and a query language. Examples of both are linked below:

Semantic layers - tools for defining a metadata layer above SQL/warehouse to enable higher level abstractions:

Better SQL has been a popular space. We believe Trilogy takes a different approach than the following, but all are worth checking out. Please open PRs/comment for anything missed!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytrilogy-0.3.221.tar.gz (396.4 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.221-cp313-cp313-win_amd64.whl (846.3 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.221-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.221-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (917.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.221-cp313-cp313-macosx_11_0_arm64.whl (894.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.221-cp313-cp313-macosx_10_12_x86_64.whl (923.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.221-cp312-cp312-win_amd64.whl (846.6 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.221-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.221-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (918.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.221-cp312-cp312-macosx_11_0_arm64.whl (894.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.221-cp312-cp312-macosx_10_12_x86_64.whl (924.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.221-cp311-cp311-win_amd64.whl (845.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.221-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.221-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (919.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.221-cp311-cp311-macosx_11_0_arm64.whl (894.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.221-cp311-cp311-macosx_10_12_x86_64.whl (923.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.221.tar.gz
  • Upload date:
  • Size: 396.4 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.221.tar.gz
Algorithm Hash digest
SHA256 6306a8fc5e5928950c890bd6e8879b9af55f78d628795720b80eb103322fd554
MD5 38ba97bd3f9ca38ab186dd0c99973a4f
BLAKE2b-256 b9a05027e71c087ea7f85f2d88720623e262408af146d0730ffa2ffaf6e9bf5b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.221-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 846.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.221-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9ebe33fbba4d07d5746062211e13470489da69e8220d01c142398072af811e0b
MD5 27216f7a4e95ceb42b7a3fedf814924d
BLAKE2b-256 10e61fe96addf4f9380b3fdd7d1350f4f4d63e962ca477bd8f07e066c7d8071b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a293199a9d09fc02a795d95cd96c2068510b6271244543710c748982a263ac45
MD5 c7933550e22cc88c7eafd7cbf93be7ae
BLAKE2b-256 570aeae27cabdc1aa59012d561b7e92922f367bfd9cc05d152eb5e8db135bef3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f63042da64d9437407ea05fbe1b5ef6dc3b657d2cdaa62d2dfcb5aa2aad45b1
MD5 3cf21a9874c67f02d707ee0e7bababbd
BLAKE2b-256 67973840c2ec46158ef09ec20121f4337a5734ba34f20c8ecff61fca15022ee3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46c953d7b667832ced5798aeb8a7f585727ed2d4b217abb45178d846a2121a37
MD5 95298b9658963e66e338ba35140e7168
BLAKE2b-256 9d5e87cb23e15b690d871e85822604a1ce891a6e327232af5fe8649f4e572a63

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 78bb103f61f20e6259c7fd65e4daa9d662735d771816b7569e3697c4aab4728b
MD5 4d6a6566a00b1fcd9488aaaf866ac298
BLAKE2b-256 c638c817f9047ad6a1fc142fe627ca0924e95202298448b08a8669d4930b5b96

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.221-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 846.6 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.221-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7e942fd8af4f6623ef3e895807b84720b5e2fffbf10b03925cdacbdf239c860c
MD5 dfe53966036de672a03d79fb9ec1f41d
BLAKE2b-256 ac86d363406ee324c9b886d71eabdaf2d3eb1d5314072861668eb21f6eedba9b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 745f535ae44e244f9a53da1a8ff63b3ef1594c96f2274a7d541638395cd82d89
MD5 1d4a9f9cd4b9227234be0f14c19fa85b
BLAKE2b-256 c3626ae683a3a510aaac4bd19703ea3f4ae5d37feaa8807109631a25cd0ed27e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5dbf457e246ca7826f1e8449f3ac4d836280e1e1ac0284a1490230e4ba730fcb
MD5 9c29214675fb7ed1be545d32d678eb1a
BLAKE2b-256 2186104f26cc4e3c57e0dc895862711eba6c19f5978ed8cc1549296848ebc527

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d201b66a8fb2e28aac15231cafc3818174dfad7684fdaf14c1155925b3c8883a
MD5 739bc117dcc076af9d704f635f6d4250
BLAKE2b-256 b235b200e78614a673d9e462ec507537bd10fd4d62cb0576366f6481b2e4e22d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e97d06c520c6d64475ad89cd3b6f96f78d6b51277cf46285c573b1383d611e02
MD5 60b93f36cc233fc15e2962cfadaa7a8c
BLAKE2b-256 fa5f10911e53054f8913185b1bd620f01539fbe34c6b2aa58652f8fa955f23e1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.221-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 845.3 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.221-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 97d05d6be1d398fdb49d520f5a43035e67dc99f9aa664396ec160d0ad5d751de
MD5 0d5daa9f499a0d891dbffbd0abb57c12
BLAKE2b-256 e80ec7c90083678da436e9a687d39ff25cbfac1e6fef9d9e400d4bddd0ce0d55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72a05575e7653e339de594c1ca509ee4955b9228f1c0607048507c4600d855ef
MD5 3905ee44aca9f41cf4fdf8d2689b9b8a
BLAKE2b-256 44835fe6bea1bdd464b1021268c0d184a7cff99fe762e0529cb5f9cc5df98f40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 02c9f9ce5cd8b941a65702b03f9655eee57c5d24d2f82086a8a151a28f344ac9
MD5 0b2b0947eb26d9479adf5a2e1b89c438
BLAKE2b-256 f8e15f1eceefa65b85b84613f210c33024c85d35d0d9ecc918f0629df1dc521c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9885b6e800a65bc55ca354e7c1699da8d162a57d656469b6be53408faec30ad
MD5 5b5ab738fb76e1eb4b3a130c3f143391
BLAKE2b-256 b6b7aa930685a2c6cae984b8dc19014dd2fd6b2946c455c550b14ff3e9c3c4b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.221-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 21916604c19d9344952cec810feb5a693a3e3098d32f2a0c8941a74356e6937d
MD5 9a5d9d61997e657465a205ef75591f64
BLAKE2b-256 9972caba0b58371a76d24a9888c78e215f40b45b4956e7b9ad608a0db155683c

See more details on using hashes here.

Provenance

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