Skip to main content

jpnorm

PyPI Python CI License

日本語テキストの「表記ゆれ」を、用途に合わせて 1 行で吸収するライブラリ。 Rust 製コアを Python から使います。neologdn の置き換えから、検索前処理、LLM 出力の評価、 名寄せまで、プリセットを選ぶだけで始められ、必要ならフラグ単位で細かく調整できます。

Fast, configurable Japanese text normalization. Rust core with Python bindings. Pick a preset (neologdn_compat, for_search, for_compare, for_display) or tune 37 flags; unifies old/variant kanji (國→国, 髙→高), katakana loanword spellings (ヴァ→バ, trailing ー), iteration marks (人々→人人), era years (令和6年→2024年); protects URLs / emails / mentions, handles emoji, converts kanji numerals, applies custom synonym dictionaries. 3 to 5 times faster than neologdn.

import jpnorm

jpnorm.normalize("ハンカクカナ と  全角  !!")
# => 'ハンカクカナ と 全角 !!'

ブラウザで試す → https://yoshitakaoyama.github.io/jpnorm/ (テキストを貼ると全プリセットの結果が並びます)

こんなときに使います

日本語には「同じ意味なのに文字列としては別物」になる書き方が大量にあります。 半角カナと全角カナ、全角英数と半角英数、ー と 〜 と -、㈱ と (株)、 三百二十円 と 320円、コンピューター と コンピュータ、ヴァイオリン と バイオリン、 渡邊 と 渡辺、髙橋 と 高橋、人々 と 人人、令和6年 と 2024年、幽☆遊☆白書 と 幽白……。 これらを放置すると、次のような問題が起きます。

困りごと 何が起きているか jpnorm でどうするか
検索・RAG で「ヒットするはずの文書」が出てこない 索引側と検索語で表記が違う for_search で両方を同じ形に揃えてから索引・検索する
LLM / OCR / 音声認識の精度を測ると、正解と「実質同じ」なのに不一致になる 全角半角・記号・漢数字の違いで完全一致が失敗 for_compare で潰してから compare() で判定する
顧客名・商品名の名寄せや重複検出で取りこぼす 社内独自の略称・表記ゆれ カスタム辞書で 幽白 → 幽遊白書 のように正規形へ寄せる
ユーザー投稿を表示したら半角カナやゼロ幅文字で崩れた 見た目に影響する文字と、見えない制御文字 for_display で見た目を壊さない範囲だけ整える
neologdn を使っているが、URL が壊れる・絵文字を消したい・設定を変えたい neologdn は固定処理で設定できない neologdn_compat から始めて、必要なフラグだけ足し引きする

インストール

pip install jpnorm
# または
uv add jpnorm

Python 3.10 以上。Linux (x86_64 / aarch64)・macOS (x86_64 / arm64)・Windows (x64) の wheel を配布しているので、Rust ツールチェーンは不要です。 コマンドラインだけ使いたい場合は pipx install jpnorm で jpnorm コマンドが入ります。

ユースケース別ガイド

索引を作るときと検索するときの両方で同じ Normalizer を通します。 URL やメールアドレスは壊さず、絵文字は落とし、記号のバリエーションを揃えます。

from jpnorm import Normalizer

n = Normalizer("for_search")

docs = ["PYTHON入門 〜〜 初心者向け🔰", "python 入門(初心者向け)"]
n.normalize_batch(docs)
# => ['python入門 〜 初心者向け', 'python 入門(初心者向け)']

n.normalize("詳細は https://example.com/Docs?Q=1 を参照 📎")
# => '詳細は https://example.com/Docs?Q=1 を参照'   ← URL はそのまま

検索でヒット落ちの原因になりやすい「同じ語の別表記」も、辞書なしで同じ形に落とします。

n.normalize("コンピューター")      # => 'コンピュータ'   ← 末尾長音 (JIS Z 8301 方式)
n.normalize("ヴァイオリン")        # => 'バイオリン'
n.normalize("ウェブサーバー")      # => 'ウエブサーバ'
n.normalize("渡邊さんと髙橋さん")  # => '渡辺さんと高橋さん'   ← 旧字体・異体字
n.normalize("人々の舊字體")        # => '人人の旧字体'   ← 繰り返し記号・旧字体
n.normalize("令和6年度予算")       # => '2024年度予算'   ← 元号

英字は小文字に揃えます (case="keep" で無効化)。日本語と英数字の間の空白は残します (cjk_spacing="remove" で削除)。

2. LLM / OCR / 音声認識の出力評価 (for_compare + compare)

「正解データと実質同じか」を判定したい場面です。全角半角・記号・漢数字・空白の違いを すべて潰した上で、完全一致・前方一致・編集距離・LLM judge のいずれかで比較します。

from jpnorm import Normalizer, compare

n = Normalizer("for_compare")

n.normalize("合計:¥1,200(税込)")    # => '合計¥1200税込'
n.normalize("合計:¥1,200(税込)")            # => '合計¥1200税込'   ← 同じ形になる
n.normalize("第一章 はじめに")             # => '第1章はじめに'
n.normalize("売上 1万2千円 (令和六年)")      # => '売上12000円2024年'

compare("テスト結果:123", "テスト結果:123", strategy="exact", normalizer=n).matched
# => True

r = compare("東京都渋谷区", "東京都渋谷区神南1-2-3", strategy="prefix", normalizer=n)
r.matched, r.detail["direction"]
# => (True, 'prediction_is_prefix_of_reference')

r = compare("kitten", "sitting", strategy="edit_distance", threshold=0.5)
r.score   # => 0.571...  (1 - 編集距離 / 長さ)

意味的な一致まで見たい場合は LLM judge が使えます (pip install "jpnorm[anthropic]" または [openai])。

compare(
    "東京タワーの高さは333メートルです",
    "東京タワーは高さ 333m",
    strategy="llm_judge",
    llm_provider="anthropic",        # or "openai"
    llm_model="claude-haiku-4-5",
    threshold=0.8,
)

judge_fn= に自前の判定関数を渡せば API を呼ばずにテストできます。 API キーは ANTHROPIC_API_KEY / OPENAI_API_KEY から読みます。

3. 名寄せ・重複検出 (for_compare + カスタム辞書)

自社サービス名・作品名・人名など、辞書にしか載っていない表記ゆれは カスタム辞書で正規形に寄せます。辞書は正規化の最終段で最長一致置換されます。 キーは生の表記のまま書いて構いません (同じ設定で正規化してから照合されます)。

n = Normalizer("for_compare").with_custom_dict({
    "幽遊白書": ["幽白", "ゆうはく", "幽☆遊☆白書"],
    "株式会社サンプル": ["サンプル社", "(株)サンプル", "㈱サンプル"],
})

n.normalize("㈱サンプル")            # => '株式会社サンプル'
n.normalize("幽☆遊☆白書 第1巻")     # => '幽遊白書第1巻'
n.normalize("渡邊 太郎")             # => '渡辺太郎'   ← 異体字は辞書なしで統一される

# 重複検出はキーを揃えるだけ
records = ["㈱サンプル", "サンプル社", "株式会社サンプル"]
len({n.normalize(r) for r in records})   # => 1

辞書はファイルからも読めます (拡張子で形式判定、format= で明示も可)。

n = (
    Normalizer("for_compare")
    .load_custom_dict_file("brands.json")   # {"正規形": ["表記ゆれ", ...]}
    .load_custom_dict_file("terms.csv")     # 表記ゆれ,正規形
    .load_custom_dict_file("terms.tsv")     # 表記ゆれ<TAB>正規形
)
n.custom_dict_size      # 登録エントリ数
n.clear_custom_dict()

一般語の同義語は SudachiDict の synonyms.txt (Apache-2.0) をそのまま読み込めます。ライブラリにはバンドルしていないので 必要な場合はダウンロードしてください。

curl -fSL -o synonyms.txt https://raw.githubusercontent.com/WorksApplications/SudachiDict/develop/src/main/text/synonyms.txt
n = Normalizer("for_search").load_sudachi_synonyms("synonyms.txt")
n.normalize("パソコンを買った")   # => 'パーソナルコンピュータを買った'

4. ユーザー投稿の表示前クリーンアップ (for_display)

「見た目を壊さない」が原則です。半角カナだけは全角にし、絵文字・全角記号・空白は残します。

n = Normalizer("for_display")
n.normalize("ハンカクカナ + 全角 🗼")   # => 'ハンカクカナ + 全角 🗼'

保存前のサニタイズ (ゼロ幅文字・制御文字・Bidi 制御文字の除去、改行コード統一) を 足したい場合はフラグを重ねます。Bidi 制御文字の除去は Trojan Source 対策にもなります。

n = Normalizer(
    "for_display",
    remove_zero_width=True,
    remove_control=True,
    remove_bidi_control=True,
    normalize_newlines=True,
)
n.normalize("ゼロ幅\u200b文字と\u202e制御\r\n改行")   # => 'ゼロ幅文字と制御\n改行'

5. neologdn からの移行 (neologdn_compat)

引数なしの jpnorm.normalize() がこれです。半角カナ→全角、全角英数→半角、 長音符の畳み込み、空白の畳み込みなど neologdn と同等の処理を Rust で行います。

import jpnorm

jpnorm.normalize("ハンカク ト 全角 ABC")   # => 'ハンカク ト 全角 ABC'
jpnorm.normalize("あ〜〜〜")              # => 'あ〜'

neologdn と意図的に違う点は次のとおりです (ゴールデンテストで管理しています)。

  • 日本語に隣接する空白を neologdn は削除しますが、jpnorm は 1 つに畳むだけで残します (== 概要 == は neologdn では ==概要==)。削除したい場合は cjk_spacing="remove"
  • 〜 ~ を neologdn は削除しますが、jpnorm は 〜 に統一して残します
  • ‘’ “” ¥ を neologdn は独自変換しますが、jpnorm は既定では触りません (unify_quotes=True で統一可)
  • jpnorm は NFKC を掛けるので、℃ → °C、㎞ → km、Ⅰ → I、… → ... になります (neologdn は残します)。避けたい場合は nfkc=False
  • 横棒 ― (U+2015) を neologdn は長音 ー にしますが、jpnorm はダッシュ - にします
  • 罫線 ─ ━ を neologdn は常に ー にしますが、jpnorm はかなの直後 (ハ─ト → ハート) だけ ー にし、それ以外 (日本全史─ジャパン) は - にします

移行後に「URL は保護したい」「絵文字は消したい」となったら、そこからフラグを足すだけです。

n = Normalizer("neologdn_compat", protect_urls=True, emoji="remove")

プリセット早見表

名前 いつ使うか NFKC 記号統一 旧字体・異体字・々 外来語統一 小文字化 元号→西暦 URL 保護 絵文字 漢数字→数字 記号除去 日英間の空白
none 自分でフラグを積む 残す 残す
for_display UI 表示・投稿プレビュー 長音のみ 残す 残す
neologdn_compat neologdn 置き換え (既定) ✓ ✓ 残す 残す
for_search 検索索引・RAG ✓ ✓ ✓ ✓ ✓ ✓ ✓ 除去 残す
for_compare 精度評価・名寄せ・重複検出 ✓ ✓ ✓ ✓ ✓ ✓ 除去 ✓ ✓ 削除

一覧は Normalizer.presets() で取得できます。迷ったら、表示なら for_display、 それ以外は for_search から始めて、必要に応じて for_compare に寄せるのがおすすめです。

細かく調整する

プリセットをベースに、キーワード引数で個別フラグを上書きできます。 キーは Normalizer.config が返す dict と同じで、Normalizer(**n.config) で複製できます。

n = Normalizer(
    "for_search",
    emoji="keep",              # 絵文字を残す
    kana="kata_to_hira",       # カタカナをひらがなに統一
    url_wrap=("<", ">"),       # URL を <...> で囲む (Slack/Markdown の自動リンク)
    repeat_limit=3,            # 同一文字の連続を 3 つまでに短縮
)
n.normalize("スゴーーーーイ😀 https://example.com")
# => 'すごーい😀 <https://example.com>'

n.config["nfkc"]   # => True
キー 型 内容
normalize_newlines bool CRLF / CR / NEL / LS / PS を LF に統一
remove_zero_width / remove_control / remove_bidi_control bool 不可視・制御文字の除去
nfkc bool Unicode NFKC (全角英数→半角など)
halfwidth_kana_to_fullwidth bool 半角カナ→全角カナ
kana "keep" / "hira_to_kata" / "kata_to_hira" ひらがな⇄カタカナ統一
case "keep" / "lower" / "upper" 英字の大文字小文字
kyujitai_to_shinjitai bool 旧字体→新字体 (國→国、體→体、310 字)
unify_itaiji bool 人名・地名の異体字を代表字に (髙→高、﨑→崎、濵→浜)
remove_variation_selectors bool 異体字セレクタ (IVS) の除去
expand_iteration_marks bool 々ゝゞヽヾ の展開 (人々→人人)
unify_loanword_kana bool ヴァ→バ、ウェ→ウエ、ティ→テイ、ヂ→ジ など
strip_trailing_prolonged bool 4 文字以上のカタカナ語の末尾長音を落とす (サーバー→サーバ)
era_to_western bool 令和6年 / R6年 / 令和六年 → 2024年 (明治40年代 平成30年間 のような期間は変換しない)
cjk_spacing "keep" / "remove" / "insert" 日本語と英数字の間の空白を残す / 消す / 入れる
unify_hyphens / unify_tildes / unify_prolonged / unify_quotes bool 記号バリエーションの統一
collapse_prolonged_run bool 連続する長音符・チルダを 1 つに
repeat_limit int / None 同一文字の最大連続数 (英数字は対象外)
collapse_spaces / trim bool 空白の畳み込み・前後トリム
expand_cjk_compat / remove_cjk_compat bool 機種依存文字 (㈱①㌔) の展開 / 除去
remove_symbols bool 句読点・記号の除去。数字に挟まれた記号は数値を区別するため残す (3.14) か空白にする (2025/1/1 → 2025 1 1)
kansuji_to_arabic / arabic_to_kansuji bool 漢数字⇄算用数字 (排他)。1万2千 1.5億 のような混在も解釈
canonicalize_numbers bool 1,200 / 1200.00 → 1200。ハイフン区切りのコード (03-1234-5678) は触らない
protect_urls / protect_emails / protect_mentions / protect_hashtags bool 保護領域
url_wrap (str, str) / None 保護した URL を prefix/suffix で囲む
emoji "keep" / "remove" 絵文字の扱い
emoji_placeholder str / None 絵文字を指定文字列に置換

normalize / normalize_batch は処理中に GIL を解放するので、スレッドプールで並列化できます。

コマンドラインで使う

echo "ハンカクカナ と  全角  !!" | jpnorm
# ハンカクカナ と 全角 !!

jpnorm -p for_search --set emoji=keep --set kana=kata_to_hira "スゴーーーイ😀"
# すごーい😀

jpnorm -p for_compare --files --dict brands.json input.txt > normalized.txt
jpnorm --json "カナ"            # {"input": "カナ", "output": "カナ"}
jpnorm -p for_compare --show-config   # 実際に使う設定を JSON で表示
jpnorm --list-presets

パフォーマンス

neologdn (C++ 実装) と同じ入力で比較したスループットです (scripts/bench-vs-neologdn.py、Apple Silicon、Python 3.12)。

入力 neologdn jpnorm neologdn_compat jpnorm for_search
tweet (~100B) 15 MB/s 42 MB/s (2.9x) 29 MB/s (2.0x)
paragraph (~500B) 17 MB/s 70 MB/s (4.1x) 41 MB/s (2.4x)
large (~32KB) 17 MB/s 88 MB/s (5.3x) 45 MB/s (2.7x)

for_search は URL 保護・絵文字除去・機種依存文字展開が加わるぶん neologdn_compat より遅くなります。 normalize / normalize_batch は GIL を解放するので、スレッドプールでさらに並列化できます。

他のライブラリとの違い

jpnorm neologdn jaconv / mojimoji unicodedata.normalize("NFKC")
半角カナ・全角英数の統一 ✓ ✓ ✓ ✓
長音・ハイフン・チルダの統一 ✓ ✓
旧字体・異体字・繰り返し記号 (々) ✓
カタカナ外来語のゆれ (ヴ、末尾長音) ✓
元号→西暦、混在数値 (1万2千) ✓
用途別プリセット / フラグ設定 ✓
URL / メール / @mention の保護 ✓
絵文字の除去・置換 ✓
漢数字→算用数字、数値正規化 ✓
カスタム辞書・Sudachi 同義語 ✓
精度比較ユーティリティ ✓
実装 Rust C++ Python / C C

jaconv や mojimoji は「文字種変換だけしたい」場面では十分軽量です。 jpnorm は複数の処理を用途に合わせて組み合わせたいときに向いています。

Rust から使う

コアは jpnorm-core クレートとして独立しており、Python 無しでも使えます (現時点では crates.io 未公開のため git 依存で指定してください)。

[dependencies]
jpnorm-core = { git = "https://github.com/YoshitakaOyama/jpnorm" }
use jpnorm_core::{EmojiAction, Normalizer, Preset};

let n = Normalizer::builder()
    .preset(Preset::ForSearch)
    .configure(|c| c.emoji_action = EmojiAction::Keep)   // プリセットの一部を打ち消す
    .kata_to_hira()
    .build();
assert_eq!(n.normalize("カナ😀"), "かな😀");

// 保護領域の位置も取れる (検索ハイライト等に)
let r = n.normalize_with_segments("@alice と https://example.com だよ");
println!("{:?}", r.segments);

開発

git clone https://github.com/YoshitakaOyama/jpnorm.git
cd jpnorm
uv sync --group dev          # Rust 拡張をビルドして .venv に入れる
uv run pytest                # Python テスト
cargo test --workspace       # Rust テスト
cargo clippy --workspace --all-targets -- -D warnings
uv run ruff check . && uv run mypy
cargo bench -p jpnorm-core   # ベンチマーク (criterion)
uv run --with neologdn scripts/bench-vs-neologdn.py   # neologdn との比較表
wasm-pack build crates/jpnorm-wasm --target web --release --out-dir ../../playground/pkg --no-typescript
python -m http.server -d playground 8765   # プレイグラウンドをローカルで開く

Rust ソースを変更したら uv sync で再ビルドされます。 neologdn とのゴールデン比較テストは tests/golden/neologdn.jsonl を使い、 uv run --with neologdn scripts/gen-neologdn-golden.py で再生成できます。

リリースは CHANGELOG.md を更新し、v* タグを push すると wheel のビルド・PyPI 公開・ GitHub Release 作成まで自動で行われます。

ライセンス

MIT または Apache-2.0 のデュアルライセンス。好きな方を選んでください。

Metadata

Release files for jpnorm 0.1.1

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

Source distribution (sdist)

Source distribution for jpnorm 0.1.1
File Size Uploaded
jpnorm-0.1.1.tar.gz 101.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for jpnorm 0.1.1
File
jpnorm-0.1.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
jpnorm-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
jpnorm-0.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
jpnorm-0.1.1-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
jpnorm-0.1.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
jpnorm-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
jpnorm-0.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
jpnorm-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
jpnorm-0.1.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
jpnorm-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
jpnorm-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
jpnorm-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
jpnorm-0.1.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
jpnorm-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
jpnorm-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
jpnorm-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
jpnorm-0.1.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
jpnorm-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
jpnorm-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
jpnorm-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 10.9 MB

Release files / jpnorm-0.1.1.tar.gz

Download URL jpnorm-0.1.1.tar.gz
Size 101.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c98ed6e63cfae15412eb1c385be53367679af8e8dc2071bae1d318780c47f29c
BLAKE2b-256 checksum
How to use checksums
4ce92a9454bf240923393e467374c1525f1dcc32e699f32157e76d52e82a90aa
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp314-cp314-win_amd64.whl

Download URL jpnorm-0.1.1-cp314-cp314-win_amd64.whl
Size 340.5 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
2c61fdbd25406849f8e70ceee3456e8a9775ee64689ab7a34272ac969a74b333
BLAKE2b-256 checksum
How to use checksums
001275aab71b9cfbc6d3def4919ce277fd503fb4a6364615f0321c9a451dc249
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.4 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
00eb4116003983c150c19d4fab9619524ceffb349c16a70cbdf25d82c0f2f98d
BLAKE2b-256 checksum
How to use checksums
694414c6ccc1eedff15f2d3a78553c6737a1c8f6aee6a8689bc0c7015af06391
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 466.2 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a2139926dff9171720df19869bbd5fa8064200028cde7eafcfb19192a09f1f61
BLAKE2b-256 checksum
How to use checksums
b5b60a5cb885ab7ad11f02f45d2ae51765f62d7e0a2dc3f22a24443851ba6fa8
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Size 434.0 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b183bdedccd73d70c41c77ce643cff7e8e363db4298052ca583a42e7f2198f7b
BLAKE2b-256 checksum
How to use checksums
f1fefb75e2e74cbcb18da1c70c6565714825345676030bc7f3ccfc176465a636
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp314-cp314-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.1-cp314-cp314-macosx_10_12_x86_64.whl
Size 441.5 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
77fdf33d8810c3fb70828ce5f886f38ac8b65382965186239337e37f12a247d0
BLAKE2b-256 checksum
How to use checksums
3edf7209b7ceecd8e02db03c38093551fbcc06c34a7d6510eaca96dbcb5c7809
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp313-cp313-win_amd64.whl

Download URL jpnorm-0.1.1-cp313-cp313-win_amd64.whl
Size 340.6 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d2f8a25fa75fa2d4b5ddce72637a44e8e2dbbf3fa6eab754c4585ce753d4f55e
BLAKE2b-256 checksum
How to use checksums
282a7911c7fe58cd77b9fedfdc84fd007eadf4c9e972cea01ad23b7625c9cff3
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.1 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e086bff1da9cd6c6aea419b993fab965ee7f45fc919f95ef9a4a077217ed2865
BLAKE2b-256 checksum
How to use checksums
31e7a0e5e0e607cc6d2c28f6074c5da4f254073e2325c4e99ca78a8bcfb46e83
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 466.3 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
e03179005b2a85693b17ea2c50d8a8e62758e08853b01825423733415845728d
BLAKE2b-256 checksum
How to use checksums
178029eedb0e6396446370125c894655c8b22aeedcc6a4ce0ff0efd424070425
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Size 434.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1840b0a852fe88207b68611d42ddbb57773c34e7cd42abe9d8c1afafb4d514c3
BLAKE2b-256 checksum
How to use checksums
dbbdd51633d3ef6e9723fda7b01f3021a2c1fa25748b84841da89aea8ce5f56b
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 441.1 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
9b787770017b1039e55569f4da697b44df0dfd938a591f55201975167ac9d8e1
BLAKE2b-256 checksum
How to use checksums
881386ade482a43d44404b3f3a95edb355eb2bf81521190695c10c66f49a032a
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp312-cp312-win_amd64.whl

Download URL jpnorm-0.1.1-cp312-cp312-win_amd64.whl
Size 340.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
72a5e39e141f256ff671c6727f2727e1a081b5c1c675008ba3bbcfe4b784ae50
BLAKE2b-256 checksum
How to use checksums
2b874e4a7931bf9c7d8faa4ba0c5a0e0c243227e734e49b915f3cea46aa959f4
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.4 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
df7746ff2afbd8947dcfa20ba364630c96b75c43290e4d9b8c8622e9396541d8
BLAKE2b-256 checksum
How to use checksums
b45e0a9787b124d3db34d5dcbb65ba58e2a215c7a1c243ca8c620810ea44ec01
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 466.3 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
27e732cd7060124ad9d82673175681ff0a63e5a7a2638b623b680aa82e905c03
BLAKE2b-256 checksum
How to use checksums
fe73f1ccdf27a8c97b52eb11396ae8a4c1e825452e2bfcdf27dcc7928b3ef205
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Size 434.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1067766bb6cdf0ce8e6483687ccad8094821c660b6ab8e4d13bf87fd60daa7c0
BLAKE2b-256 checksum
How to use checksums
c6db392e1cc6dcda40ad906299f4fcb0ebbf687791dd500d30a42dd1453787a3
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 441.3 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b38dade7fbe035691d9099417314eb4f3e74d799275e91b035bad184a9eafb20
BLAKE2b-256 checksum
How to use checksums
21ac6e77e4f4f7476b75486e35a379f9ac33a4a86254402642ced82a17f6b376
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp311-cp311-win_amd64.whl

Download URL jpnorm-0.1.1-cp311-cp311-win_amd64.whl
Size 343.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
a45d21c9ff9f35989516aebab702695cff5672121c11ff1ea3726a829509e3cc
BLAKE2b-256 checksum
How to use checksums
5c96c0309163a7f65dc11e08da4c81c638f36fbe9041fb2cc8be2655cf3a35b1
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.5 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d6444e2a9b9bf89544bc0b8e7bfa66a09d00f358bafa5d1b0ed653e626620b4f
BLAKE2b-256 checksum
How to use checksums
56431e91f397585fa43bb08018e12df73fc116317ef3d3b4bbad289222d12674
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 467.1 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3200dd4a73e7d76c45b644286001c7958f88bf8fb60f0508850097f6cf7b9ea5
BLAKE2b-256 checksum
How to use checksums
3eb034a6b432562aadf1c26f0d0ceb650fcff1fc44d59ce65df569d502a7bc30
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Size 436.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
14327b31b47dfe8904d035fe5266eedeabbefe24d8235869c489adffb2c1b01c
BLAKE2b-256 checksum
How to use checksums
fb1ed8ef7b494a03cc0fb4d9acb7664901d9b9209a03bac53ed49b168877768c
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 439.5 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
73483f3b57ee4b5e5cba1694715f8b31896506bd7eabaa1097a8b08bef1096e5
BLAKE2b-256 checksum
How to use checksums
e4445c1809e099702ca28f3b6da18135fd33eb51b780ba35b728c154999f8fca
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp310-cp310-win_amd64.whl

Download URL jpnorm-0.1.1-cp310-cp310-win_amd64.whl
Size 343.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d55db306cc221d78cafc6768847fc1d9dcc66efc45887404b4c45b121b2caa35
BLAKE2b-256 checksum
How to use checksums
33a8c24210c2b0d9b4f10906d9159785e53a8b0dded116b14d2bee2a39c2f0aa
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
77130741d3cd5eeacac52da0a65c39b28c293d45a3623550bdacc7b3445c4d5b
BLAKE2b-256 checksum
How to use checksums
640038c2b38a3a3d97b4dbb82910bd4fc59edae6e2d5fc930e476849bec3e2dc
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 467.3 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
b533114db76aec4debfa67659c7a1a78f022abf9941ee608db785d155c3258fd
BLAKE2b-256 checksum
How to use checksums
382732df234abbf5eb4a40f6cdaf93f6e05cfa78e067f6900e3d4f9be1fd383b
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Size 436.3 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c95bdf683b9f95a89c62a8d09e39196c9880d8082e67093988bec4f9242c35ae
BLAKE2b-256 checksum
How to use checksums
bcb3d33a79998857195f2f63fc5661702bc04c7408cc52383a4d25207547dcc0
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 Oct 6, 2026.

Transparency log

Release files / jpnorm-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl
Size 439.5 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b4b1103c6710f71f16ceff88b3e39eee8f0eb78264aa2e2314070924d3fb8a65
BLAKE2b-256 checksum
How to use checksums
02b6d7588882631ccabd523d0c769765e1a5203abe71f2ff04db48784efd1ae7
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 Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

26 release files

0.1.0

26 release files

0.0.4

31 release files

0.0.3

31 release files

0.0.2

26 release files

0.0.1

25 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page