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.2

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.2
File Size Uploaded
jpnorm-0.1.2.tar.gz 102.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for jpnorm 0.1.2
File
jpnorm-0.1.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
jpnorm-0.1.2-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.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
jpnorm-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
jpnorm-0.1.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
jpnorm-0.1.2-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.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
jpnorm-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
jpnorm-0.1.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
jpnorm-0.1.2-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.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
jpnorm-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
jpnorm-0.1.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
jpnorm-0.1.2-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.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
jpnorm-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
jpnorm-0.1.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
jpnorm-0.1.2-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.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
jpnorm-0.1.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
jpnorm-0.1.2-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.2.tar.gz

Download URL jpnorm-0.1.2.tar.gz
Size 102.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5bfa4872b41132772d7e775ae12e25753aece1f320a87e2cc0a0e5e1ee39d243
BLAKE2b-256 checksum
How to use checksums
211918c237c691609548d859d9f2fe0f19f0570dac0d7a7eafd24763c693398d
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.2-cp314-cp314-win_amd64.whl

Download URL jpnorm-0.1.2-cp314-cp314-win_amd64.whl
Size 340.8 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
cf485ff03a4149f5a7291d35f09b7e5ab5b3f8fb84fed5b28c6be7085f54dfbd
BLAKE2b-256 checksum
How to use checksums
4310cd3e79ba906382aa2e0a0ed80fc26e822feaa59058c03bf1d475896ecdd2
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.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.7 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
991667e75a0517cf3ab0ec6d47b646fc0ed68fdd1f773bb888fe7b7d6b4948a7
BLAKE2b-256 checksum
How to use checksums
3a88d016ff28b0d76289bcabafe1f164c19cc3d7564b23d1ecb505b0a5f61b35
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.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 467.0 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
cd9bc4960f7678ab14f4f77909ec050cd05a9d8ca7193c6d2f5ff4c24275e2a9
BLAKE2b-256 checksum
How to use checksums
b9ca870c0f6ddc1adf49ab8c4b40b195976466f041daf07b365200068d674533
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.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Size 434.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8f62b061790a2b01b35eb910bdf71ad2288bf05105c2ac1613b29c4a0fe51ff8
BLAKE2b-256 checksum
How to use checksums
10550da3c5e7b1e74ce77f32dc53af1f5bf1d02e8e0ef02e6de7286bf14f78a7
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.2-cp314-cp314-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl
Size 441.9 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
8bb4e4213d7911e133c0ff61868d409fb890053118e2fae1d8511485ca06ea85
BLAKE2b-256 checksum
How to use checksums
0295383bf277dc84ed06926021e72bbb7ab9f8c880ba3759bb82d235555e0f58
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.2-cp313-cp313-win_amd64.whl

Download URL jpnorm-0.1.2-cp313-cp313-win_amd64.whl
Size 341.0 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
ab151694659503dd8ed4992a51d35ea42c0c8a9dc52735af124b6b0040d81405
BLAKE2b-256 checksum
How to use checksums
0ca2aac3f4d3857719b1a8df1417f4cfe9d5565b7e6feecd47aa256cb2998bd3
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.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f343a7e69aa4cbc67c8415546ea20d4d27ff390d69823f5f5703a1a9fc3bde70
BLAKE2b-256 checksum
How to use checksums
aa2e21bbebff3635f19850558f3d102df7b38c0402cf16f4a910cbd985da90d9
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.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 466.8 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
9c1037e66c9c0237ac19615bbf0bf4089db9f3aef74924dc011970f431d906b4
BLAKE2b-256 checksum
How to use checksums
feae0e0829003f966081de926443d29f19ba493c9f1635c9fa69eec6c30920b6
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.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Size 434.3 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d79d8423c89ea65fc584b04f353b6fbd496f1fba72b9352f064afb6bbd1347d8
BLAKE2b-256 checksum
How to use checksums
d44a31b6255a29138d95ef8ddca837e4790caf49490dbcf860b72a69b957ab2e
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.2-cp313-cp313-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl
Size 441.6 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
63d25dcbffd94f1547c07e3fb2713258c2bb38ff325e58986671b91ef07bddf1
BLAKE2b-256 checksum
How to use checksums
e10ee96a8636beb0e05570e9082274fdbc388db43acb5eba4ade0af0486dc2a6
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.2-cp312-cp312-win_amd64.whl

Download URL jpnorm-0.1.2-cp312-cp312-win_amd64.whl
Size 340.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
fb71d63b882636498fd61690c09e3d2d71412c20da82df8cd090307def585181
BLAKE2b-256 checksum
How to use checksums
0c1c84457aa44885505573be60a4b8a1ae022e8c6f63584ec6f0673584144dab
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.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.6 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
007e44a94ad5e77a859c5c8f3d1e588e16a9893b53cf82af8b838fcbc52f395f
BLAKE2b-256 checksum
How to use checksums
c397ae81a2333178d6b05e9524e7a89be478fc0686c8066f0494a65e54ca85a1
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.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 467.1 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
aa08f1b442ddc6f9724256a58d2291a8bf932086a1c8c9b96d4168aecac383e3
BLAKE2b-256 checksum
How to use checksums
64b7e4e7af688be995198b56b3b93077e4bf654779b2747f641f72d9e76fe04d
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.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Size 434.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
70002cda87366efe0c3411d6994c40f966e9dd492e5c8c4c00143402f8bf1968
BLAKE2b-256 checksum
How to use checksums
56d4b546a4c92d2c942b5477e3d54f9ace8f146c451fed68410c709f78cf92d5
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.2-cp312-cp312-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl
Size 441.8 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c3ea027fe64467ef9e99820e320314a005e2c116d4be2ade9a3244729da3d87d
BLAKE2b-256 checksum
How to use checksums
b84bb7f63d447e92032ee5d0ec26653b0a58f64afb7b4766071cb806881b2c21
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.2-cp311-cp311-win_amd64.whl

Download URL jpnorm-0.1.2-cp311-cp311-win_amd64.whl
Size 343.7 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2cae337019605be42f61aa213751c7d46f1267d775b55246ba56f8eb16c5ed24
BLAKE2b-256 checksum
How to use checksums
b9f3ab74f9f92de72445ba43e277300afd7a49442e93a44281806a74cf67e3a3
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.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b405634eea7067cebe6a6655bda3e1b6b1aa50cef6da5c71ee0e6ac09fe33faf
BLAKE2b-256 checksum
How to use checksums
c6f8cabef7c2c2042a69a780cdf6784129dec0e069ed0b21df7e169d1646bedd
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.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 467.7 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
f8d5255368e7b13ee6ce98a32b8a102fe268258312ec76d86bd6242bd05cdcd8
BLAKE2b-256 checksum
How to use checksums
85ca76da84bb531e9ca1368df432d226f9cfc1539b8ca792e06eccb5e04ed4e3
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.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Size 437.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b6986ed830d4a48bd6ff0aeed00e082164a4ab0508e916eb44f87b0b24936f0e
BLAKE2b-256 checksum
How to use checksums
b70cb0832906967c9342ac84d2d5bf398711dadd0bac6f6a4faa05c70a88967d
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.2-cp311-cp311-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl
Size 440.0 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
59c206a3c2cd5a65ba68b211f89a271aa76e4d99e11b15d9a377efe8a97a1172
BLAKE2b-256 checksum
How to use checksums
6511151902aa7af7c84f6869d1cb6c91dacbed626d8267dd9cb8a0d818165af1
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.2-cp310-cp310-win_amd64.whl

Download URL jpnorm-0.1.2-cp310-cp310-win_amd64.whl
Size 343.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
20175e04f43a5fd5654495c3669d8b83b9ddac3b7bfbf45b617101d490de6d7d
BLAKE2b-256 checksum
How to use checksums
05f3b08340bc831173625dfcd5b2be23a1c74e36859472ac79b1df3db01a283c
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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL jpnorm-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 466.9 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b5cf3e47cf4ae9715970e4993199bf08943866262dbea057869f25976b5b0a4e
BLAKE2b-256 checksum
How to use checksums
032f01044c37f79eb07e08f05fb1a40d3e4ca8102e0f6ab8b7c110bdaa5a2d7a
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.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL jpnorm-0.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 467.8 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a5b80a84a901ca8baf8638ee51188d337270ed30e526cdc4c8a16a9e3cda09ed
BLAKE2b-256 checksum
How to use checksums
4faab4ced0af78986789ea1de61bd4d1c6e1ee96c8d3662eb513c8a9cf09986a
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.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL jpnorm-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Size 436.9 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6cfc7c3117751a6b55b6b25ed128f0618cd40a0b77f4e567d8308f33d3f081ae
BLAKE2b-256 checksum
How to use checksums
dcc372b1016cdef61beaa2b1b3797a1bd46dca68e17b6a201680983ecdb7fdfe
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.2-cp310-cp310-macosx_10_12_x86_64.whl

Download URL jpnorm-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl
Size 439.9 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6a49547e9b28bfe6b6235be9638a480fd003b49cd14c63e275ffce35f3490f95
BLAKE2b-256 checksum
How to use checksums
ba28af9fb77c1e9e7ab4045b95721cea518149ac32404dceaa188f0042d5cebd
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.2 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