Skip to main content

normalizer-or

Odia text, ready for speech.

A Rust engine with a typed Python API for Odia speech normalization and written-text cleanup.

Author: Sambit Sekhar

CI Publish Robustness PyPI Python Rust License Typed Status

Open In Colab

Quick start · Examples · Python API · Formats · Publishing

ଆଜି ୨୫ kg ଚାଉଳ।  →  ଆଜି ପଚିଶ କିଲୋଗ୍ରାମ ଚାଉଳ।
₹25.50             →  ପଚିଶ ଟଙ୍କା ପଚାଶ ପଇସା

Runs offline with no speech model, API key, network service, or runtime Python dependencies.

What it does

Operation Purpose Example
normalize Expand supported notation into Odia speech text ୨୫ kg → ପଚିଶ କିଲୋଗ୍ରାମ
clean Apply NFC and optional digit/whitespace conversion 123 → ୧୨୩ with digits="odia"
  • Odia and ASCII digits: mixed digits, Indian/international grouping, lakh/crore scales, signs and exact decimals.
  • Everyday notation: INR/paise, percentages, ten unit labels, Gregorian dates and 24-hour clocks.
  • Inspectable results: completeness, source segments, issues and fallback assumptions with original UTF-8 byte offsets.
  • Bounded execution: input/output limits, cooperative cancellation and deadlines; reuse one normalizer across threads.

English prose and names stay as written. URLs, email addresses and opaque identifiers are protected from partial numeric expansion. Coverage and spellings are alpha defaults pending native-speaker/audio review; passing tests do not establish speech quality.

Quick start

Install

After the first successful PyPI release:

pip install normalizer-or
# Or use uv in your virtual environment:
uv pip install normalizer-or
# Or add it to a uv-managed project:
uv add normalizer-or

PyPI publication requires the one-time publisher setup. The PyPI version badge populates after the first upload. Until then, install from GitHub with Git and Rust available:

python -m pip install "git+https://github.com/OliveSuite-AI/normalizer-or.git#subdirectory=bindings/python"
# Or:
uv pip install "git+https://github.com/OliveSuite-AI/normalizer-or.git#subdirectory=bindings/python"

Compatible release wheels need no Rust compiler. Source builds require Rust. Supported interpreters are CPython 3.11–3.14. From a local checkout, use python -m pip install ./bindings/python.

Normalize and clean

from normalizer_or import Normalizer

n = Normalizer()
spoken = n.normalize("ଆଜି ୨୫ kg ଚାଉଳ।")
assert spoken.normalized_text == "ଆଜି ପଚିଶ କିଲୋଗ୍ରାମ ଚାଉଳ।"
assert spoken.complete

written = n.clean("  ଓଡ଼ିଆ 123\n", digits="odia", whitespace="collapse")
assert written.normalized_text == " ଓଡ଼ିଆ ୧୨୩ "

Choose how to handle unresolved text

Policy Result
preserve — default Retain unresolved source; return complete=False and issues
reject Raise NormalizationError with diagnostics
fallback Read the source literally; record assumptions in fallbacks
result = n.normalize("29/02/2025", ambiguity_policy="preserve")
assert not result.complete
assert result.normalized_text == "29/02/2025"
print(result.issues)

Fallback does not repair dates or certify identifiers. Hint and diagnostic ranges count original UTF-8 bytes, not Python characters. Cleanup is a separate call; speech normalization never silently rewrites the input first.

Examples

Input Speech output
1୨3 ଏକ ଶହ ତେଇଶ
1,00,000 ଏକ ଲକ୍ଷ
1,00,00,000 ଏକ କୋଟି
₹25.50 ପଚିଶ ଟଙ୍କା ପଚାଶ ପଇସା
12.5% ବାର ଦଶମିକ ପାଞ୍ଚ ପ୍ରତିଶତ
09:30 ନଅ ଘଣ୍ଟା ତିରିଶ ମିନିଟ

Try the Colab notebook in a fresh CPU runtime, or run all seven self-checking Python scripts:

python bindings/python/examples/run_all.py

Examples cover speech, cleanup, all three policies, all four hint kinds, UTF-8 source inspection, JSON, errors, cancellation, threaded batches and JSONL files.

Rust

Use a local path dependency until the Rust crate is published:

[dependencies]
normalizer-or = { path = "/path/to/normalizer-or" }
use normalizer_or::{NormalizeError, NormalizeOptions, Normalizer};

fn main() -> Result<(), NormalizeError> {
    let n = Normalizer::new()?;
    let result = n.normalize("୨୫ INR", &NormalizeOptions::default())?;
    assert_eq!(result.normalized_text(), "ପଚିଶ ଟଙ୍କା");
    Ok(())
}

Tests and releases

CI checks the Rust core, minimum Rust version, Python bindings and independent Rust/Python conformance records. Scheduled robustness jobs exercise additional seeds and long inputs. The testing guide explains replaying failures.

A merged PR to main is published after its CI passes. Release automation allocates a new patch version, builds and tests 16 wheels plus an sdist, validates metadata, and uploads through PyPI Trusted Publishing. Manual build-only and TestPyPI runs are available. See release setup and versioning.

Documentation

Guide Contents
Python API Results, hints, controls and errors
Normalization contract Formats, boundaries, policies and limits
Runnable examples Scripts and Colab notebook
Publishing PyPI setup, automatic versions and release recovery
Development Build and verification commands
Robustness Oracles, properties and cross-language checks
Performance Measurement guidance
Provenance Vocabulary and review status

Licensed under Apache-2.0. Required source and dependency credits remain in third-party notices.

Metadata

Release files for normalizer-or 0.1.0

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

Source distribution (sdist)

Source distribution for normalizer-or 0.1.0
File Size Uploaded Provenance Actions
normalizer_or-0.1.0.tar.gz 363.1 kB With provenance Details for normalizer_or-0.1.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for normalizer-or 0.1.0
File Actions
normalizer_or-0.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for normalizer_or-0.1.0-cp314-cp314-win_amd64.whl
normalizer_or-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for normalizer_or-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
normalizer_or-0.1.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for normalizer_or-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
normalizer_or-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details for normalizer_or-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl
normalizer_or-0.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for normalizer_or-0.1.0-cp313-cp313-win_amd64.whl
normalizer_or-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for normalizer_or-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
normalizer_or-0.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for normalizer_or-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
normalizer_or-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details for normalizer_or-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
normalizer_or-0.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for normalizer_or-0.1.0-cp312-cp312-win_amd64.whl
normalizer_or-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for normalizer_or-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
normalizer_or-0.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for normalizer_or-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
normalizer_or-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details for normalizer_or-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
normalizer_or-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for normalizer_or-0.1.0-cp311-cp311-win_amd64.whl
normalizer_or-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for normalizer_or-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
normalizer_or-0.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for normalizer_or-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
normalizer_or-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details for normalizer_or-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl

Total release size: 10.1 MB

Release files / normalizer_or-0.1.0.tar.gz

Download URL normalizer_or-0.1.0.tar.gz
Size 363.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c07c0258912c3adaef755f4ac238af87ac190efa23c04423885938fdd367b749
BLAKE2b-256 checksum
How to use checksums
fd345d47dd06339895c585220ae2babf2c5cf0bd8e5991bd65ba5c2425b600bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp314-cp314-win_amd64.whl

Download URL normalizer_or-0.1.0-cp314-cp314-win_amd64.whl
Size 529.5 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
c8ff776dc81e2b5d25aee9ad7af2ba7e8fbca7b6fc5c5b820b585a1a80f4f886
BLAKE2b-256 checksum
How to use checksums
22bca2a7ed774bb50c7a21f535e82f89945586db67d86fec7f9145e1715d9af7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL normalizer_or-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 638.7 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a4d0d5663ca5784cff864a43dd673825fef9b9269df8b7f879039a1efe2c92cf
BLAKE2b-256 checksum
How to use checksums
253297f1a3ffaceb1c61f3bc6d8b46ae5467e7d6ae74c6d77c08d1aa4e17f359
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL normalizer_or-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Size 632.5 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
046ccfedfd493613f0e3a126a1152a15d8fcd4e297c9dfd6d569f991676ea460
BLAKE2b-256 checksum
How to use checksums
6972081d1a74cc5283987de5b6e8c402baaf0d3b5897e07ca23bbfec360c90c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl

Download URL normalizer_or-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl
Size 638.0 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c640f12e4370e617ca83f82b2f80a5761e01d87965c8499cf9d7962c89d5b826
BLAKE2b-256 checksum
How to use checksums
2d849aaa9b84308275b50f0da619519d9950375f5bdd36e3f680e704665bf7c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp313-cp313-win_amd64.whl

Download URL normalizer_or-0.1.0-cp313-cp313-win_amd64.whl
Size 529.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
39f813dbeb3f356fa67b1f603f129d787e07c5594373366b8c7704788c99b48a
BLAKE2b-256 checksum
How to use checksums
806aedbf06dd7fe79e3fec37c3af20ebbd807b957d0754da17bd992c0c4032e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL normalizer_or-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 638.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b80094f72dcd5635f21d47d51036e56d01755c7d942e1e179a86d2b5509d5737
BLAKE2b-256 checksum
How to use checksums
e5f6370f5c51612b7cb80681ed3e3eb33c311a22c89387e4447a1d98ee5c4507
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL normalizer_or-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 632.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7cc21e807e9f01f566b32bdfc5ee264f0a7bf2791f5c5b22950261613d234285
BLAKE2b-256 checksum
How to use checksums
fe28d2538f704c3bb039b9b6ae54c6bd6516ea5e2c853eed580d7d6dff39577e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL normalizer_or-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 636.8 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c2393ecc0ef233ae1d4ce205b93aabe5be39c36662f34a0e9cefbd0d774f43c7
BLAKE2b-256 checksum
How to use checksums
43175dababcd134029e70173c374990a65f7592fd29066e9607057049aa8cefd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp312-cp312-win_amd64.whl

Download URL normalizer_or-0.1.0-cp312-cp312-win_amd64.whl
Size 528.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6926ca86dddb791c7cde873b8ab886174ecdd20e869f615b445395762ec284ee
BLAKE2b-256 checksum
How to use checksums
0f500195baf5afcf5d60ca281a6f760a655caeff356ff6f128f16847bf685ff0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL normalizer_or-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 637.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fb3c7ecc8272fe4c3c0480e5b1126499c6d09e49cfdf98252e6d15c8aa88b2bc
BLAKE2b-256 checksum
How to use checksums
f263a88b95e9d9c870c4d46e9cb4f6c0bf3e9d5cd7adb7469b49cf23ab0ebb1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL normalizer_or-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 631.9 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
54ed94139c938a0ff3e4b3a38278c97aec07cdf955fba0f9233b5bca106f5bfb
BLAKE2b-256 checksum
How to use checksums
0d527ae5a7b1ec814d5a3e7cc9d3ab58e2e389e6ee9a4943e214cbed101e7ceb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL normalizer_or-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 636.5 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
79e89566738740d24d94ac7b045b04e23d5673fe19683b5cf62351138fae7a36
BLAKE2b-256 checksum
How to use checksums
95d4b79c4f21eb790990516a8905803276afc68c5fa70f26e9dcb0ff3db75879
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp311-cp311-win_amd64.whl

Download URL normalizer_or-0.1.0-cp311-cp311-win_amd64.whl
Size 531.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
f36efb9e7ed9f3987229b244dd61b9c919f0db16dd214c00ec0bc9e8aa517cc2
BLAKE2b-256 checksum
How to use checksums
010bdd27b1f2e72b9984f9223e3d48f25e0d68470aac47c4428b9893af7beebe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL normalizer_or-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 641.7 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f8ea44eb7be21ef5cc2f73ceb28276b6ea9842bf0b3e849d7ed33a587d6ff244
BLAKE2b-256 checksum
How to use checksums
2b9555cad83a1b7a649539e1ac5d042aaae92ec9803c21230854f3c8fe56e4f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL normalizer_or-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 638.4 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2216e6cb39583e14529cc4fecb78d959bc51a118940a64142c7bdaea082a0fbd
BLAKE2b-256 checksum
How to use checksums
a26cd44de6f2d6eb4e589dfea3c86501c58a2e04186b9b45d54934299e47fc9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Release files / normalizer_or-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL normalizer_or-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 636.7 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
676c9ff76a2f35fea81ffad81feb18ca922c6a4624f4e43be6a2bf52a27290be
BLAKE2b-256 checksum
How to use checksums
2a869bf8ade893b6d4310b1a9b1f19a6d0f1086b037b6726fdf8f6d26ca8772f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 23, 2026.

Transparency log

Security for normalizer-or 0.1.0

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.

Full provenance

All 17 files in this release have been uploaded with provenance metadata.

Select from 17 files

Attestation for normalizer_or-0.1.0.tar.gz

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 Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

17 release files Full provenance

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