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 high-volume TMX, XLIFF, and .lokit paths use native Rust parsers. The Python 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.0.tar.gz (292.8 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.0-cp314-cp314-win_amd64.whl (3.4 MB view details)

Uploaded CPython 3.14Windows x86-64

lokit_python-0.5.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

lokit_python-0.5.0-cp314-cp314-macosx_10_15_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

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

Uploaded CPython 3.13Windows x86-64

lokit_python-0.5.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

lokit_python-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lokit_python-0.5.0-cp312-cp312-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.12Windows x86-64

lokit_python-0.5.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lokit_python-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

lokit_python-0.5.0-cp311-cp311-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.11Windows x86-64

lokit_python-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

lokit_python-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

lokit_python-0.5.0-cp310-cp310-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.10Windows x86-64

lokit_python-0.5.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lokit_python-0.5.0-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.0.tar.gz.

File metadata

  • Download URL: lokit_python-0.5.0.tar.gz
  • Upload date:
  • Size: 292.8 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.0.tar.gz
Algorithm Hash digest
SHA256 4acf2b7e1891b63db05ac79aa54f0728e1143dde745bb50b01ccaaaab56ecdac
MD5 d4543372fbfb8b16b6b7f760e79a3f25
BLAKE2b-256 ac9680c997d5c326d2e12a8bf87cfb23c10f1235a0ffbd8d1d2a6b4399d2200e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0.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.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 95d6defdff8ae5c8e6cb14fc6796a900613280e84509687154cfef05b1873cba
MD5 c797dfb95c644c92b7d6b61b67d5e378
BLAKE2b-256 a113400c595b145c2c6b98f7a37fba1309e03b92870ff4870eae1341fdb8ab38

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 410c6ff9a8bf93f4707d2b59977f90474507c3c24ab6e0f9412ceced6d6c131d
MD5 71a4dbf13bd3119a7589fe1d3828c5ae
BLAKE2b-256 f839642e9e127b018a12c48470f299fd02e4c4df3b239870d039bc82a96f2ec6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 858d5b1943ebd6101a95cf250bd2c1a2888a59575f5a21d0bc4f79738792aadd
MD5 97e5a517d21edc6346a71f8ad3bc25bc
BLAKE2b-256 be615d13bc22b67fc914753ebc65f33d973352f3361cc9bc28d6ed0d56d5adec

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ebd452c33398c998ec6c9756359d03527686e99fc66498a4b0da23b5a354d0de
MD5 891dadd5a1de87c60a399fb2de25d51f
BLAKE2b-256 560976e48fadacb7d9eaa8082efe93afd9cc04e20c80e501c97f1c7009db3c26

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d61090909d9adba6a878395585f94124447c42cd446d1cb0160dbfba290e5e25
MD5 0c08ee1a27977615a6fcdbc9232d2495
BLAKE2b-256 abeaa1999fbdcc0e6118468ddc4fdacd940cfb471b9b11c5300c7f7f61e7bd06

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 859010160a213fa2c04db3e8081227005ecca347873cba93f1acf8d27c1b8b8e
MD5 a525ce69d4e8a902fd0da7e62b92932e
BLAKE2b-256 5aac6656d4d01c954a2978e67676fed1d518645767a8e73588ef609198dea038

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fdad7fa53ce00efd1f3cc8ef3e83b669b62d7394d31004a7f95760661a012f7
MD5 aabce3504d4231846e1d965bebca9f6f
BLAKE2b-256 cae697f832122b515753dc8ef74cb46aa38b22f5609f32a022fc8b039ae66b8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5b7de9b6bfc242d549cedb0b747307ad73e36b52ac44ed4967a38ea520998cde
MD5 39368199bcd54b1cececdb42c90ee4e1
BLAKE2b-256 8f196182b13371e7198cdd7a2da3e775f7a1c86a2bd6e1df03d09721e3a70704

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bfc1281a5003ba2e38aee1cf7a9f8d9f108877df0ab4299fe93c07d9c10c6919
MD5 108fbfabed720d6c391c04b97fe2753d
BLAKE2b-256 f77ed68971993bd767f7aec150216816963d784bd1baf657ebe747d12a440b45

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a583acf56d3fb585517088e1a4530f594b8454f712abbc82969ed88d3954882
MD5 504bd715dc3c51ac130bab7d9c3fa22c
BLAKE2b-256 c7d7663df03bc60797532dda7b082375df5fd52a14f500a5f05d5052a89573b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 685767c33f4414562d3d1a38485716f225cf715977eef4b2b93b8c74cda554e4
MD5 7505778a7644fc2eb9b31053da4333f6
BLAKE2b-256 7c53d39034acb02e3a1172a5204c5c6c7dbe054f1dc429241a6c42dd5d8018da

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9699e9ba54311d9441b8a55b1ac6f68f06e5e14a135c0cb83dde5ba8a4b9dedd
MD5 9250c164bd593dad95b841ab1ddcf665
BLAKE2b-256 3051543f8f5d467eebd53a1891f644ff6015802ae480f7f733b84ef64e455828

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e0d36c76d5730b140cc9f64a8d82864842c8aefaab1d89e28ab95f9b1e736a5a
MD5 496fe6e146160ad50f0ac5e51cfdbec2
BLAKE2b-256 e01634fa3f0e741307bf8738d418d93e3585ed8389690902ac8416109a35a47b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ad04a5933e332bece565b5136fc06da4bb2e50df2e9bc1d09833586e2156ec18
MD5 5f36b8c74643d3799df466a1eb385db7
BLAKE2b-256 0b0948884eb1b93c4844497496b8f86b10d3378984267ddf80f5d6bc76c3b9e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc90d979d98420cedf5bb5d2c859ba42e56b67e74e13b9f7838cda27509a8126
MD5 989b3db866b8990f314805867e69e8a8
BLAKE2b-256 fb44e4e0b94327cd5f527e979bebd8c699c29a0c9710573aec1aea17b5f7f6d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a33df916894bc9da722fc9021d1acebadf2023d93d0964a1522548e99b1d7ce6
MD5 dd258cefab6fd21828f8baf2b2e70ed9
BLAKE2b-256 3e709bb68c7597a2c7107eb04c4e6bcb6896c7e1dd2bf493e5ae3e3e4a0077db

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 daf8404885eeafb5875a946a1280bce46ae494321a68e2d41887bce089667af9
MD5 b4810c87b11c74db74e9df0e432543de
BLAKE2b-256 b0e82871203d8f52daae2c1006725f8fd2d3b8d2b49b4df997b4d33bf949c495

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c4558e847f541a08fe93b07548be7cac78e0729d3b4f769e7da020f5682f4a1
MD5 5be34744f54e890de3abeb27ba83db7b
BLAKE2b-256 c460e2d472a0eb9051d2999db86c26f28591a28c0750b9f53a321c50412681de

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8511039cb0ac42af29cb902529e1ff6181f4c6fbb256b60016b01a222798d6fd
MD5 942aac64e17478c88803db6510256cb7
BLAKE2b-256 57ffe4e74ce6bdc171d8327736b01d022bc8e760057b4053de8286bff3e0e68b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.5.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5483d0c7a3be07fe453def907f171e0b5feda20a8f133e234969807bac6dea6f
MD5 917536aa59e0a86719076ebd3b6ff95f
BLAKE2b-256 0e8bf38a1f7a901cfd21e0f83a71cfd3900d7ff8b4ba957c8570b3d004617b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.5.0-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

0.5.1

21 files

This release

0.5.0 This release

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