Lokit
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.lokitformat. - 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.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lokit_python-0.5.3.tar.gz | 494.6 kB | Details |
Built distributions (wheels)
Total release size: 173.1 MB
Release files / lokit_python-0.5.3.tar.gz
| Download URL | lokit_python-0.5.3.tar.gz |
|---|---|
| Size | 494.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
440e5198cdce7d0e7e397dc3147567d3b36abdda7be35a0783616ee18ec20fd9
|
|
BLAKE2b-256 checksum How to use checksums |
811d25d65b49b29efc409060773fe9c62cd032bdea9177dd6c167a81f2beaa6d
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp314-cp314-win_amd64.whl
| Download URL | lokit_python-0.5.3-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 8.0 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6831933c3c5859a48db55ec395e219de6daf9dbced5a2c6213a937ba2006d69e
|
|
BLAKE2b-256 checksum How to use checksums |
e82129ff1513cc796f174d311303d067d47344e30e7a1bb536ad0d20f6d5d6bf
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | lokit_python-0.5.3-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.4 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1515f1451ac043ab7103e874f0e2818819b512a14e2326ff3a2ed863234740c4
|
|
BLAKE2b-256 checksum How to use checksums |
be1152e3a9bbcc0250dd9c1a6625a104c93c1634f47306ac940e6b38390ebf56
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp314-cp314-macosx_12_0_x86_64.whl
| Download URL | lokit_python-0.5.3-cp314-cp314-macosx_12_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.14 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
0f72a353b65b509b6130fe02066e45151239cee1480a006cfe0664d06fc12fe4
|
|
BLAKE2b-256 checksum How to use checksums |
3e3339d70b9578274a8fbc8d4eab3f138d89d5b78ab8e9f4da1e1d94b38d24aa
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp314-cp314-macosx_12_0_arm64.whl
| Download URL | lokit_python-0.5.3-cp314-cp314-macosx_12_0_arm64.whl |
|---|---|
| Size | 8.3 MB |
| Tags | CPython 3.14 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b3408e8cfc5713923e9b003c4caf9cff5298ffc735b937be82813f7438107485
|
|
BLAKE2b-256 checksum How to use checksums |
8db91fd7031efba632556ea38a2c6366e9b802e88968a26cfa444abd7095dc30
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp313-cp313-win_amd64.whl
| Download URL | lokit_python-0.5.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6370de4e70591c9f6076a82128849194e4eade07abf0cefeb6be2405d65f0ce1
|
|
BLAKE2b-256 checksum How to use checksums |
274effa8812a8f2c0eb785a1dd9e6324e6a010f0d64b718f0f222ecfb69ed671
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | lokit_python-0.5.3-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.4 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
23f26b20aa4bcc69832da0ded55954414c95f464bfa1553eec2f07bdc3f6c573
|
|
BLAKE2b-256 checksum How to use checksums |
d1d7c4c1c273a0803a3445969f64559269ea1c6380870c113ad06fb4fd19bc75
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp313-cp313-macosx_12_0_x86_64.whl
| Download URL | lokit_python-0.5.3-cp313-cp313-macosx_12_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.13 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
6088da1ba6d6cb41a84d16e17add25caa7b6f09f5d74ab78799c4c2f90dc6dc3
|
|
BLAKE2b-256 checksum How to use checksums |
28baded6e160e9e75f57b82f113c2e92b6be4608fda30abdd965458f0417516e
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp313-cp313-macosx_12_0_arm64.whl
| Download URL | lokit_python-0.5.3-cp313-cp313-macosx_12_0_arm64.whl |
|---|---|
| Size | 8.3 MB |
| Tags | CPython 3.13 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ccaddcbe990cf74822be6fd96a30c420eccc717e526788e2876bf6db06e9b27a
|
|
BLAKE2b-256 checksum How to use checksums |
308c7d1812382a019b08dfd646d919d5aa6432eb91fe0ed3c027d16476cc179c
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp312-cp312-win_amd64.whl
| Download URL | lokit_python-0.5.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a6bd1fefcc56b174f09d7a7cd3b89adad9dbc9a90a062c8257152543f4a20d00
|
|
BLAKE2b-256 checksum How to use checksums |
ed573cdbfffda925fd3ab91a18e03f21f54a272bc893263e138debd74c6b74aa
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | lokit_python-0.5.3-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.4 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3c5857d17e642b33a851b50e622853d33702b1d799e83e7447f1bf5f92cb6178
|
|
BLAKE2b-256 checksum How to use checksums |
a6cdb777db99249da48e876b3319ff6beaf4394ebe794d8266262e8c94ff4303
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp312-cp312-macosx_12_0_x86_64.whl
| Download URL | lokit_python-0.5.3-cp312-cp312-macosx_12_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.12 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
77b0113d0eb708a41f562ac6e71b01531aa9406ab3a88ee32cacde5b7064b5b0
|
|
BLAKE2b-256 checksum How to use checksums |
3d42b2ca3142ee4b6c911b1c867279496969724e7179067dfa543b8c41ba5313
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp312-cp312-macosx_12_0_arm64.whl
| Download URL | lokit_python-0.5.3-cp312-cp312-macosx_12_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.12 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
abfd4d86fdc7410df8bf11213e6889d800d9f4bcb3683c95d4f482afb12d66ce
|
|
BLAKE2b-256 checksum How to use checksums |
0859f16ffa7d80468dfd5806386447baf604f2d76e0d11916980fdcec5e71722
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp311-cp311-win_amd64.whl
| Download URL | lokit_python-0.5.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cbb4ece73c2e710381f86538c3358176b4670b7e3e39f077c840577fbc1a91fd
|
|
BLAKE2b-256 checksum How to use checksums |
2cf909e65c46987ba68236d0d0bf73a17410fe9de5cd04142305ef1a6bcf7eb3
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | lokit_python-0.5.3-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
95a75c411da0bbdbef88c85fc42c1f7c059211b6fae1c3dfe487d085b2088f62
|
|
BLAKE2b-256 checksum How to use checksums |
571b5b1c3070215dfa931326336adaf12c9fd0095317ea3347c1076fe7ea539f
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp311-cp311-macosx_12_0_x86_64.whl
| Download URL | lokit_python-0.5.3-cp311-cp311-macosx_12_0_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.11 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
79ac5c83a48905f90818d6ee7f668887763ffce857ba7aabb53f50fa10d1a3d7
|
|
BLAKE2b-256 checksum How to use checksums |
950575fbcc4ea7b9b21a19998be6ddbfd77044caeab029afe48578e31d3e9a2f
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp311-cp311-macosx_12_0_arm64.whl
| Download URL | lokit_python-0.5.3-cp311-cp311-macosx_12_0_arm64.whl |
|---|---|
| Size | 8.3 MB |
| Tags | CPython 3.11 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
312bb039e111efac77b1705a16dd79bd592358d7a9b3e63639393943541c92f3
|
|
BLAKE2b-256 checksum How to use checksums |
d7f8e871cf5e7df7ad9367a50b0a1f738a2b2f4669e8ec20507fd6628b278d52
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp310-cp310-win_amd64.whl
| Download URL | lokit_python-0.5.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5ccf0f3ae73d566b9c87560462aea8f038da2e4227528f1a0cad7dafd5fda04f
|
|
BLAKE2b-256 checksum How to use checksums |
8bad82d21c0b65785fec8ae0af80b6cd5b9960d3a5bb073894db25c52549c6f1
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | lokit_python-0.5.3-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7590a731d82f248426bcd6c88f19be189ecfb03e49f8460cb61bdc2ba00f15bc
|
|
BLAKE2b-256 checksum How to use checksums |
127aa19522289d4808e212aedcea4cada50f70f6126e6d1cd1e01d0b666053fe
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp310-cp310-macosx_12_0_x86_64.whl
| Download URL | lokit_python-0.5.3-cp310-cp310-macosx_12_0_x86_64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.10 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
a2ba46f859f304c34da5a8b942cf1571a6b439999cfdce04eb3aec319d3807e7
|
|
BLAKE2b-256 checksum How to use checksums |
85946b27bf4bb4f4f29398398b3bd7995faa4ec16200a3f2293ec61b4934daea
|
| 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 3, 2026.
Transparency logRelease files / lokit_python-0.5.3-cp310-cp310-macosx_12_0_arm64.whl
| Download URL | lokit_python-0.5.3-cp310-cp310-macosx_12_0_arm64.whl |
|---|---|
| Size | 8.3 MB |
| Tags | CPython 3.10 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
898418389d5925e9897ff4741f314e406ca65bcec985d3dc4b15b19408ba7a75
|
|
BLAKE2b-256 checksum How to use checksums |
c7910e4565e11c4bb2ec6ed1c73230c0fcc5b8713bb79221db9fcc48df3cbba5
|
| 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 3, 2026.
Transparency log