Skip to main content

Lokit

PyPI Downloads

The fastest and highest performing localization library.


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")
documents = lokit.parse.files(["memory.tmx", "catalog.xliff", "messages.po"])

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

PO parsing defaults to standard Gettext semantics, where msgid is the source and msgstr is the translation. Catalogs that use msgid as a stable key can select the translated text as the source explicitly; .pot files are detected as source templates:

catalog = lokit.stream.po("path/to/fr.po", mode="msgid_as_id")
template = lokit.parse.po("path/to/messages.pot", mode="auto", progress=False)

The equivalent explicit standard mode is mode="msgid_as_source". Both modes are available on parse, stream, and async PO entry points. The native streaming reader accepts up to 1 MiB of content per physical PO line and 16 MiB of cumulative raw input per logical entry, returning a located parse error when either safety limit is exceeded.

Runtime and inline placeholders

Every parse, stream, async, and detected-file entry point projects runtime variables and native inline codes by default. Ordered, collision-safe tokens such as {LOKIT_P1} make the strings safe to send to machine translation while the exact original code and its position remain in the unit's tag graph:

from lokit.placeholders import PlaceholderSyntax

document = lokit.stream.po(
    "path/to/messages.po",
    placeholder_syntaxes=(PlaceholderSyntax.PYTHON_BRACE,),
)

# Restore the original variables/tags (the default) or deliberately keep the
# generic tokens as literal output for an MT-oriented intermediate file.
document.export.xliff("path/to/restored.xliff")
document.export.xliff("path/to/projected.xliff", resolve_placeholders=False)

Set runtime_placeholders=False or inline_placeholders=False to opt out independently. The Rust scanner recognizes Gettext format families as well as ICU MessageFormat, Unicode MessageFormat 2, Fluent, Mustache/Handlebars, ECMAScript templates, shell parameters, Swift interpolation, Rust formatting, and related standard syntaxes. Translation-memory matches compare a canonical placeholder graph and, when compatible, reform the returned translation to the query source's current placeholder names.

PowerPoint extraction includes slides, speaker notes, slide masters, used slide layouts, notes and handout masters, comments, charts, SmartArt/diagrams, document metadata, alt text, and hidden slides by default. Each area can be disabled independently for parsing, streaming, and export:

from lokit.office import OfficeExportOptions, OfficeImportOptions

parse_options = OfficeImportOptions(
    include_speaker_notes=False,
    include_comments=False,
    include_document_metadata=False,
)
presentation = lokit.parse.pptx(
    "path/to/presentation.pptx",
    options=parse_options,
)

presentation.export.pptx(
    "path/to/translated.pptx",
    options=OfficeExportOptions(include_speaker_notes=False),
)

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")
documents = lokit.parse.files(["path/to/source.tmx", "path/to/source.xliff"])
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.

Metadata

Release files for lokit-python 0.5.4

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

Source distribution (sdist)

Source distribution for lokit-python 0.5.4
File Size Uploaded
lokit_python-0.5.4.tar.gz 533.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for lokit-python 0.5.4
File
lokit_python-0.5.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
lokit_python-0.5.4-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
lokit_python-0.5.4-cp314-cp314-macosx_12_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 12.0+ x86-64 Details
lokit_python-0.5.4-cp314-cp314-macosx_12_0_arm64.whl CPython 3.14 CPython 3.14 macOS 12.0+ ARM64 Details
lokit_python-0.5.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
lokit_python-0.5.4-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
lokit_python-0.5.4-cp313-cp313-macosx_12_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 12.0+ x86-64 Details
lokit_python-0.5.4-cp313-cp313-macosx_12_0_arm64.whl CPython 3.13 CPython 3.13 macOS 12.0+ ARM64 Details
lokit_python-0.5.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
lokit_python-0.5.4-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
lokit_python-0.5.4-cp312-cp312-macosx_12_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 12.0+ x86-64 Details
lokit_python-0.5.4-cp312-cp312-macosx_12_0_arm64.whl CPython 3.12 CPython 3.12 macOS 12.0+ ARM64 Details
lokit_python-0.5.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
lokit_python-0.5.4-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
lokit_python-0.5.4-cp311-cp311-macosx_12_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 12.0+ x86-64 Details
lokit_python-0.5.4-cp311-cp311-macosx_12_0_arm64.whl CPython 3.11 CPython 3.11 macOS 12.0+ ARM64 Details
lokit_python-0.5.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
lokit_python-0.5.4-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
lokit_python-0.5.4-cp310-cp310-macosx_12_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 12.0+ x86-64 Details
lokit_python-0.5.4-cp310-cp310-macosx_12_0_arm64.whl CPython 3.10 CPython 3.10 macOS 12.0+ ARM64 Details

Total release size: 99.8 MB

Release files / lokit_python-0.5.4.tar.gz

Download URL lokit_python-0.5.4.tar.gz
Size 533.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f6a93ae8cd917099a967a533793ecaac46a531b058d0b087a20f33c6e6dcb28b
BLAKE2b-256 checksum
How to use checksums
060480fad2315310f60e1d6a12bb135c7576526ccf66b8a8396a80cf59762869
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp314-cp314-win_amd64.whl

Download URL lokit_python-0.5.4-cp314-cp314-win_amd64.whl
Size 4.8 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
e2f30048ffc6d0a1ecdd6560f176f35e4451d1da0dee14a37f18bd3c73a1b05f
BLAKE2b-256 checksum
How to use checksums
d7d3757573fdb52d4b4d3d20eb9a94e930bd84c5f3edfc4c2132cba7d3995b5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL lokit_python-0.5.4-cp314-cp314-manylinux_2_28_x86_64.whl
Size 5.4 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
be60c83f0957e423490c4dcc81d736f2e8234c577b9447cf1f2bf4387edc16e9
BLAKE2b-256 checksum
How to use checksums
1e04fa6e7a51e9b31b5c01f50695af90317bd773f766be18dab45a55f0cd75b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp314-cp314-macosx_12_0_x86_64.whl

Download URL lokit_python-0.5.4-cp314-cp314-macosx_12_0_x86_64.whl
Size 5.1 MB
Tags CPython 3.14 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
e3bfebc6ca2dc12b2620325f5012f5027923ec777bedf44f1eb1925a6f0d46b8
BLAKE2b-256 checksum
How to use checksums
52521c3c802c2cddc4ad299e7e28e140f3be5e43e92f4525594c955780eea4f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp314-cp314-macosx_12_0_arm64.whl

Download URL lokit_python-0.5.4-cp314-cp314-macosx_12_0_arm64.whl
Size 4.7 MB
Tags CPython 3.14 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
246d985494f5c5027b6c26823ca1fea6c0662b6f15e372ef99c096b69b0fdccd
BLAKE2b-256 checksum
How to use checksums
172aedf9eddba1cf6b879de979f96489677d82c2ca368691e9307f3afef86780
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp313-cp313-win_amd64.whl

Download URL lokit_python-0.5.4-cp313-cp313-win_amd64.whl
Size 4.7 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
dcf046ebd0ea266e1eac7db7738ef1fac247074118198136c438e75dd654e9b1
BLAKE2b-256 checksum
How to use checksums
869faf4d1e7e9ae77f5e13a026653021808f95d099dc15a1eedee86f53aedf8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL lokit_python-0.5.4-cp313-cp313-manylinux_2_28_x86_64.whl
Size 5.4 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fd24f6d9f7ed7380f7c89adca259da080bd02aa788c67b411c36434b92123260
BLAKE2b-256 checksum
How to use checksums
526324fa4507c210010515c63164fa39732754f7b829e93d898f0a1bc7298ee0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp313-cp313-macosx_12_0_x86_64.whl

Download URL lokit_python-0.5.4-cp313-cp313-macosx_12_0_x86_64.whl
Size 5.1 MB
Tags CPython 3.13 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
72b43fc1ce2c602416722aa448afeb22e96b1e758555a7095920bec5485c420b
BLAKE2b-256 checksum
How to use checksums
abc7934324bf86ed9fa5545b08628c3b0d15d77f416485ad6478a5d853507a83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp313-cp313-macosx_12_0_arm64.whl

Download URL lokit_python-0.5.4-cp313-cp313-macosx_12_0_arm64.whl
Size 4.7 MB
Tags CPython 3.13 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
44f7969db5db1d5ebf9eeafca1abafae8f2748fa4a43da5ad879f33a904cc300
BLAKE2b-256 checksum
How to use checksums
e795416cacecfef7c3158292b4f594a9bb2c16903b565400a4753faa33190018
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp312-cp312-win_amd64.whl

Download URL lokit_python-0.5.4-cp312-cp312-win_amd64.whl
Size 4.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
f6c8f612fa227430ff354d35bc6962a3d93bfd4c1577ebdca29be4c8f2d74cf7
BLAKE2b-256 checksum
How to use checksums
f61cae5cfcc912ce8a93a69b90159e9325c045e6c9353e766c988a0e8f9a5ba7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL lokit_python-0.5.4-cp312-cp312-manylinux_2_28_x86_64.whl
Size 5.4 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
be3699921b053ddee90dadd6eb3bb884ef4bfb63a239ca484eec41f9605dd2c0
BLAKE2b-256 checksum
How to use checksums
89ef638b5f6a37bfc4dd264e5cc4db90b8205b5e2980525affc6711fce0bcd27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp312-cp312-macosx_12_0_x86_64.whl

Download URL lokit_python-0.5.4-cp312-cp312-macosx_12_0_x86_64.whl
Size 5.1 MB
Tags CPython 3.12 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
95ab32f162fa8d5bfc9d59ea9919c179267e840a7e9f9a6e1114d98daa7a9b84
BLAKE2b-256 checksum
How to use checksums
62df34f6eb3bcbdf941fa0f23699758201de803d8933c36bdcc8bb4b51aaff2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp312-cp312-macosx_12_0_arm64.whl

Download URL lokit_python-0.5.4-cp312-cp312-macosx_12_0_arm64.whl
Size 4.7 MB
Tags CPython 3.12 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
1393aea101b8787bade4cebdad824ae4d6aba7d476367e376eb958e86905ffed
BLAKE2b-256 checksum
How to use checksums
d1c5259a79ebec44aaa1ed1ab9d56f2af292d05b611d71863f81390cdbcd4950
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp311-cp311-win_amd64.whl

Download URL lokit_python-0.5.4-cp311-cp311-win_amd64.whl
Size 4.7 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4b6b7e6b6ab813b4d5386b1cc60df8dff656177eb4d4df7d62211eea4889e833
BLAKE2b-256 checksum
How to use checksums
ac46a4a9da064d36f71dfd6444cc6b2b33ea08cf53df5f214cbf784a359e46d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL lokit_python-0.5.4-cp311-cp311-manylinux_2_28_x86_64.whl
Size 5.4 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cce70ad0e6e6e7ef45a14b8656f7e6c243299ffc376dd5b295ef6dde5f4f7512
BLAKE2b-256 checksum
How to use checksums
c6452187b66b2e66fb7baa28cfc729fde7695b9c0d881db764d30484269565da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp311-cp311-macosx_12_0_x86_64.whl

Download URL lokit_python-0.5.4-cp311-cp311-macosx_12_0_x86_64.whl
Size 5.1 MB
Tags CPython 3.11 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
afea078398bf246e83ff35361b3d9d27345c7f3921af10930df034d496367678
BLAKE2b-256 checksum
How to use checksums
0873448886f39a88739a8a2771641ce8a1c0b343eff623d5758915408b6c68f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp311-cp311-macosx_12_0_arm64.whl

Download URL lokit_python-0.5.4-cp311-cp311-macosx_12_0_arm64.whl
Size 4.7 MB
Tags CPython 3.11 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
2e74e5b49e051823608b8dc98186645e0eceddcdff6817d872334af4f6f193fd
BLAKE2b-256 checksum
How to use checksums
57ed4c2bb56dea18188a150832114d3299dc32d99a4ffec2ad882105b5423292
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp310-cp310-win_amd64.whl

Download URL lokit_python-0.5.4-cp310-cp310-win_amd64.whl
Size 4.7 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d766ef09b58d47707c298e7a8257023ed360fa3a389d2cc6d00f2020310a9e9a
BLAKE2b-256 checksum
How to use checksums
1f2bf8020b75eb445823793a9289957508d0bfad677d2b429de5b4baec85f4e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL lokit_python-0.5.4-cp310-cp310-manylinux_2_28_x86_64.whl
Size 5.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0386e8026bcfd1d5c2d2f3598473abd9f79ee47a587598e45788920d4d9d2976
BLAKE2b-256 checksum
How to use checksums
b1fcb26f9ddeb7482f54262849965aa16f37c30e9b47f8bad0f59dfd92d0e0a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp310-cp310-macosx_12_0_x86_64.whl

Download URL lokit_python-0.5.4-cp310-cp310-macosx_12_0_x86_64.whl
Size 5.1 MB
Tags CPython 3.10 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
2b21b7c80ed74df14e74ae018b978b3cd844916a62375eaaea6314f16671b66e
BLAKE2b-256 checksum
How to use checksums
d5476e59a3e5f07e031b052be7b515e20ec961a8295c63a8d18656dde10fd438
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / lokit_python-0.5.4-cp310-cp310-macosx_12_0_arm64.whl

Download URL lokit_python-0.5.4-cp310-cp310-macosx_12_0_arm64.whl
Size 4.7 MB
Tags CPython 3.10 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
1f5e0d204d885b2d020c274fb9b2031a11189a9dc9974f8806f018cb68c53cd8
BLAKE2b-256 checksum
How to use checksums
d180885e516d940aa9954371a0a9e173904622dd674ecb9e0038b1cb0c7a4a40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.4 This release

21 release files

0.5.2

21 release files

0.5.1

21 release files

0.5.0

21 release files

0.4.1

21 release files

0.4.0

21 release files

0.3.2

26 release files

0.3.1

26 release files

0.2.2

11 release files

0.1.3

11 release files

0.1.2

11 release files

0.1.1

11 release files

0.1.0

11 release 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