Skip to main content

Declarative, typed query language that compiles to SQL.

Project description

Trilogy

SQL with superpowers for analytics

Website Discord PyPI version

The Trilogy language is an experiment in better SQL for analytics - a streamlined SQL that replaces tables/joins with a lightweight semantic binding layer and provides easy reuse and composability. It compiles to SQL - making it easy to debug or integrate into existing workflows - and can be run against any supported SQL backend.

pytrilogy is the reference implementation, written in Python.

What Trilogy Gives You

  • Speed - write faster, with concise, powerful syntax
  • Efficiency - write less SQL, and reuse what you do
  • Fearless refactoring - change models without breaking queries
  • Testability - built-in testing patterns with query fixtures
  • Easy to use - for humans and LLMs alike

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

We recommend starting with the studio to explore Trilogy. For integration, pytrilogy can be run locally to parse and execute trilogy model [.preql] files using the trilogy CLI tool, or can be run in python by importing the trilogy package.

Quick Start

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

Install

pip install pytrilogy

Save in hello.preql

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

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

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

Run it in DuckDB

trilogy run hello.preql duckdb

Trilogy is Easy to Write

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

(full code in the python API section.)

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

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

Goals

Versus SQL, Trilogy aims to:

Keep:

  • Correctness
  • Accessibility

Improve:

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

Maintain:

  • Acceptable performance

Backend Support

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

Examples

Hello World

Save the following code in a file named hello.preql

# semantic model is abstract from data

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

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

# comments in other places are just comments

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

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

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

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

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

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

Run it:

trilogy run hello.preql duckdb

UI Preview

Python SDK Usage

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

A BigQuery example, similar to the BigQuery quickstart:

from trilogy import Dialects, Environment

environment = Environment()

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

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

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

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

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

LLM Usage

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

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

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

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

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

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

CLI Usage

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

Basic syntax:

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

With backend options:

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

Format code:

trilogy fmt <path to trilogy file>

Backend Configuration

BigQuery:

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

DuckDB:

  • --path - Optional database file path

Postgres:

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

Snowflake:

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

Config Files

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

This can be used to set

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

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

# Parallelism level for directory execution
# parallelism = 2

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

More Resources

Python API Integration

Root Imports

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

from pytrilogy import Executor, Dialect

Authoring Imports

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

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

Other Imports

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

MCP/Server

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

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

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

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

Trilogy Syntax Reference

Not exhaustive - see documentation for more details.

Import

import [path] as [alias];

Concepts

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

Key:

key [name] [type];

Property:

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

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

Transformation:

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

Datasource

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

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

Queries

Basic SELECT:

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

CTEs/Rowsets:

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

select <alias>.<concept>;

Data Operations

Persist to table:

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

Export to file:

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

Show generated SQL:

show <select>;

Validate Model

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

Contributing

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

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

Similar Projects

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

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

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

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

pytrilogy-0.3.149.tar.gz (308.7 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.149-cp313-cp313-win_amd64.whl (656.6 kB view details)

Uploaded CPython 3.13Windows x86-64

pytrilogy-0.3.149-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (751.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.149-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (734.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.149-cp313-cp313-macosx_11_0_arm64.whl (713.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pytrilogy-0.3.149-cp313-cp313-macosx_10_12_x86_64.whl (734.9 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pytrilogy-0.3.149-cp312-cp312-win_amd64.whl (657.0 kB view details)

Uploaded CPython 3.12Windows x86-64

pytrilogy-0.3.149-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (752.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.149-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (736.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.149-cp312-cp312-macosx_11_0_arm64.whl (714.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pytrilogy-0.3.149-cp312-cp312-macosx_10_12_x86_64.whl (735.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pytrilogy-0.3.149-cp311-cp311-win_amd64.whl (656.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pytrilogy-0.3.149-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (752.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pytrilogy-0.3.149-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (736.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pytrilogy-0.3.149-cp311-cp311-macosx_11_0_arm64.whl (714.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pytrilogy-0.3.149-cp311-cp311-macosx_10_12_x86_64.whl (735.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pytrilogy-0.3.149.tar.gz
  • Upload date:
  • Size: 308.7 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.149.tar.gz
Algorithm Hash digest
SHA256 7b89e108b3b7301610730cd47d596986eb5ea9d4b7a34247edde7bd1d212494e
MD5 67cee33767b50e1fe1a752986376afce
BLAKE2b-256 190d25392619466da61790a20c48ce9e099489563f9e76bb9a8dc88fba337c3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8de7eef0106c7b919cecb90494325576c4587ad3f98bc23da3a400ce999340e2
MD5 8d9197e5c8f62ef9ec0ea985fa3172ae
BLAKE2b-256 8db55d76bd6d6669eb65f1e561a8117006194713fc41930bbeec4d9519969df5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39b2ef6dad44dbe6b85844d5489157dea70b6e3e7a6e8f807eec27e5cb79dbca
MD5 1db7367373dd268645398ffd7d208983
BLAKE2b-256 91dd280cf75773cdf7b64f68e843e760fa9c3b75c7f39124a26b145536cbb23c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d2dd6d0b4655571d36a850c9f7a10bdb8582929e4f7e5c23ce2b0b5fa5f22fe9
MD5 2a4f55774975507e529c13ef26b16be1
BLAKE2b-256 0a7f0658081d2dc81875376a271200858b3a173808179748a8912597213b46c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d2aacb2004d15b1ced0669044a5187cc02d6010036409adaba9d952f012631c
MD5 a81028c0738074bd2f94e008ec493c65
BLAKE2b-256 a81bf76d51385a22b0d4fe8e8a8ffb8b9b9be7f6578267283103690cfae3e0c0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fdab9fe811260188134da4cdb5f92a4c6945a6fbf8f76d17cb88f87eaead6e55
MD5 6aec81f18ebd1da84f0e3b3fe83ef3ad
BLAKE2b-256 1061f34e834c61424e0ff7e4b979cc7f73bcdf68d1f9db809805ba2d51a5e7cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 151e1b1a17de1902663935eaca2b5b80a8acac21261e57fb3cbaa4ec723e02bf
MD5 0d660ebb6babf0a40b33ed6c70b417ca
BLAKE2b-256 6741d4ee10fe919e312bec5a886a7647ff2c3fc2b330bb65f268411b6891c72f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09e74a73a4df5546eb7a22f2cfe982f316247e2ee8352cfa27a952fbc23a6220
MD5 44287e2dc84d5823e6bc5f2d55a8778d
BLAKE2b-256 c3a902f0fd92cf77a61e4143a507afca43451289c5405fd4aff94cf98caf90df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 62f93738aea57347545979b886d9fadb72d9c13781d72950f6f3b2a669e9fe7c
MD5 de7dfc1103994df2b2b89d270fd6784e
BLAKE2b-256 ccffe0eaf2b21c9cc21d025ddd715a59fb80103c00ccbb79377737d6525218b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed3ab3e4d7998e4d84a15bf58f9a2b78c41b1cfefc14ffae7eef2c4efa95a2de
MD5 cf1471db1b2cda040e439abbed169477
BLAKE2b-256 57a676bd5226d3e1042dd8fd81867c623eaafc7d4ce640b3740e8583d8f65949

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7957d35394f8db8df3aa4a8d026ecefd095d04ffdea56f437de4649dc32f52a5
MD5 b2fe185da5f67477a65367d35b040d55
BLAKE2b-256 96bcb6922256c3f47a9a200d130c04e8caa59c173280aa2bcade9fb2a357073e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 64779b393c4903bae1b79c66c9c21bc68f8ff9610994a3ac1b25c8e21437714e
MD5 00df199847b2f2310d87dc87eea1d0e6
BLAKE2b-256 d0d8a6dc1d49a659d670325a18cc5dff25a0a3acf513552b7308b8f46651fa60

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd7d4ffa2650d19d28d4982427adf234a7d2da6e1c302a18a39797a0733fd2c9
MD5 c03790fe492128c489139ad988d39f64
BLAKE2b-256 767aab44f94240ad9251b3b84047bfb8d76c0f1a7bba4ed6bf985b7fc9f0891d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 346342849b9c176d9af5a6bbbdb6737f7e983fff215d6c74284a748bb105e3f9
MD5 b4bd3577b0fe2fda0201d89bc99b29c4
BLAKE2b-256 76edbd74e937f6d03d73ba8cdb76ce80f51ef9f856b7c4ab1cbb562a22cbab02

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 acdc4c7cbcab57a8a4c88986c947affe1997656958f24b8dd9332ffc3ee8b7e7
MD5 7a048e44c518faf89b21ac9711c9699f
BLAKE2b-256 6d85cefeedf31d28c857f067e626aab5500d24e41eedca00dc7ca3c7611a0185

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pytrilogy-0.3.149-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7cd66ccad891a79033957c8ae83d49cefc1b47c599cdc41ad38166ed1ed0ab19
MD5 f7e6303ff6d1806561c8826799b990f5
BLAKE2b-256 392fb72d83d03e46d9361c7ecc279ab4f1678681fce1dfc40c26313deae75cd2

See more details on using hashes here.

Provenance

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