Skip to main content

Lokit

PyPI Downloads

The fastest and highest performing localization library.

[!WARNING] Beta Release: lokit is currently in Beta. The API is volatile and subject to rapid, breaking changes prior to the official V1 release.


Supports Python 3.10+.


Unlike legacy tools that wrap XML DOM element trees in memory, Lokit ingests localization formats (.lokit, TMX, XLIFF, PO, XLSX, CSV, JSON, HTML, IDML, DOCX, and PPTX) into one strict structural data model. This enables parsing, robust data manipulation, semantic extraction, and translation-memory features without coupling applications to a source format. Lokit emphasizes bounded streaming and asynchronous processing for large files.


This format type can be easily converted to JSON for interchange with other systems. I've made parsing and data transfers as native as possible by capturing all elements of traditional interchange formats in a common format structure. This allows for much better compatibility, especially in terms of segment matching and leveraging as it uses flattened strings as standard. Tags are preserved but as a common format, meaning the structure parsed from XLIFF will be the same as the structure parsed from HTML.


These legacy file formats have supported vendor-lock in for many year, making it difficult for any client to move to another system. Seeing that this is a major issue across the domain, something new is needed where vendors do not use hidden, legacy technology to lock in their clients. Localization deserves innovation. Lokit is the first open source package that supports direct localization interchange to database ingestion; even outside the Python ecosystem.



The main premise here is a common, structured and type-safe dataclass model structure that is intentionally compatible with any file format, not just localization interchange formats, although these are optimized for performance and memory efficiency due to the verbose nature of XML based formats.


The TMX, XLIFF, and .lokit paths require the native Rust parser included in every wheel. They do not fall back to a second Python file parser. The Python projection layer remains strictly typed and is compiled with mypyc in release wheels.


Core Features


Lokit provides a comprehensive suite of tools for managing localization data:

  • Native Structural Modeling: Converts interchange formats into a strict, unified Python Data classes, ensuring complete type safety.
  • Advanced Matching Engine: Provides Exact Matching, Fuzzy Matching (via SequenceMatcher), and In-Context Exact (ICE) Matching leveraging previous and next segment context, as well as with inline tags.
  • Sub-segment Extraction: Automatically parses and isolates inline tags, properties, and formatting markers, allowing for safe manipulation of text without corrupting code.
  • Semantic Querying: Easily filter translation units using any attribute, exact ID lookups, or deep nested JSON path querying (where()).
  • Plural Support: Native extraction and structuring of pluralized translation units, compatible with UI frameworks.
  • Universal Format Conversion: Instantly import and export between any supported format (e.g., TMX to JSON, HTML to XLIFF) with zero data loss.
  • Sparse Native Interchange: Round-trip every Lokit model field within explicit v1 safety bounds through the versioned, no-null, streamable .lokit format.
  • Synchronous and Asynchronous Streaming: Process massive enterprise files natively using Python async generators to keep memory overhead to an absolute minimum.
  • Native DOCX & PPTX Support: Using C# extensions without external dependencies ensuring no overhead and no data loss.

Type Safety and C-Extensions


The entire library is very strictly typed and mypy compliant, so strict it compiles to C-extensions via mypyc and pre-attached via wheels. Additionally, any XML processing uses C-based packages. Compiling to these extensions has shown a 23% in overall performance increases over pure-python modules with additional benefits such as lower memory usage. C extensions are standard for MacOS (ARM+Intel), Windows, and Linux.


Parsing Performance


When dealing with enterprise-scale localization environments, parsing performance and memory efficiency are paramount. Lokit is designed to be significantly leaner and faster than the industry standard. Current benchmarks show much higher performance than any other localziation library in any other language for parsing localization files.


Benchmarks

To demonstrate converting common file types between localization interchange files, the following shows performance metrics against comparable tools in other programming languages. This parsing stress test used the sequence DOCX -> CSV -> XLIFF -> TMX -> CSV -> XLIFF -> DOCX with a monolingual source.

Language Library Total Time (s) Peak Memory (MB)
Python Lokit 4.29 393.39
Rust quick-xml + csv 23.11 26.66
Go encoding/xml + encoding/csv 23.63 61.88
Node.js sax 29.9 36.11
Java Okapi Framework 463.15 952.68

Using another package, `translate-toolkit`, as a reference as it is the de-facto and feature-rich standard for localization file format parsing and conversion in Python for comparison, we benchmarked lokit's modules against its equivalents. In a stress-test benchmark on a +600 MB `.TMX` file containing over **550,000 segments**, converting to normalized JSON file over 3 iterations yielded the following comparative averages:
Library Avg Duration Peak Memory Memory Efficiency
lokit 13.57s 135.9 MB 15x Less Memory
translate-toolkit 20.30s 2,034.5 MB ~2.0 GB

Tests for both covered from TMX to JSON with inline tag sanitization in both using the respective packages' tooling.


The major focus on memory safety allows for parallel processing of events, making it suitable for large-scale localization workflows and backend systems.


Note: this package is not a replacement or substitution for the already amazing translate-toolkit. The functionality is quite differet across both libraries and have their own use cases.



SDK Usage Reference


Lokit operates around a central BaseStructure dataclass model, which standardizes localization units and segments. This instructs better standardization and branching in a more language native way compared to XML based file formats. Parsing SDKs are added for both extraction and export tasks for localization interchange formats along with common file types.


Installation


Install lokit via pip:

pip install lokit-python

Basic Parsing and Conversion


Converting files synchronously is straightforward through the modular lokit API. Import the package once, then use lokit.parse and lokit.parse.write.

import lokit

document = lokit.parse.tmx("path/to/source.tmx")
document = lokit.parse.lokit("path/to/catalog.lokit")
document = lokit.parse.docx("path/to/document.docx")
document = lokit.parse.pptx("path/to/presentation.pptx")

lokit.parse.write.xliff(document, "path/to/target.xliff")
lokit.export.lokit(document, "path/to/catalog.lokit")
document.export.csv("path/to/target.csv")

Native .lokit interchange

.lokit is Lokit's lossless interchange format for the documented BaseStructure domain. It uses a compact, line-oriented syntax inspired by TOON's readability, but it is a distinct localization schema. Missing optional values are omitted instead of encoded as null; present empty strings, zeroes, and empty optional objects remain distinguishable and round-trip exactly. Version 1 represents signed 64-bit integers and limits canonical physical lines to 1 MiB; out-of-domain values fail explicitly and never replace an existing output.

@lokit 1
document {
  source_locale = "en-US"
  target_locale = "fr-FR"
}
unit "home.title" {
  source = "Welcome"
  target = "Bienvenue"
  status = translated
}

All three API styles are available in synchronous and asynchronous form:

import lokit

document = lokit.parse.lokit("messages.lokit")
stream = lokit.stream.lokit("messages.lokit")
lokit.export.lokit(document, "copy.lokit")


async def copy_catalog() -> None:
    units = [unit async for unit in lokit.parse.async_.lokit("messages.lokit")]
    await lokit.export.async_.lokit(document, "async-copy.lokit")
    assert units

Full consumption closes async readers automatically. For an intentional early exit, use the returned bounded bridge as an async context manager so its reader is closed immediately:

async with lokit.stream.async_.lokit("messages.lokit") as units:
    async for unit_id, data in units:
        print(unit_id, data.source)
        break

The complete grammar, field mapping, canonicalization rules, and compatibility policy are in docs/lokit-format.md; implementation decisions are in docs/lokit-architecture.md, and reproducible measurements are in docs/lokit-performance.md. The standalone Rust language server and editor setup are documented in tools/lokit-lsp/README.md.

Dictionary projections

Interchange dictionary rows are separate from JSON-i18n documents and from newline-delimited JSON output. lokit.stream.to_dict yields rows lazily; lokit.parse.to_dict materializes the same rows. The default schema is source_language, target_language, source, target, and domain, and a multilingual unit yields one row per target locale in document order.

import lokit
from lokit.types import DictField, StringMode

rows = lokit.parse.to_dict("messages.tmx")

for row in lokit.stream.to_dict(
    "messages.xliff",
    target_language="fr",
    strings=StringMode.RAW,
    fields=(
        DictField.UNIT_ID,
        DictField.SOURCE_LOCALE,
        DictField.TARGET_LOCALE,
        DictField.SOURCE,
        DictField.TARGET,
        DictField.DOMAIN,
    ),
):
    print(row)

StringMode.SANITIZED returns plain text. StringMode.RAW reconstructs the source-format inline XML, including original tag names, attributes, and inline payloads. The asynchronous equivalents are lokit.stream.async_.to_dict and lokit.parse.async_.to_dict. Existing JSON-i18n parsing remains available as lokit.parse.json_i18n; use lokit.stream.write_jsonl when a JSONL file is the desired output.

Splitting multilingual documents

Materialized documents split into independent single-target models. A one-shot streaming document uses a context manager backed by bounded native .lokit spools, so it never duplicates the source iterator or retains the whole import in memory.

from pathlib import Path

import lokit

document = lokit.parse.tmx("multilingual.tmx", progress=False)
for locale, localized in document.split_targets().items():
    localized.export.xliff(Path("out") / f"messages-{locale}.xliff")

stream = lokit.stream.xliff("multilingual.xliff")
with stream.split_targets(include_missing=False) as localized_streams:
    for locale, localized in localized_streams.items():
        localized.export.lokit(Path("out") / f"messages-{locale}.lokit")

The streaming split files are valid only inside the context. Pass an explicit tuple of target locales to either split_targets method to select a subset.


Asynchronous Streaming for Large Interchange Files


For files spanning hundreds of megabytes, parsing the entire DOM structure into memory is inefficient. Lokit supports stream-parsing natively.


Here is a complete scripting example. It can be reduced to a few lines, but the wrapper functions make each stage explicit. The stream APIs keep document-level attributes such as language codes immutable while yielding translation units incrementally. The other parsers use the same common typed model.

import asyncio
import os

import lokit

input_dir = "data/language_tmx"
output_dir = "data/out"


async def convert_to_json(filepath: str):
    print(f"Starting: {filepath}")
    output = f"{output_dir}/{os.path.splitext(os.path.basename(filepath))[0]}.json"
    await lokit.stream.async_.write_jsonl(
        filepath=filepath,
        output=output,
    )
    print(f"Completed: {output}")


async def process():
    if not os.path.exists(output_dir):
        os.makedirs(output_dir, exist_ok=True)

    files = [os.path.join(input_dir, i) for i in os.listdir(input_dir)]
    tasks = [convert_to_json(filepath=file) for file in files]
    await asyncio.gather(*tasks)


if __name__ == "__main__":
    asyncio.run(process())

Advanced Querying and Matching


The Lokit logic wrapper provides access to the powerful matching engine and data manipulation features. This does not substitute for enterprise database semantic search but can be used as an after-step for evaluating matching results after retrieving translation units from a semantic/vector database.

import lokit

engine = lokit.Lokit.parse("path/to/source.xliff")

button_units = engine.where("extensions.component", "checkout_button")

results = engine.fuzzy_find("Complete your purchase", limit=5, threshold=0.75)
for match in results:
    print(f"Match found: {match.unit_id} (Score: {match.score})")

ice_match = engine.match(
    source="Submit",
    target_unit_id="submit_btn_1",
    previous_source="Enter your email",
    require_context=True
)

Structured API Paths

The preferred public API is available from a single package import:

import lokit

document = lokit.parse.file("path/to/source.tmx")
document = lokit.parse.lokit("path/to/source.lokit")
document = lokit.parse.csv("path/to/source.csv", source_locale="en-US")
document = lokit.parse.docx("path/to/source.docx")
streamed_tmx = lokit.stream.tmx("path/to/source.tmx")
streamed_lokit = lokit.stream.lokit("path/to/source.lokit")
streamed_docx = lokit.stream.docx("path/to/source.docx")


async def stream_to_json() -> None:
    await lokit.stream.async_.write_jsonl("path/to/source.tmx", "path/to/out.jsonl")

lokit.parse.write.csv(document, "path/to/target.csv")
lokit.export.lokit(document, "path/to/target.lokit")
document.export.xliff("path/to/target.xliff")
document.export.docx("path/to/translated.docx", source_docx="path/to/source.docx")


async def export_xlsx() -> None:
    await lokit.parse.write.async_.xlsx(document, "path/to/target.xlsx")

CsvExtractor = lokit.parsers.extractors.csv

Predefined conversions live under lokit.quick_parse for fast one-liner conversions:

import lokit

stats = lokit.quick_parse.tmx_to_csv("path/to/source.tmx", "path/to/target.csv")
lokit.quick_parse.csv_to_xliff("path/to/source.csv", "path/to/target.xliff")

PostgreSQL API

Lokit is the first localization package to have native support for storing translations in local and enterprise databases. Fast and effeciant TM matching is also included out of the box.

Here's an example of how easy it is to ingest and use the TM database:

import lokit


async def load_and_match() -> None:
    tm = await lokit.database.connect("postgresql://localhost/lokit_tm")
    async with tm:
        await tm.setup()

        stream = lokit.stream.tmx("translation_memory.tmx")
        await tm.load(stream)

        results = await tm.match(
            source="Roses are red",
            source_locale="en-US",
            target_locale="fr-FR",
            limit=5,
            threshold=0.5,
        )
        print(results[0].unit_id, results[0].kind, results[0].score)

The database stores plain source and target text in PostgreSQL, uses pg_trgm for exact and fuzzy lookup, and reconstructs Lokit Data objects with tags, comments, metadata, and adjacent context. This supports plain-string matching with tag and metadata propagation.

The stable row serializers and ordered schema statements are public for custom SQL loaders and migration tools such as Alembic:

from alembic import op

from lokit.database import database_schema_statements

for statement in database_schema_statements(partitioned=True):
    op.execute(statement)
import lokit
from lokit.database import iter_serialized_units

document = lokit.stream.tmx("translation_memory.tmx")
for serialized in iter_serialized_units(document, project="checkout", domain="web"):
    unit_row = serialized.unit
    tag_rows = serialized.tags

lokit.database.serialization also exports the typed insert/fetch row models, serialize_unit, and deserialize_unit for integrations that own their SQL execution and retrieval lifecycle.


Enterprise Database Support

With the above local database ingestion and runtime logic, Lokit has direct connection APIs to external enterprise services. Currently supporting AWS (RDS & Aurora), GCP (Cloud SQL & AlloyDB) along with serverless platforms Supabase and Neon. Pipeline is support and enabled by default but configurable. Dual read and write URIs are also accepted for maximum performance while a single URI can still be used for simplicity or where it is not supported in the service used.

The API includes a full backend framework for handling localization database operations including matching, tag, pluralization and properity propigation, read and writes, and concurrent data handeling to and from the database server. All in async and with concurrency where supported by the service.

Lokit can handle direct streaming from legacy interchange formats to enterprise databses with complete customization, no hidden dependencies, no boilerplate and highly optimized data flows.

Lokit is the first ever package to support this in any language ecosystem.

import lokit

tm_rds = await lokit.database.connect(
    "postgresql://user:pass@instance.rds.amazonaws.com:5432/tm?sslmode=require"
)

tm_aurora = await lokit.database.connect(
    "postgresql://user:pass@cluster.rds.amazonaws.com:5432/tm?sslmode=require",
    reader_uri="postgresql://user:pass@cluster-ro.rds.amazonaws.com:5432/tm?sslmode=require"
)

tm_gcp = await lokit.database.connect(
    "postgresql://user:pass@/tm?host=/cloudsql/project:region:instance"
)

tm_supabase = await lokit.database.connect(
    "postgresql://postgres.project-ref:pass@aws-0-region.pooler.supabase.com:6543/postgres?sslmode=require",
    pipeline=False
)

tm_neon = await lokit.database.connect(
    "postgresql://user:pass@ep-cool-darkness-123456.us-east-2.aws.neon.tech/tm?sslmode=require",
    pipeline=False
)


Supported Formats for Parsing


  • TMX
  • XLIFF
  • PO/POT
  • XLSX
  • CSV
  • JSON
  • HTML
  • IDML
  • DOCX
  • PPTX


Learn More

Visit the official homepage at lokit.org, more detailed documentation is to come before the V1 release.

Download files

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

Source Distribution

lokit_python-0.5.1.tar.gz (288.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lokit_python-0.5.1-cp314-cp314-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.14Windows x86-64

lokit_python-0.5.1-cp314-cp314-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

lokit_python-0.5.1-cp314-cp314-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

lokit_python-0.5.1-cp314-cp314-macosx_10_15_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

lokit_python-0.5.1-cp313-cp313-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.13Windows x86-64

lokit_python-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

lokit_python-0.5.1-cp313-cp313-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

lokit_python-0.5.1-cp313-cp313-macosx_10_13_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lokit_python-0.5.1-cp312-cp312-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.12Windows x86-64

lokit_python-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

lokit_python-0.5.1-cp312-cp312-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lokit_python-0.5.1-cp312-cp312-macosx_10_13_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

lokit_python-0.5.1-cp311-cp311-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.11Windows x86-64

lokit_python-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

lokit_python-0.5.1-cp311-cp311-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lokit_python-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

lokit_python-0.5.1-cp310-cp310-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.10Windows x86-64

lokit_python-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

lokit_python-0.5.1-cp310-cp310-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lokit_python-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file lokit_python-0.5.1.tar.gz.

File metadata

  • Download URL: lokit_python-0.5.1.tar.gz
  • Upload date:
  • Size: 288.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for lokit_python-0.5.1.tar.gz
Algorithm Hash digest
SHA256 4aec376c8453f9e235c3794fd23cb43a5185a1c48cc1c9be5a48215d0901e633
MD5 9042afd529d3618f7a3a7731707cd537
BLAKE2b-256 ae9d02e8a9ae173b31ac865454bc35613bd710cc12822e975ce65867df0fefe2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1.tar.gz:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f1c618e398ddcc0b1b6da75fc6369bb6abfdf59a9f4b6da43aef58c1ab815bb6
MD5 618fb04cef6ce3ff193bc3cdb0af9a9b
BLAKE2b-256 8bc2bacbbf8666c751066310d42f754a10253d58cc78854e4e48855e736a803e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94bcee6b1fd16241bb83843c5f86944679819a47bac72a61c93f0be10cd5800a
MD5 c3e91cbeb88763e0534904391b9780ad
BLAKE2b-256 a9e4683399ab1615215198d464c010cc06128124aeccd15ad23d3761a3e79d65

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8218305f922eea31f580abb3060687450338b845be0435d458ba949353f239c
MD5 56d45b2e6bb80e8ef2b1127d3375edb8
BLAKE2b-256 6c314567f3f795c35b6c50cfcab70d84c1432bbfa35e4cde7bc445c3c39f4ec1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c8bc7746e0e24fe9c0985e39197c58099eec457600fee925c93994c921af5c70
MD5 d748c21b844f42cb977d2841319b86e2
BLAKE2b-256 98105c85de2b83159f53ddce90bc0fa66af987d48f0c1e390e0ee9e05edf5483

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bbfadda861c043e32ded4afb65d75cdd70827130ad3bda832a9351cf068bba0e
MD5 1bbd6c0d4a0a5323a77eea9cac5f0e5a
BLAKE2b-256 3756a7025ace09b96620aa491178ad2ee186b21510a3b42b01a96693b3fcaadb

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 af487c976dd9188be124b56bcea4aa5e34718b8b5a4455014d38ceec9210db62
MD5 c4da3c58df00695e0f5ad99706f5e32a
BLAKE2b-256 81ff94f747eebe8ca13ab2bf9898857085965fcfa71b04e69ba92ee585e4ef0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 049ec586b08d840541c0a4bb687e0d3b402cb769f5883f68698d8cb8ad49880d
MD5 a63aa0f74a6374dbc8032fcb83586682
BLAKE2b-256 6282005c313861894c777e76785feb822b3aac5a459ff142aa4c5f371dca74fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1b95ef4846f2ebe54027bb76427b9721c5f731d095c3a58cd0cd5a7bc8a6f01f
MD5 8299659558b341957e3b2deffffa83d6
BLAKE2b-256 b7e877b9fcd47c5a779fbb97388291b3550fc345c52e72d2c388f10e1f098368

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1d7e4697f85279ce88270244be681d7ead4a314617608ca783977cbb2e5d6078
MD5 77ce8bb917eac3476266ad728dad6b0e
BLAKE2b-256 9865cb0c37cbdbcd25c90d1f395a5b0bc97e0e2252c0e05039dc0a15fd3d6bd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2fb2270d6923aae19eac0494bfe4f1c5495300793f38312b333e603c7c0ed860
MD5 3e88890e0fa567ffbc4358c2958ffa7a
BLAKE2b-256 36bc8210068b73b1515bdea32b72fcec734cb62a1a6fe4c2b65d527bd59555a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c95a07cac20d9aba02d3cb3002494962896418e223d247d93a63e5dedb19d65c
MD5 70c94d574dfb4f980912ced51537b8cb
BLAKE2b-256 e17aead3bff451029afdc09d090cc3b756f25ce9b7484cb98f8e1ec81ec16a27

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 77666d0c4210a391122c83c9094d2b95dc09b9fddaaaa2c0952116d39e8653d5
MD5 bcf69a16e5a2c71a155dd19c7d89faac
BLAKE2b-256 1a8b9aeab2f0dd1d89ef25edd3ac4375896ac649a7d8384b690510e0aa4253f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 93e1448e87668830a83a4a13f22738ef8c64e800d2db3f1a9bb3e859b43a85fc
MD5 d8a6e54c45d0b23ad4a985122d510e0d
BLAKE2b-256 06218a3f37a5715a51466927046c44791ca8038ceb4490a4d004a15a311992ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6afb3a77e8c3a203fe1856b38fdd7244b59b81ae76e7465fb066d576db8db32
MD5 f74d42996c641116c72a7d66252d8a27
BLAKE2b-256 b04b8cf8c373eea6232732f62f58aab31b0b749daf112b0e3e3cb4f0bc310fac

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6734571b421f11099a5e9e3336192d007ca04e09673370578e4c83fd2d7357b7
MD5 92aa72fd098d98b7aa24fdc8317f4d03
BLAKE2b-256 1a3a9a0aa14b712533c8ff2ccd7e1bfd22dbea205a958093e5df814d0eb3aea4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fc0d45a0957f0fd30bd6d1bb31f0cf731408a4d071331af080009dffc267d47f
MD5 4547e94f88b1f599bc778a008ca05bdb
BLAKE2b-256 83b76e68b4d54f7b5ee14ff4a49918d59aca0f07a63d8581348adcbcac372649

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 28768b5ca490cd825b8cfa796b64c0c418e4519a8f31646dd749bfebb1911d18
MD5 c551aee9ae9cc7cfd49437735d153f1f
BLAKE2b-256 f608f413c02f5fda3c3e85baa545742603c3f362ece21754990f9c84d5f6d734

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a22a7fb1b8c94a8e17a7653176c4a00da408670ceba9a7a52a195f4d2c1d5f3
MD5 1b9c6621540888e1f80f96623dc437d6
BLAKE2b-256 38146bacfaf2722ad23f913624f50d8f380356e6e3f05e9c5d66e1fbfa5927d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 867a0407b17a04f7f378b13bbf223c14f1df5aed417fd0f2c50dec1c84b1aea4
MD5 2a5f6ffbe4888334df6c49bb16e88e26
BLAKE2b-256 ed77725e03b1984a2f12bd53ed05e4a29690301eebd2a5f92a965dea26e99117

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lokit_python-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 95643469f67f5d48cab938fe089d9f866e19d94f3ef12847280fa63b4c00ae2a
MD5 1c2205dfc74c20f969196c412d4c85c6
BLAKE2b-256 ff5472538927fe098b7ef1d0341fe52a31f0480d6cb01e5831da6175394a3b73

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on ciarandarby/lokit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.2

21 files

This release

0.5.1 This release

21 files

0.5.0

21 files

0.4.1

21 files

0.4.0

21 files

0.3.2

26 files

0.3.1

26 files

0.2.2

11 files

0.2.1

11 files

0.2.0

11 files

0.1.4

11 files

0.1.3

11 files

0.1.2

11 files

0.1.1

11 files

0.1.0

11 files

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