• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jqueguiner / num2words2
95%
main: 95%

Build:
Build:
LAST BUILD BRANCH: refactor/thin-num2words2-binder
DEFAULT BRANCH: main
Repo Added 17 Jan 2026 05:49PM UTC
Token Bt3d6ZRNkMfP1R29FrGOxHISSecLQRVXP regen
Build 383 Last
Files 167
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH refactor/thin-num2words2-binder
branch: refactor/thin-num2words2-binder
CHANGE BRANCH
x
Reset
Sync Branches
  • refactor/thin-num2words2-binder
  • add-26-missing-languages
  • add-croatian-language-support-v2
  • add-greek-language-support-v2
  • automated-pypi-publishing
  • chore/cratesio-metadata
  • ci/add-python-3.14-3.15
  • ci/auto-release-notes
  • ci/camo-cache-purge
  • ci/credit-contributors
  • ci/improve-coverage
  • docs/comprehensive-reference
  • feat/256-364-3decimal-cheque
  • feat/478-aviation-phraseology
  • feat/478-aviation-service-profiles
  • feat/478-en-aero
  • feat/584-fractions
  • feat/sentence-multilang-ordinals
  • fix/478-icao-strict-digits
  • fix/603-decimal-precision
  • fix/ar-e2e-stale-comma
  • fix/aur-ssh-key-newline
  • fix/lint-coverage-exhaustive
  • fix/tr-correctness-487-128
  • fix/upstream-313-en_in-default-inr
  • fix/upstream-431-425-cz-dk-aliases
  • fix/upstream-476-id-str-to-number
  • fix/upstream-483-ru-default-rub
  • fix/upstream-560-uk-gender
  • fix/upstream-573-sv-triple-t
  • fix/upstream-591-am-stray-m
  • force-test-run
  • main
  • master
  • port/upstream-293-id-constants
  • port/upstream-314-romansh
  • port/upstream-370-sv-fyrtio
  • port/upstream-383-uz-cyrl
  • port/upstream-451-dhivehi
  • port/upstream-467-es-crc
  • port/upstream-499-ro-mega-de
  • port/upstream-517-en-large-numbers
  • port/upstream-538-ar-lbp
  • port/upstream-548-en-np
  • port/upstream-556-ko-ordinal
  • port/upstream-559-ru-gender
  • port/upstream-563-ar-yer-usd
  • port/upstream-586-es-hn
  • port/upstream-588-kn-cardinal
  • port/upstream-612-it-currencies
  • port/upstream-613-de-currencies
  • port/upstream-614-fr-currencies
  • port/upstream-615-pt-currencies
  • port/upstream-620-ligurian
  • port/upstream-632-it-diciotto
  • port/upstream-642-nl-duizend
  • port/upstream-652-en-ne
  • port/upstream-654-en-in-crore
  • track-missing-languages
  • v1.0.1
  • v1.0.10
  • v1.0.11
  • v1.0.12
  • v1.0.13
  • v1.0.14
  • v1.0.15
  • v1.0.16
  • v1.0.17
  • v1.0.2
  • v1.0.9

17 Jul 2026 09:04PM UTC coverage: 95.176% (+0.1%) from 95.056%
29613473861

Pull #127

github

jqueguiner
refactor: thin num2words2 Python binder — move all logic to Rust

num2words2/ is now a pure thin binder like words2num2/: every public function is
a `return _RUST.x(...)` pass-through, with no conversion/dispatch/presentation
logic left in Python.

Moved into num2words2-core (new pyo3-free `presentation.rs`, so the crate still
publishes standalone) + the num2words2-py binder:
- `_normalize_lang` -> `presentation::resolve_lang` (locale resolution).
- `_apply_style` -> `presentation::apply_style` (style=terse/us output post-processing).
- `_normalize_cents` -> `presentation::normalize_cents` (cents kwarg handling).
- `_rust_kw_items` kwarg marshalling -> the binder (`extras_to_kwargs`).
- the whole `num2words`/`num2words_sentence` dispatch pipeline -> `#[pyfunction]`s
  (type inspection + raw-lang resolve + style, sharing the core converters).
- grouping.py: drop the pure-Python western/indian/chinese fallback; it's now a
  pass-through to `_RUST.group_digits` (which raises the same ValueError/TypeError).

__init__.py 300 -> 77 lines. num2words2-core 0.1.0 -> 0.1.1 (published).

Verified: cargo test 579; unittest OK (2780, 33 expected-failures, exit 0);
E2E 16/16; coverage source 84% / tests 98%; flake8 0; isort clean. Output parity
preserved (style/cents/lang-resolve produce identical results).
Pull Request #127: refactor: thin num2words2 Python binder (move all logic to Rust)

1257 of 1412 branches covered (89.02%)

Branch coverage included in aggregate %.

9 of 10 new or added lines in 3 files covered. (90.0%)

24489 of 25639 relevant lines covered (95.51%)

5.73 hits per line

Relevant lines Covered
Build:
Build:
25639 RELEVANT LINES 24489 COVERED LINES
5.73 HITS PER LINE
Source Files on refactor/thin-num2words2-binder
  • Tree
  • List 167
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
29613473861 refactor/thin-num2words2-binder refactor: thin num2words2 Python binder — move all logic to Rust num2words2/ is now a pure thin binder like words2num2/: every public function is a `return _RUST.x(...)` pass-through, with no conversion/dispatch/presentation logic left in Python.... Pull #127 17 Jul 2026 09:08PM UTC jqueguiner github
95.18
See All Builds (166)

Badge your Repo: num2words2

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc