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.223.tar.gz (396.9 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.223-cp313-cp313-win_amd64.whl (846.9 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.223-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.223-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (918.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.223-cp313-cp313-macosx_11_0_arm64.whl (894.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.223-cp312-cp312-win_amd64.whl (847.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.223-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (942.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.223-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (919.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.223-cp312-cp312-macosx_11_0_arm64.whl (895.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.223-cp312-cp312-macosx_10_12_x86_64.whl (923.9 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.223-cp311-cp311-win_amd64.whl (845.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.223-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (941.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.223-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (919.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.223-cp311-cp311-macosx_11_0_arm64.whl (895.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.223-cp311-cp311-macosx_10_12_x86_64.whl (923.5 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.223.tar.gz
  • Upload date:
  • Size: 396.9 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.223.tar.gz
Algorithm Hash digest
SHA256 1dab63d08c6cbdad7ad3d4158b72f8a9fbc1ae9bcd164bf10965160afffa3653
MD5 89a872e61f44bd9b4c36a3bb3d5b9e14
BLAKE2b-256 47548fb5176508d96671efd66efba879e23573fb43f45f2f008ba3c0cdeab930

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.223-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 846.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.223-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0486c22ec146cce78d2e59c74d3e94db8936abadb2e2fc98d588b6efec9b368a
MD5 ed71528b250b80b65b7e2536a4a13e5c
BLAKE2b-256 f9272aeef54853bf868a653107eefa37dc8ccb939f750a39b09c654c46982eea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 586ecaf96e8a2c3b2936fc5889e092ea1588202916c6d9ab14dcad862edf4543
MD5 0e3bb93bf7a14ee2d0fd55ce6cc511e9
BLAKE2b-256 439333b330d473c4456f3f9a5d588bb14183bf62afa90bf3e049e5a927d8e35b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 434049a99ff09506d00edc5f58dfe884e2c60e48ee1c3bc2c029eecb29b1e8c9
MD5 858d6fc2bb55764b79e3e4127d2ed487
BLAKE2b-256 84cb634756e056f0f5417cd8f5d52206d15e60c6370dc71677f4ee20fe7cde93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94e0d71ea0412f3687c47b458a01cfd717d28b0c9c42a130ec1806f0840b3987
MD5 44429a95d5bd4fc9b60d3f85068f71dc
BLAKE2b-256 d227344f703cb980691003f7ba0ba86cd6c23e368798382d0fc1a8d463cca62c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 028d180756a6ca9f63aa9a3e0520a20fceaf02cf5c6e8a24dc9d18f820e7932c
MD5 3f1ff1de65f77571a7b36b0ee8e124f0
BLAKE2b-256 a04f818a161868e949468a3c554c30c4a9fe9e4f6a2e632a76734f78da83964d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.223-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 847.2 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.223-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 810fa44472c36ce60b087f4d478d8f4a80b843b32699c99f7ba464e406f55ade
MD5 d8ca407a5f40f7147cf895aff80fb289
BLAKE2b-256 77d1fe771cacb3c38a0f8d8e8095e5736b965c731362fb8df5a546eecca37664

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6f3d6182f56fe3a44bd93877f99b9e02c79135c006b9c2e3fb5128c13eae986
MD5 24befe7526fe6f009c5c37c93e407dc0
BLAKE2b-256 8e680c765e4f82ef13ab3de352a14f7045d8e166bc7ade75826988d51dad2eac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a79652b494b3d0e90b586bd38e12e277ceaceb906bcdc93beaec24a3d1b6658e
MD5 4ced4f65e3f8471f4b5228e6332698cd
BLAKE2b-256 093ca55f91e355f9406651385443a681806221c987406d3482e78204de2fb0f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d404395a6e3e526b6a229fd007775eeef5e3de93688a9b4ce8a4dc98ce9f05ad
MD5 1c1a8d8ba3468f5162c8b8c829f46cfa
BLAKE2b-256 b639079b77bbb7e0e9a6d0bf496b166dd668c3cefa87984927962c17576502c3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 09cfe2077c65cccc78a65df102bc25fc741b9d186671bc954e4c8d9886a9d32c
MD5 560dd9070bfe916a7d426a270c7a2577
BLAKE2b-256 57ef9246e15a373e8ff630d2dc3edcc323d515f182650e8cfb4cb089fe95cb82

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pytrilogy-0.3.223-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 845.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.223-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aff5eea0fa0f05afc0db7ca61153883a1534c3099497ab29ec39425fda1055eb
MD5 3f58d69243dcea0e434b7fc3c5171743
BLAKE2b-256 ab1ea0139154ac31b6163e74ef9dd37dfba4782820b5050413fbb3cd1907d0e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 408bd5696beccab179256bf11afb0b018ba2a8f018a82f99a1a7d5fb7615db34
MD5 a8e221467002471f9c0bd96d8e354f5a
BLAKE2b-256 ca032a89829f5ea48f8ef8a0bda1e712544e073ec0a0754fd029f7808937f61a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7c92bd41c692c443cb608ed82ede0cc6c00db744b692f3e9ce9ca1194eeaa21d
MD5 9fa1ed34c0181cb67c2e151560787dc5
BLAKE2b-256 e7598f720a67dcadd9440f74b57e6ad6026a2b20debce724dcd67b3d3459a0ef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e020a07a70fe76bb770450c83f7fbceb2983b433e3c6bd0d82b4eca03f5c480
MD5 969a2683d2ebc928f0199d4a7ff36314
BLAKE2b-256 1c020695b293a7ca562bfb4a03d3d64d067e373e119d0c94cb730be7aa8c1834

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.223-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4216102afc87c1020c210cbdc97e55d9802aed446c0a86dc3d4741c89132d68b
MD5 47037543f034dda35769428a23925395
BLAKE2b-256 8066e5696870b54f094ce55d1add69de33c75f43858031be200d10f77f95d647

See more details on using hashes here.

Provenance

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