Skip to main content

Python localization toolkit for parsing, converting, and matching TMX, XLIFF, PO, JSON, HTML, CSV, XLSX, IDML, DOCX, and PPTX. Includes direct translation memory database ingestion.

Project description

Lokit

PyPI Downloads

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


Lokit is a high-performance, strictly type-safe, and highly memory-efficient localization toolkit for Python.


Supports Python 3.10+.




Unlike legacy tools that wrap around XML DOM element trees in-memory, lokit represents a shift away from XML-based localization interchange formats towards native language parsing. It ingests localization formats (TMX, XLIFF, PO, XLSX, CSV, JSON, HTML, IDML) and compiles them into a strict, unified structural data model. This enables not just parsing, but robust data manipulation, semantic extraction, and advanced translation memory features out-of-the-box. Lokit focuses on streaming and asynchronous processing rather than synchronous events using in-memory 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.


Note: This project was originally written in Rust and is still unreleased. Adding Rust extensions did not show a major performance improvement over the current C-Extension modules due to bridging overheads, this will be re-addressed in future releases. SDKs in other languages including the Rust prototype are coming soon.


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.
  • Synchronous and Asynchronous Streaming: Process massive enterprise files natively using Python async generators to keep memory overhead to an absolute minimum.

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.


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 557,058 segments, converting to JSON with Lokit.to_json_async() 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.docx("path/to/document.docx")
document = lokit.parse.pptx("path/to/presentation.pptx")

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

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's some simple scripting code to show how easy it is. This simple program has no boilderplate and can be reduced to a few lines of code, but for the purpose of showcasing, we added some wrapper functions. The stream APIs take the static attributes such as language codes, keeping them in an immutable state. Then quickly streams the mutables. All other parsing modules also use streaming to parse to and from the common typed format.

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_.json(
        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.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_docx = lokit.stream.docx("path/to/source.docx")


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

lokit.parse.write.csv(document, "path/to/target.csv")
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:

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

Install the optional database extra to use PostgreSQL-backed translation memory:

pip install "lokit-python[db]"
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/fuzzy lookup, and reconstructs lokit Data objects with tags, comments and metadata along with adjecent context. This allows for plan string matching with tag and metadata propagation.


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.

pip install "lokit-python[db-aws]"
pip install "lokit-python[db-gcp]"
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


Learn More

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

Project details


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.3.1.tar.gz (123.3 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.3.1-cp314-cp314-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86-64

lokit_python-0.3.1-cp314-cp314-win32.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86

lokit_python-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lokit_python-0.3.1-cp314-cp314-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

lokit_python-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

lokit_python-0.3.1-cp313-cp313-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86-64

lokit_python-0.3.1-cp313-cp313-win32.whl (1.1 MB view details)

Uploaded CPython 3.13Windows x86

lokit_python-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lokit_python-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

lokit_python-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lokit_python-0.3.1-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

lokit_python-0.3.1-cp312-cp312-win32.whl (1.1 MB view details)

Uploaded CPython 3.12Windows x86

lokit_python-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lokit_python-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lokit_python-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

lokit_python-0.3.1-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

lokit_python-0.3.1-cp311-cp311-win32.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86

lokit_python-0.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lokit_python-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lokit_python-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

lokit_python-0.3.1-cp310-cp310-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.10Windows x86-64

lokit_python-0.3.1-cp310-cp310-win32.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86

lokit_python-0.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

lokit_python-0.3.1-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lokit_python-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: lokit_python-0.3.1.tar.gz
  • Upload date:
  • Size: 123.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lokit_python-0.3.1.tar.gz
Algorithm Hash digest
SHA256 b95513a251587841622e659b4d73dc0872b5ff9006b2658510e29c69411a5340
MD5 e39d3491282d181e52203ac20007b530
BLAKE2b-256 354294607914bd1d7ec6da53154263ec0ffca879a2a4b34e8cebf30ef4c9c130

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c35726798e0da5ad2feaa9eb2e4d262dc06d8f75c2a84b6cdb527523ba560f44
MD5 d0a14b3714e72ebc2d5b50bd87adee70
BLAKE2b-256 34db15f7855b72456dc5037511c963a49bf988f1eeabe6d4600c72991c46f988

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp314-cp314-win32.whl.

File metadata

  • Download URL: lokit_python-0.3.1-cp314-cp314-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lokit_python-0.3.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 81713aca62ebf026e3e8e6c4cda095d719bb884998239171f14821db81095754
MD5 33c3201e833ad13e7ecfd78be20f4ccb
BLAKE2b-256 0260cfce1a38603f9628fddfaaf39be3aaa0ce6a6ab24fca671eed1d130d6ce9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp314-cp314-win32.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.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 182274b7b53da58a2eb8909c7b753c227633b2012fbaab41b2b7e191f582d9ef
MD5 600526b26eb63f88bc761a2caf5daddf
BLAKE2b-256 44924b040ba2dd6f736097be1a1eb4ce840bf371a3cb138f9b3436a7727f7ed6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.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.3.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5bcfd62ea48175c5a9d194b81f627711e5ec570a57dd3bb1e7ae54ce475167cb
MD5 56243965c1af3f50d1cd2e651ec39162
BLAKE2b-256 2a110cae20bda42c88b3cfb5b71ad3944824c0699172ff21ac14e6eb8ebaff64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9ebf1cb06fd329621ae66c3ba6429a9fe4e153e3c62bfb639d3815c55b4c0177
MD5 b3f544431f8b4290dc9d76f7514b2013
BLAKE2b-256 f1f6ec9fbebc51e1601497f39956f770b4a7af28d9e85bd5ee78d402ef3a9d13

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cc55b441de672c8022d5475d1f1720785e1f4129ecf002e988fd15cbb948c422
MD5 d4c526b3048663d612e42d290c251adc
BLAKE2b-256 e9e0b4b340fb9acec2d54f98c8e29a4c0f2acaed15e320df80a3b26a33ec56dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp313-cp313-win32.whl.

File metadata

  • Download URL: lokit_python-0.3.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lokit_python-0.3.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 5c39850eb63f6d3e525f769b91ac3565606a84faea10842baf0c5588f1c6b06f
MD5 9a4733e461b6458a93bfc095623d48d8
BLAKE2b-256 f931e9e5408d4463d5aecd05e1e2e502e70bcca6fda4699c71d2a2cdb5b84547

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp313-cp313-win32.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.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c3e7bbb317931c3f05f610ee236ccc0b98c7d13a8b7d10692eae2b9643e43f4
MD5 ef3c3a7ecf501a1d1c07bb3eea5a76d3
BLAKE2b-256 e638ee034e25d1ef109974ec1883517fc2c1735b402e298165eb6f04cbf38104

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.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.3.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f6d374bed689fca183cf35a9779f5d1ab0a6640c9146723fbc9bb6d8030527d
MD5 30417596d2d41c73c4a0435cee9b47ea
BLAKE2b-256 40f8fb86e77de8d8223fe29f15818c53ad2095e254e88212362c601829d3c86b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 87fc83215bf6200f267b2bd85b707afc4e20203d50b1db654082ea7db14f9afd
MD5 1c8306510823affec52d403e05c4be97
BLAKE2b-256 c6f7e41992b8931ed0763de9de9f6bf31f37c2c87c33a548987490b6c08541ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ee891a64d2e9d98448b2bb44f18ec6d610a3402921aa0475622cac49023356ee
MD5 1c9d825cf19882cd01ecb6898a855bc1
BLAKE2b-256 f2537a58fde6df60fd68c43e0c1ff482a07339a9915c397d946acb3b1af9dddd

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: lokit_python-0.3.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lokit_python-0.3.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 4f587f9f521468f2f294ac00760e63846f40800d3fddd9a46cc44d468343f131
MD5 2a44230b2fa310386263d9caaf588dee
BLAKE2b-256 a41489129359980b306455e303c770bd46b1829d180de14070d5f908380a9a14

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp312-cp312-win32.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.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44e3bce0502e42c2d5282c770f0b7ecec16c2b8d1f40f6a8720383fe15d55177
MD5 ca98525623dae921096862bbd75c9df0
BLAKE2b-256 67a81e1a9d704d8a56d5da3cef58e2eeca0657cdb29f783a1301a0f73b25e1f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.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.3.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6206f44b659c8a22d82b16900b53b3841df781691680c1525454f2beec2b1a2
MD5 83dd45268584dc0fd36d64c5c9b2e362
BLAKE2b-256 c66fe89b9ad51c9f6fb273a726b79ff1d1f9b4d73e96c58a0a18766975bb7d60

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 965268a97a3ae4e964200b32eb6754bc7be8216091aabe7416f48e658dc8deea
MD5 1c2cb5f28df4a377b5b0925369db5ee7
BLAKE2b-256 a509e1110ff249370afbe5a150ea8ccfd257218247a5d5f5937aeb43cb3e3c52

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0a8a3142390b5baa93fabe7d3bed862ed79ff11c97b2c54e957d6117e4b3c642
MD5 1a25004e96c0c72e9fc3dff327147213
BLAKE2b-256 7ab625e5de28001198fafb2e33e3041d885566169e356bff964c080fcc108226

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: lokit_python-0.3.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lokit_python-0.3.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 a2b8375ea23909e109f3a78a7562d7c896a6633d2d54d5b3393c97a19bd9b0d2
MD5 69663240a3b205037022077439294a2c
BLAKE2b-256 6028f70a6c9c6081e1e83b9b6043e8a864fcb0a036024d581cbf36ad6bea8b75

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp311-cp311-win32.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.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9b20a03355b0fa53198fe436903c9806d46226318336feab3a3aa1e0edda7d26
MD5 bf5446c14f1eb66af52e0674af9c30e9
BLAKE2b-256 4a5e89a5ee55fd75867294970c8c35e4dce2db5878e1468d8772321134fa4a3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.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.3.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1e4a0f7d9225a01618e6727352d4409120e1938eeb2bf127f019062efa50e0f
MD5 fb18efe172456451be8338085f0c4842
BLAKE2b-256 d3dcd5ea629a8e15fd368505cbdd0647a72ce0f43ed7af15a11273478a77d659

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0d854e43c7a23d5c85f7d701e29eb7c8adcdee873bcef95cb36c49e43872de11
MD5 3f017e634b6046836887036bc6187afc
BLAKE2b-256 6a7f8b3c5130b60a51ffb20499c0688a0a046a72baeb6de80f3c8df26fef5cf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp311-cp311-macosx_10_9_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.3.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0f16bacba5885ddcb8c955a8ec3b9ea21e4512a9d8cd6e623fa0713170d6eab7
MD5 d467e9f6dd1aa78f5cae9eabd249d744
BLAKE2b-256 9d55a7cd3beb500479a97f72f772bdb5960c4f8d34dc4aa6094d857214aeb108

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: lokit_python-0.3.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lokit_python-0.3.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 361d0c9ca9ff3c29ca0688d8be10dbf29951c47557a3c2706fec2e8cade14c50
MD5 7db8c474b309ea126da1db82ef2d526b
BLAKE2b-256 df24b2a11628f738095b91bf0f5abe3277873ab441bf690b08ce8b3698055c18

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp310-cp310-win32.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.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e2a9d854145eb1abe3b9585e70cf9babd054ca94075534fe3a92a4c4b7b9db4
MD5 d6f02a12e471b5cea9689ee01bd5cf3d
BLAKE2b-256 2e5631b2c8d9c9c4e39568474fa89ff64d4a4f84ae822f9d8b8a95762ba80fb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.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.3.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 700e08cd60a308b14c43ad1a1abe3275b7933b235d55af1338413e8f410ab199
MD5 18187bcc5a487939939cd68a67575741
BLAKE2b-256 601b104c682a7a3240f4241c6984139c42067b7755878fc72bc44b1d29a3e708

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.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.3.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lokit_python-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d0332f447b71b6894e2a06a1a3d2a7ef16f90eff8fd1e0ca998874e9baccc882
MD5 f30df591466453de5dcccee945cc4709
BLAKE2b-256 35d45f0ea7b5a25fc70b2d74aaa7670488f65d42760f60f883574d81b749f9d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lokit_python-0.3.1-cp310-cp310-macosx_10_9_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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page