Skip to main content
Synalog

Beta PyPI Downloads Discord CI Documentation License: Apache-2.0

Synalog

Logic programming for AI agents: Datalog-family language compiling to optimized SQL

Synalog is a logic programming language from the Datalog family, a fork of Logica with the entire engine (parser, compiler and verifier) rewritten in Rust. It compiles to optimized SQL and ships as a Python package built on PyO3: parsing is ~86.7x faster and compilation ~13.7x faster than the original Python implementation, so validating and compiling a program is effectively instant.

Synalog was built for the AI agents era. The main idea is to give an agent a dynamic semantic layer over its data: a layer of named concepts and rules that the agent both reads from and writes to at inference time. Unlike a traditional BI semantic layer, which is modeled once by humans and frozen, Synalog's layer is authored on the fly: the agent extracts entities and relationships into knowledge graphs, derives meaning with composable logical rules, and reasons over time with temporal reasoning: accumulating all of it as structured, reusable memory.

New here, or deciding whether this belongs in your stack? Why Synalog makes the case in business terms, including the trade-offs and the cases where another tool wins.

What the agent gains

A raw table is just rows; an agent has to re-interpret what they mean on every query. Synalog turns that meaning into a layer the agent owns:

  • A shared vocabulary over raw tables: instead of re-deriving "who is an active customer" or "what counts as revenue" in every query, the agent defines it once as a named concept and reuses it everywhere. The semantic layer is the agent's interface to the data.
  • Instant knowledge-graph construction from raw tables: a handful of entity and relationship concepts turn existing relational tables into a traversable knowledge graph, with no ETL pipeline, no separate graph database, and no data movement. The graph is virtual: it compiles to SQL that runs directly on the source tables.
  • Knowledge graphs the agent can traverse: model entities and relationships as concepts, then follow connections (composition, inverse, symmetric, recursive chains) without writing fragile join logic. See Knowledge graphs.
  • Recursion and transitive reasoning: transitive closures and graph traversals (org charts, taxonomies, bills of materials, referral chains, shortest paths) that are impossible to write correctly in raw SQL come out as a base case plus a recursive case, with the verifier guaranteeing termination.
  • Logical rules that compose: rules build on other rules, so knowledge accumulates instead of being re-derived. Complex questions decompose into small named predicates the agent can inspect, reuse, and combine.
  • Temporal reasoning: time-aware rules and edges (validity windows, "active today", overlap, point-in-time joins) let the agent answer when, not just what. That kind of reasoning is notoriously error-prone to express directly in SQL.
  • Dynamic, not static: the layer evolves as the agent learns. New rules extend the vocabulary at runtime; the rule base itself becomes the agent's long-term memory over structured data.
  • Auditable reasoning: every derived fact traces back through named rules, giving full lineage from answer to source tables.
  • Compile-time verification: a formal verifier catches structural errors before any SQL touches a database, so a self-authored rule that parses but is unsound is rejected up front. See Verification.
  • A fast Rust engine: check and compile sit inside the agent's inner loop (every generated rule is validated, every query compiled, often several times per step). The Rust core makes that loop cost milliseconds instead of seconds. See Benchmark.

Because SQL engines are better optimized than logic programming engines, Synalog compiles into optimized SQL that runs on SQLite, DuckDB, BigQuery, PostgreSQL, Presto, Trino and Databricks: efficiently scaling to petabytes of data. See Supported engines.

Full documentation: https://synalinks.github.io/synalog/

At a glance

import duckdb
import synalog

source = """
@Engine("duckdb");

Employee(name: "Alice", department: "Engineering", salary: 75000);
Employee(name: "Bob", department: "Marketing", salary: 65000);
Employee(name: "Charlie", department: "Engineering", salary: 80000);

@OrderBy(EngineeringTeam, "name");
EngineeringTeam(name:, salary:) :- Employee(name:, department: "Engineering", salary:);
"""

errors, warnings = synalog.check(source)
assert errors == []

sql = synalog.compile(source, "EngineeringTeam")
rows = duckdb.sql(sql).fetchall()
# [('Alice', 75000), ('Charlie', 80000)]

Installation

pip install synalog

Or with uv: uv add synalog (or uv pip install synalog). The CLI also runs without installing via uvx synalog.

Requires Python 3.10+. Wheels are published for Linux (x86_64, aarch64, armv7, s390x, ppc64le; glibc and musl), Windows (x64, x86, aarch64) and macOS (x86_64, aarch64).

Add the skill to your coding agent

Synalog ships an Agent Skill, a SKILL.md that teaches a coding agent the language, the CLI and the conventions, so it writes and runs programs correctly. It follows the open Agent Skills standard, so it works with Claude Code, Cursor, Codex, OpenCode, Cline, Windsurf and 70+ other agents. Install it with the skills CLI (GitHub is the registry, so there is nothing to publish or install first):

npx skills add SynaLinks/synalog              # this project (./.claude/skills, ./.agents/skills, …)
npx skills add SynaLinks/synalog -g           # user-wide (~/.claude/skills, …)
npx skills add SynaLinks/synalog -a cursor codex   # only specific agents

The skill is maintained in this repo at skills/synalog/SKILL.md; npx skills add copies it into the right place for each agent.

Command-line interface

Installing the package also installs a synalog command (also available as python -m synalog):

synalog program.l print Predicate      # print compiled SQL
synalog program.l run Predicate        # execute and print a table
synalog program.l run Predicate --csv  # execute and print CSV

Both print and run validate the whole program first and exit 1 with the verifier's errors if it is invalid, so verification always happens before any SQL is produced or executed.

$ synalog program.l run EngineeringTeam
+---------+--------+
| name    | salary |
+---------+--------+
| Alice   | 75000  |
| Charlie | 80000  |
+---------+--------+
2 rows
  • - as the file reads the program from stdin; -c PROGRAM passes the program text inline, like python -c.
  • --engine overrides the program's @Engine annotation (default duckdb).
  • --limit / --offset paginate the result.
  • --csv (with run) prints results as CSV instead of the rendered table.
  • --search REGEX (with print/run) keeps only rows where some column matches the regular expression REGEX, e.g. synalog program.l run Customers --search "(?i)acme". In the interactive session the same is .search Customers (?i)acme.
  • run executes on duckdb (the default), sqlite (stdlib) or psql (in a project connected to it) out of the box: synalog depends on duckdb and on psycopg with its bundled libpq, on macOS and Linux alike. For other engines, install their driver (pip install 'synalog[trino]', ...) or use print and run the SQL with your own client.
  • import path.to.file.Pred; statements resolve path/to/file.l against the program file's directory, then the current directory; pass --import-root DIR (repeatable) to search elsewhere.
  • --load TABLE=PATH (repeatable) loads a csv/tsv/json/jsonl/parquet file as a table before running, e.g. synalog senior.l run Senior --load employees=employees.csv.

Projects: layer.toml

A folder with a layer.toml is a project. Its [connection] says which database its programs run on, as plain fields — commit it:

[connection]
engine = "psql"
host = "db.example.com"
port = 5432
database = "sales"
user = "analyst"
schema = "public"

Secrets never go in the file (synalog refuses it): each comes from the environment as SYNALOG_<ENGINE>_<FIELD> — SYNALOG_PSQL_PASSWORD, SYNALOG_DATABRICKS_ACCESS_TOKEN, or GOOGLE_APPLICATION_CREDENTIALS for BigQuery — usually from the project's .env, kept out of git. Inside the project (from the program's folder or the current directory, and their parents), run, print and verify use that engine and connection, imports resolve from the project's folder, and synalog introspect writes the project's tables/, one file per table of the database. The project's file is the only place a connection comes from; --engine and an @Engine annotation choose the dialect, and a remote engine runs only through the project's connection to it. synalog connect <engine> key=value ... writes it — the non-secret fields to layer.toml, the secret ones to .env — synalog connect shows it (secrets hidden), synalog connect clear removes it. The fields of every engine are in synalog.project.ENGINES.

Running synalog with no arguments starts an interactive session, in the spirit of python (the options above, e.g. --engine or --load, apply to it too):

$ synalog
Synalog 0.1.0 on duckdb, type .help for help
>>> Employee(name: "Alice", salary: 75000);
>>> Employee(name: "Bob", salary: 65000);
>>> Total(t? += salary) distinct :- Employee(salary:);
>>> Total
+--------+
| t      |
+--------+
| 140000 |
+--------+
1 row

Type a rule ending in ; to add it to the session program (it is validated first, and rejected with an error if invalid), or a predicate name to compile and run it. .help lists the session commands (.show, .sql <Pred>, .engine <name>, .load <table> <path>, .clear, .exit).

Quick start

import synalog

source = """
@Engine("duckdb");

Employee(name: "Alice", department: "Engineering", salary: 75000);
Employee(name: "Bob", department: "Marketing", salary: 65000);
Employee(name: "Charlie", department: "Engineering", salary: 80000);

@OrderBy(EngineeringTeam, "name");
EngineeringTeam(name:, salary:) :- Employee(name:, department: "Engineering", salary:);
"""

errors, warnings = synalog.check(source)
assert errors == []

sql = synalog.compile(source, "EngineeringTeam")
print(sql)

You can then execute the SQL with any database driver (sqlite3, duckdb, psycopg, google-cloud-bigquery, etc.).

Python API

parse(source, file_name=None, engine=None, import_root=None) -> str

Parse source and return the AST as a JSON string.

ast = synalog.parse(source)

compile(source, predicate, limit=None, offset=None, engine=None, import_root=None) -> str

Compile a single predicate to SQL. limit is combined with the @Limit directive: actual = min(limit, @Limit).

sql = synalog.compile(source, "TopCustomers", limit=20, offset=40)

search(source, predicate, pattern, limit=None, offset=None, engine=None, import_root=None) -> str

Compile a predicate to SQL that keeps only rows where some column matches the regular expression pattern (the per-column conditions are OR-ed, each column cast to text). The regex is evaluated by the target engine's native operator (~ on PostgreSQL, REGEXP on SQLite, regexp_matches on DuckDB, REGEXP_LIKE elsewhere). It is not a SQL LIKE pattern. limit/offset apply to the filtered rows.

sql = synalog.search(source, "Customers", "(?i)acme", limit=20)

compile_all(source, engine=None, import_root=None) -> dict[str, str]

Compile every defined predicate in the program. Returns a mapping predicate_name -> sql.

sqls = synalog.compile_all(source)
for name, sql in sqls.items():
    print(name, sql)

execute(source, predicate, engine=None, project=None, import_root=None, limit=None, offset=None, pattern=None, assertion=None, loads=()) -> tuple[list[str], list[tuple]]

Run a predicate on its database (the program's or project's engine and connection) and return (columns, rows). Each recursion stops as soon as a step changes nothing, so it costs the steps its data needs, and @Recursive(P, -1) (until nothing changes) runs on every engine. plan() returns the same steps for a host that runs them itself.

columns, rows = synalog.execute(source, "TopCustomers", limit=20)

check(source, engine=None, import_root=None, assertions=True, project=None) -> tuple[list[str], list[str]]

Run structural validation. Returns the error messages and the warning messages, as two lists. The program is valid when there is no error; warnings do not make it invalid. Inside a project whose layer.toml has a [connection] — the current directory's, or the folder project names — it also runs the program's @Assert statements against the database and reports each violated one as an error; assertions=False keeps it offline.

errors, warnings = synalog.check(source)
if errors:
    for e in errors:
        print(e)

All of these functions accept an optional engine keyword that overrides the program's @Engine annotation (one of sqlite, duckdb, bigquery, psql, presto, trino, databricks; default duckdb) and an optional import_root keyword listing directories where import statements look up .l files (default: the current directory). They raise ValueError on syntax or compilation errors.

Language overview

A Synalog program is a project: a folder with a layer.toml, holding one predicate per file in three folders, the layout of semantic layers:

shop/
├── tables/orders.l               # the data: one file per database table
├── concepts/customer.l           # entities and relationships extracted from tables
├── rules/customer_revenue.l       # insights derived from concepts
├── rules/top_customers.l
└── layer.toml                    # the project's name, description and database

Each file is named after its predicate and opens with front matter (name, the predicate; description, what its rows are), then imports what it builds on by folder, file and predicate, then orders its predicate with @OrderBy. A database table is referenced by its lowercase database name in tables/, and everything else builds on the PascalCase predicate that maps it:

tables/orders.l

---
name: Orders
description: One row per order, with its customer, amount and status.
---
@OrderBy(Orders, "order_id");
Orders(order_id:, customer_id:, amount:, status:) :-
  orders(order_id:, customer_id:, amount:, status:);

concepts/customer.l

---
name: Customer
description: Every customer who placed at least one order.
---
import tables.orders.Orders;

@OrderBy(Customer, "customer_id");
Customer(customer_id:) distinct :- Orders(customer_id:);

rules/customer_revenue.l

---
name: CustomerRevenue
description: Total amount ordered by each customer, all statuses included.
---
import concepts.customer.Customer;
import tables.orders.Orders;

@OrderBy(CustomerRevenue, "customer_id");
CustomerRevenue(customer_id:, total? += amount) distinct :-
  Customer(customer_id:), Orders(customer_id:, amount:);

Imports resolve from the project's folder, so every file runs on its own: synalog rules/customer_revenue.l run CustomerRevenue. The snippets below show the language itself, one rule at a time.

Named arguments

Synalog uses named arguments only (no positional arguments). The left side of : is the column name, the right side is the variable:

# column "amount" bound to variable "total"
Orders(amount: total)

# shorthand: column and variable share the same name
Orders(amount:)

Variables and expressions

Variables are defined with ==. Arithmetic, string and comparison operators are supported:

OrderWithTax(order_id:, total:) :-
  Orders(order_id:, amount:),
  total == amount * 1.10;

Operators: +, -, *, /, ^ (power), % (modulo), ++ (string concat), ==, !=, <, >, <=, >=, &&, ||, !, in, is null, is not null.

Aggregation

Aggregation uses the distinct keyword and special operators in the rule head:

# Sum
Revenue(total? += amount) distinct :- Orders(amount:);

# Count
OrderCount(n? += 1) distinct :- Orders(order_id:);

# Min / Max
Cheapest(min_price? Min= price) distinct :- Products(price:);
Priciest(max_price? Max= price) distinct :- Products(price:);

# Average
AvgOrder(avg? Avg= amount) distinct :- Orders(amount:);

# Collect into list / set
AllNames(names? List= name) distinct :- Users(name:);
UniqueNames(names? Set= name) distinct :- Users(name:);

# Value with max/min key
TopSeller(name? ArgMax= name -> revenue) distinct :- Sales(name:, revenue:);

Logical operators

# Conjunction (AND), comma
Result(x:, y:) :- TableA(x:), TableB(x:, y:);

# Disjunction (OR), pipe
Combined(x:) distinct :- SourceA(x:) | SourceB(x:);

# Negation (NOT), tilde
Inactive(user_id:) :- Users(user_id:), ~Logins(user_id:);

Multiple rule definitions for the same predicate combine results (union):

HighValue(user_id:) :- Orders(user_id:, amount:), amount > 10000;
HighValue(user_id:) :- Referrals(user_id:, tier: "vip");

Conditionals

OrderSize(order_id:, size:) :-
  Orders(order_id:, amount:),
  size == (if amount > 1000 then "large"
           else if amount > 100 then "medium"
           else "small");

Directives

Directives control predicate behavior and must be placed before the rule definition:

@OrderBy(TopCustomers, "total", "DESC");
@Limit(TopCustomers, 10);
TopCustomers(customer_id:, total? += amount) distinct :- Orders(customer_id:, amount:);
Directive Purpose
@OrderBy(Pred, col1, ...) Sort order. Append "DESC" for descending
@Limit(Pred, n) Maximum number of rows
@Recursive(Pred, n) Allow recursion with iteration limit
@Ground(Pred) Force materialization before dependents
@Engine(name) Target SQL engine

Functors

Functors let you reuse predicate logic by parameterizing input predicates:

# Define a reusable pattern
@OrderBy(SegmentRevenue, "segment_id");
SegmentRevenue(segment_id:, total? += amount) distinct :-
  Segment(segment_id:, user_id:),
  Orders(user_id:, amount:);

# Apply to different segments
EnterpriseRevenue := SegmentRevenue(Segment: EnterpriseCustomers);
SMBRevenue := SegmentRevenue(Segment: SMBCustomers);

Recursion

Recursive predicates compute transitive closures, for example finding all managers above an employee:

@Recursive(AllManagers, 20);

# Base case: direct manager
AllManagers(employee_id:, manager_id:) :- Employees(employee_id:, manager_id:);

# Recursive case: manager's managers
AllManagers(employee_id:, manager_id:) :-
  AllManagers(employee_id:, manager_id: intermediate),
  Employees(employee_id: intermediate, manager_id:);

Useful for: referral chains, org charts, product taxonomies, bill of materials.

Shortest paths

Find shortest paths in weighted graphs by enumerating route costs recursively, then keeping the minimum per destination with a Min= aggregation:

# Enumerate route costs from the origin, hop by hop.
@Recursive(RouteCost, 10);
RouteCost(destination:, cost:) :-
  ShippingRoutes(origin: "warehouse_main", destination:, cost:);
RouteCost(destination:, cost: total) :-
  RouteCost(destination: hub, cost: hub_cost),
  ShippingRoutes(origin: hub, destination:, cost:),
  total == hub_cost + cost;

# Keep the cheapest cost per destination.
@OrderBy(ShippingCost, "destination");
ShippingCost(destination:, total? Min= cost) distinct :- RouteCost(destination:, cost:);

Temporal data

When working with timestamps or dates, always convert to string first:

@OrderBy(MonthlyOrders, "month");
MonthlyOrders(month:, count? += 1) distinct :-
  Orders(created_at:),
  month == Substr(ToString(created_at), 1, 7);

# Filter by date range
RecentOrders(order_id:) :-
  Orders(order_id:, created_at:),
  ToString(created_at) >= "2024-01-01";

Today(date:) (today's date as "YYYY-MM-DD") and Now(timestamp:) (the current instant as the engine's native timestamp) are built-in concepts. They are inlined per dialect by the compiler, with no runtime table needed, so they work on every engine. Now is the most precise value; derive coarser parts (date, time, hour) from it through the ToString → Substr pipeline. Join against Today whenever a rule needs "today":

@OrderBy(ThisMonthOrders, "order_id");
ThisMonthOrders(order_id:, created_at:) :-
  Orders(order_id:, created_at:),
  Today(date:),
  Substr(ToString(created_at), 1, 7) == Substr(date, 1, 7);

They are reserved names: you cannot redefine, extend, or update them.

Knowledge graphs

Entities and relationships become node and edge concepts, and rules traverse them. Edges join through the node concepts rather than the raw table, so a filter on a node applies to every edge built on it:

@OrderBy(Person, "person_id");
Person(person_id:, name:, profile_url:) distinct :- Employees(person_id:, name:, profile_url:);

@OrderBy(WorksIn, "person_id");
WorksIn(person_id:, department_id:) distinct :-
  Person(person_id:),
  Department(department_id:),
  Employees(person_id:, department_id:);

Relationships with a lifetime carry it as a half-open interval [valid_from, valid_to), using "9999-12-31" as the open end so ISO strings compare correctly, and Today supplies the clock for point-in-time questions:

@OrderBy(CurrentEmployment, "person_id");
CurrentEmployment(person_id:, company_id:, role:) distinct :-
  EmployedAt(person_id:, company_id:, role:, valid_from:, valid_to:),
  Today(date:),
  valid_from <= date, date < valid_to;

Node and edge patterns, temporal modeling, point-in-time queries and time-respecting traversals are covered in Knowledge graphs.

Built-in functions

String: Substr, Length, Upper, Lower, Split, Join, Like, Format

Array: Size, Element, ArrayConcat, Range

Math: Abs, Floor, Ceil, Round, Sqrt, Log, Exp, Sin, Cos

Type casting: ToInt64, ToFloat64, ToString

Other: Coalesce, IsNull

Built-in concepts: Today(date:) is today's date as "YYYY-MM-DD"; Now(timestamp:) is the current instant as a native timestamp (see Temporal data above).

Supported engines

Engine @Engine value Notes
DuckDB duckdb Default engine
SQLite sqlite
PostgreSQL psql
BigQuery bigquery
Trino trino
Presto presto
Databricks databricks Double-quoted string literals

Each engine has its own SQL dialect for string literals, array syntax, GROUP BY style, record construction, regex matching, and standard library functions.

Benchmark

The Rust core is benchmarked against the original Python Logica implementation on every program of the compiler test suite (504 programs across 6 engines). Both run in-process: Synalog through the same PyO3 extension that pip install synalog ships, so the numbers measure exactly what a Python caller gets:

Python Logica Synalog (Rust) Speedup
Parse 13.4 s 0.15 s 87x
Compile 61.3 s 5.2 s 13x
Verify n/a 0.16 s Rust-only

Synalog vs Python Logica: speedup by SQL engine

Speedup is the geometric mean of per-program speedups (every program weighted equally). Parsing is uniformly ~85x to ~88x faster; compilation ranges from ~11x (trino, presto) to ~19x (duckdb). Verification (safety, stratification, recursion and reserved-name checks) is a Synalog-specific pass with no standalone Python equivalent. Per-engine tables and methodology are on the Benchmark page; reproduce with python3 benchmark.py.

Verification

Unlike Logica, which lets the database raise errors at execution time, Synalog embeds a formal verifier that catches issues at compile time.

Check What it detects
Safety Head variables not bound in the body
Safe negation Negated variables without a positive occurrence
Safe aggregation Aggregated variables not bound outside the aggregate
Stratification Negative recursion cycles
Arity Predicates used with inconsistent argument counts
Recursion Missing base cases, trivial loops, unbounded recursion without @Recursive
Reserved names Rules that redefine a built-in library predicate (Num, Str, ArgMin, Today, Now, ...)
Unsafe SqlExpr User rules that reach for the raw-SQL escape hatch

The algorithms behind the stratification and recursion checks, the compiler's unfolding of mutual recursion, the order a compiled program's tables run in, the contradiction warning, pagination, the quoting of text into SQL and the Cast type-name check are proved correct with Verus. See Verification.

errors, warnings = synalog.check(bad_source)
for e in errors:
    print(e)
# Unbound variable 'y' in head of rule: Test(x:, y:) :- Numbers(x:)

Differences with Datalog and Logica

Named attributes only

Synalog doesn't support positional attributes like Logica or Datalog: it only uses named attributes, which reduce agent mistakes. This feature is optional in Logica; we made it mandatory.

In Synalog, the compiled SQL uses actual column names, not col{i} format, making it compatible with existing database schemas.

Pagination

Pagination is critical for AI agents with limited context windows. It also avoids loading large amounts of data into memory, enabling use on memory-constrained cloud infrastructure.

Synalog applies pagination at compile time via the limit and offset arguments of compile(). The limit is combined with the @Limit directive: actual_limit = min(limit, @Limit).

Compile-time verification

Synalog embeds a formal verifier that catches structural errors before any SQL is generated. This prevents agents from producing programs that parse correctly but fail at execution time, a common failure mode when working with SQL directly.

Building from source

The project uses maturin to build the Python wheel from the Rust crate.

pip install maturin
maturin develop --release    # install into the active venv
maturin build --release      # produce a wheel in target/wheels/

Run the Rust test suite:

cargo test

Run specific test groups:

cargo test --lib                        # unit tests
cargo test --test compiler_tests        # compiler golden tests (all engines)
cargo test --test parser_tests          # parser golden tests (all engines)
cargo test --test verifier_tests        # verifier tests (all engines)
cargo test --test search_tests          # search feature tests (all engines)
cargo test --test verus_proofs          # the Verus proofs of verified/ (shell/install-verus.sh installs Verus)

Tests

cd synalog
./shell/test.sh

Credits

Synalog is a fork of Logica, the logic programming language created by Evgeny Skvortsov and the Logica team at Google LLC. The parser, compiler, and type-inference engine were rewritten in Rust, but the language design, semantics, and a large part of the algorithms originate from their work. Synalog would not exist without it, heartfelt thanks to the Logica authors for their amazing work.

Files derived from Logica carry an // Original work: Copyright 2020 Google LLC header and a note describing the modifications, as required by the Apache License 2.0.

License

Synalog is licensed under the Apache License, Version 2.0 see LICENSE and NOTICE.

  • Original Logica work: Copyright 2020 Google LLC, licensed under Apache 2.0.
  • Modifications and new code: Copyright 2025-2026 Yoan Sallami (Synalinks Team), licensed under Apache 2.0.

Metadata

Release files for synalog 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for synalog 2.3.0
File Size Uploaded Provenance
synalog-2.3.0.tar.gz 1.1 MB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for synalog 2.3.0
File
synalog-2.3.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
synalog-2.3.0-cp314-cp314t-win32.whl CPython 3.14 CPython 3.14 free-threading Windows x86-32 Details
synalog-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
synalog-2.3.0-cp314-cp314t-musllinux_1_2_i686.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32 Details
synalog-2.3.0-cp314-cp314t-musllinux_1_2_armv7l.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARMv7l Details
synalog-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
synalog-2.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
synalog-2.3.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ IBM System/390x Details
synalog-2.3.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ PowerPC 64-le Details
synalog-2.3.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l Details
synalog-2.3.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
synalog-2.3.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.5+ x86-32 Details
synalog-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
synalog-2.3.0-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
synalog-2.3.0-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
synalog-2.3.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
synalog-2.3.0-cp310-abi3-win32.whl CPython 3.10 abi3 Windows x86-32 Details
synalog-2.3.0-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
synalog-2.3.0-cp310-abi3-musllinux_1_2_i686.whl CPython 3.10 abi3 Linux musl 1.2+ x86-32 Details
synalog-2.3.0-cp310-abi3-musllinux_1_2_armv7l.whl CPython 3.10 abi3 Linux musl 1.2+ ARMv7l Details
synalog-2.3.0-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
synalog-2.3.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
synalog-2.3.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl CPython 3.10 abi3 Linux glibc 2.17+ IBM System/390x Details
synalog-2.3.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.10 abi3 Linux glibc 2.17+ PowerPC 64-le Details
synalog-2.3.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.10 abi3 Linux glibc 2.17+ ARMv7l Details
synalog-2.3.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
synalog-2.3.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.10 abi3 Linux glibc 2.5+ x86-32 Details
synalog-2.3.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
synalog-2.3.0-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 46.0 MB

Release files / synalog-2.3.0.tar.gz

Download URL synalog-2.3.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
26b8318bd1d713abc51b2e2ef648c49bc138e2c10b2bb02907424fdb4ee2c5d2
BLAKE2b-256 checksum
How to use checksums
c7c523975e27debc8b19de53ce6562f594d32a02c4a51730298d94426427bde3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-win_amd64.whl

Download URL synalog-2.3.0-cp314-cp314t-win_amd64.whl
Size 1.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
3cacb358b220158ded733fda185b5c1a38775cc58fc573a8ad3dae9a721d0240
BLAKE2b-256 checksum
How to use checksums
87f89e9932a0ae5cf501cc48812dc970278980156b79ac3d36ebe4dd26d07fbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-win32.whl

Download URL synalog-2.3.0-cp314-cp314t-win32.whl
Size 1.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-32
SHA-256 checksum
How to use checksums
943f375412bd9a318c7875093a1711d18e2ffc1014fd46a1674369e05d3e790d
BLAKE2b-256 checksum
How to use checksums
22f8787451ea2980cbd288f9f3a1c191789c259d16c1395c2b8a75a41205271c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL synalog-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 1.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5d6fabb531f3b5e6f695df3d798647099bfe16057d0954984f6b7b4294207edb
BLAKE2b-256 checksum
How to use checksums
6611047bbba4284afca1add8cdc1af6177225e836ef6b8c94c7664babef78390
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-musllinux_1_2_i686.whl

Download URL synalog-2.3.0-cp314-cp314t-musllinux_1_2_i686.whl
Size 1.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
33676bc21e091560b2f496ccc3172e205332cf3bd23f7d50a72110c794094469
BLAKE2b-256 checksum
How to use checksums
af58f36eb372d5009e86b7d76234f39d0a4e8aa41ef0624a19905a4eb0d6f4ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-musllinux_1_2_armv7l.whl

Download URL synalog-2.3.0-cp314-cp314t-musllinux_1_2_armv7l.whl
Size 1.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARMv7l
SHA-256 checksum
How to use checksums
8c73e966450fa6496b1090682e3166f700eb64bc413e0bf45956dc3578cbb4e2
BLAKE2b-256 checksum
How to use checksums
63fcf69c87f5a41c45f74faf9dad2aaa2aab210711d7d7b181cf509d536fcfba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL synalog-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 1.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
79b04c5886e0646e37241dadd264d009897d687749395bd81a21447c33e8545f
BLAKE2b-256 checksum
How to use checksums
0338a47a88e97c056043e324096f1e5ef6e62812efee47c883336b05016475ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL synalog-2.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
51cd12cf7095732fdffe5cba3f86d96dad4cb058dd8e99293acada5a78cb4cea
BLAKE2b-256 checksum
How to use checksums
b19874f719d0869cbffb5a611a252918ccb208ac58c52b47ba2eb1343d648739
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL synalog-2.3.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 1.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ IBM System/390x
SHA-256 checksum
How to use checksums
89c47ee9e34f52ca97acf43c50e26b0ec4f3f92453d097b4a6261917f1d78ce8
BLAKE2b-256 checksum
How to use checksums
57aa5f4009aca5e4c8282ce0cea365dc380051adbcffa610aeced28273c1d66e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL synalog-2.3.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 1.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ PowerPC 64-le
SHA-256 checksum
How to use checksums
83783d5ee61802ac698e31a61ac2671ee2903d046fe9be7a240f9b3f49a873ba
BLAKE2b-256 checksum
How to use checksums
5776a854947816f06f29b3549da97910d54e322c8b78452879cfb113af902646
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL synalog-2.3.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 1.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
f62ca936907877c97a06a7a2efe0ab4cfe6356d4fb34ff8255c2d7d682096a92
BLAKE2b-256 checksum
How to use checksums
30bfe1f3a785c1bd97533779a53264a40f9ac340ec46d9d49d13fe8b61415e6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL synalog-2.3.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2963dd8f1be6d3acde1953b096e7273bba791c0b3c82567d292284ba01ae0909
BLAKE2b-256 checksum
How to use checksums
fda5f3454ab2ec568098f71b87d512a08c645cce00770b78c3ff11a666f2865c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl

Download URL synalog-2.3.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
04ca9adcd8c4a9c3600547784e11072babed17cdc2d4ad408b690a080b5e61e9
BLAKE2b-256 checksum
How to use checksums
b0eff4ba17f1896e01481611f788eb4f9c6b6d1491df2955294ff5474c6d47e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL synalog-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
46439c80dfdbb46d06f56aa554ffe4b4375946e6acf088cdca80ebea4344da08
BLAKE2b-256 checksum
How to use checksums
a7f6fc6cfe7409b267e0e9ab8ab161d8e227b60953ece78ac7f3d4fffb50e8cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL synalog-2.3.0-cp314-cp314t-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
0c475834e2e57a1bd071db6ee19fee6371fb219671b2be5153870d5be49aedaa
BLAKE2b-256 checksum
How to use checksums
32b4ae74c0350fe05ad6fd1c574f8c60cbe107b7e5781ab10c08a4506e740cfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-win_arm64.whl

Download URL synalog-2.3.0-cp310-abi3-win_arm64.whl
Size 1.3 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
080cf804fdaa220bf0e2d04453b3fc575a810efdde1dfc17d24f0015e1bccf40
BLAKE2b-256 checksum
How to use checksums
517c667e11781f1a5050446d3571fd2c6f649c8c895397728c896410c5a4239b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-win_amd64.whl

Download URL synalog-2.3.0-cp310-abi3-win_amd64.whl
Size 1.4 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e43d7ff6f28a9d263a0ecc134a1de9ae1381d0c02b520c73c040b81cfcdc269c
BLAKE2b-256 checksum
How to use checksums
074f7d8b371728bb824299943444842b61fd60d4c36a8f43c5b608ee13cfaaf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-win32.whl

Download URL synalog-2.3.0-cp310-abi3-win32.whl
Size 1.3 MB
Tags CPython 3.10 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
1105098c74afd3a1084c7d9fead835918c1f66d94704d1b7b3e880d48ef649ac
BLAKE2b-256 checksum
How to use checksums
0549c590d96659cca9b403582d64cb2089aa61ec5b09d7d4bdfaaf6e58232f68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL synalog-2.3.0-cp310-abi3-musllinux_1_2_x86_64.whl
Size 1.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
ee321c1fa333b4fc54eb6a66631ed58372d37325345af7b015d2de378de77c4a
BLAKE2b-256 checksum
How to use checksums
ee66b52cb68ceb0c8c967eb13c3794783db81ddbf5ae636bc03a1b994c8b2f39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-musllinux_1_2_i686.whl

Download URL synalog-2.3.0-cp310-abi3-musllinux_1_2_i686.whl
Size 1.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
3437fd44d7106f1821b84d3616beead1dd9e3176f9a57dd02f3f7ccf9cd0e5bc
BLAKE2b-256 checksum
How to use checksums
eede4f72d08ec340ec9e6a699c4f47efcefae9b8fecaade582578f88d310a0b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-musllinux_1_2_armv7l.whl

Download URL synalog-2.3.0-cp310-abi3-musllinux_1_2_armv7l.whl
Size 1.8 MB
Tags CPython 3.10 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
9ee3070c85278c0ed1f160724047b94382fe0e7c5e23915aae4d58e724317aa0
BLAKE2b-256 checksum
How to use checksums
11f9152c0684c8cc84e0b1601b8cd27083d35e19d7e87a2e709e71daee1b30d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL synalog-2.3.0-cp310-abi3-musllinux_1_2_aarch64.whl
Size 1.6 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
84342d1214e168be0ed629d8d9944af7a776bef41187971dd6b16ec487af80b1
BLAKE2b-256 checksum
How to use checksums
47ceebf240f29402dcaa4d6db32e45538d0151777cb4faa2b825cfc07dbbafc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL synalog-2.3.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
1ce08537b19ba435c1352546a870c07fd4fb12c57eabaa904615b334e7590ed6
BLAKE2b-256 checksum
How to use checksums
4bed60a881f9482302f4316db6946f32bf8bd5fe0870d23753394a4aef33eedd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL synalog-2.3.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.17+ IBM System/390x abi3
SHA-256 checksum
How to use checksums
897621f4c8b808db77e9d6fcf3a7cc7599802d81aa17a9d666e30243a9480da7
BLAKE2b-256 checksum
How to use checksums
7e6a9619bfc18eac8c88b8701d33821ba1d8f4b2064d346d8ef6fc3c184d95d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL synalog-2.3.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.17+ PowerPC 64-le abi3
SHA-256 checksum
How to use checksums
a1d34e8997b06bcc2185b776327b8750e4639f6f092a11fa691e0ccf01a3fa6a
BLAKE2b-256 checksum
How to use checksums
bb95b4609560fe062bf7f5cdfc1553c9f399e34d312e0e1f4b25396df5747bda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL synalog-2.3.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l abi3
SHA-256 checksum
How to use checksums
dc3248b775accb7344ed4c8ebde1e835c62b454a309cfffedb697f215585cc21
BLAKE2b-256 checksum
How to use checksums
a7293ef0788041c253b2ad2b24b485cfc33bdd2e014dc9deaf4040181674c191
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL synalog-2.3.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.4 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
b0ed5e997d429895e881c8731d3a647f539df8faec2e1873ba6ae2eb32503d5c
BLAKE2b-256 checksum
How to use checksums
0d8e84dd1db8732c8bc923cc6568b9b1d86bec80b8c4e9af14755719f1081a9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl

Download URL synalog-2.3.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.5+ x86-32 abi3
SHA-256 checksum
How to use checksums
6ef5553f51cdc8ed9c38fa985852e0a130eaebd5f6847e6a280ffe218994c69a
BLAKE2b-256 checksum
How to use checksums
c586e4d187ee912ba671cfe9841e7c28773b625a885fc50ec065cb47c2a9e912
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL synalog-2.3.0-cp310-abi3-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d3618eab720899937519344eb2a2900fb9043181f6b79a074e6db2bc385acb0d
BLAKE2b-256 checksum
How to use checksums
012715745879375747d8c67682eeb46b459d6f4189a334da4e3116577967beab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / synalog-2.3.0-cp310-abi3-macosx_10_12_x86_64.whl

Download URL synalog-2.3.0-cp310-abi3-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
dc8eaefbfede9b202f2b0c399a131e5413e00cbcb21e6f4ef6603c00a6371715
BLAKE2b-256 checksum
How to use checksums
e3342361a323afdf1c3d5b0f6f444862431823e085fd22063586b0dbae2c07c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Security for synalog 2.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page