Skip to content

Releases: jqueguiner/num2words2

v1.0.18

Choose a tag to compare

@github-actions github-actions released this 17 Jul 14:05

Automated release built by maturin.

  • PyPI carries the slim wheels (~2 MB, no bundled
    language-detection models) plus the source distribution.
  • The full wheels attached here embed the lingua-rs models
    (~140 MB) so num2words_sentence(lang=None) auto-detects
    natively. Install one with pip install <asset-url>.

What's Changed

Full Changelog: v1.0.17...v1.0.18

v1.0.17

Choose a tag to compare

@github-actions github-actions released this 01 May 15:07
c844705

v1.0.17 — service-specific aviation profiles

Closes the last outstanding bullet of upstream issue savoirfairelinux/num2words#478"different variations depending on ICAO, FAA, US Navy, US Army".

What's new

Five named aviation profiles, plus a programmatic profile= constructor argument:

from num2words2 import num2words

num2words(5739, lang='en_Aero_FAA')        # 'fife seven tree niner'
num2words(5739, lang='en_Aero_USN')        # 'fife seven tree niner'
num2words(5739, lang='en_Aero_US_Navy')    # 'fife seven tree niner'
num2words(5739, lang='en_Aero_US_Army')    # 'fife seven tree niner'
num2words(5739, lang='en_Aero_NATO')       # 'fife seven tree niner'

# Or programmatically:
from num2words2.lang_EN_AERO import Num2Word_EN_AERO
Num2Word_EN_AERO(profile='FAA').to_cardinal(5739)

Modern services have all converged on the ICAO digit table (FAA AIM 4-2-9 cites ICAO; STANAG 1059 defers to ICAO; US military adopted ICAO post-1956), so today all five profiles produce identical output. They exist as separate named entry points so:

  1. Calls can document which standard they target in code, even when the bytes match ICAO.
  2. Future divergent variants — historical WW2-era US Army/Navy respellings, ITU/IMO maritime, tactical service deviations — can be added by populating their profile tuple without breaking back-compat.

Cumulative state of the aviation feature (v1.0.14 → v1.0.17)

Release Scope
v1.0.14 initial en_AERO, common-subset digits
v1.0.15 strict ICAO digit table (wun/too/ait) + canonical en_Aero_ICAO key + BCP 47 alias en-x-aero-icao
v1.0.16 per-context phraseology methods: to_altitude, to_flight_level, to_heading, to_squawk, to_runway, to_frequency
v1.0.17 service-specific profiles + programmatic profile= arg

The full en_Aero_* family is feature-complete for the ICAO/aviation use case as currently defined.

Bug fix bundled

An earlier draft of #117 placed the new subclasses inside the parent class scope by accident, which silently ended Num2Word_EN_AERO before its methods were defined and broke to_cardinal / to_altitude / etc. (smoke test caught it: ICAO suddenly produced plain-English output instead of digit-by-digit). Subclasses now live at module level after the parent class body. ✓

What's Changed

  • feat(en_aero): service-specific profiles (FAA, USN, US_Army, NATO) (#117)

Full Changelog: v1.0.16...v1.0.17

Installation

pip install num2words2==1.0.17
# or AUR:
yay -S python-num2words2

Documentation

For the full feature reference (all conversion modes, per-call options, language list, aviation phraseology), see REFERENCE.md.

v1.0.16

Choose a tag to compare

@github-actions github-actions released this 01 May 14:59
a78448c

What's Changed

  • feat(en_aero): aviation context phraseology — altitude, FL, heading, squawk, runway, freq (#116) (a78448c)

Full Changelog: v1.0.15...v1.0.16

Languages Supported

167 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_AERO, en_Aero_ICAO, en_IN, en_NE, 
en_NG, en_NP, en_aero_icao, en_x_aero_icao, eo, es, es_CO, es_CR, es_GT, es_HN, 
es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, fr_BE, fr_CH, fr_DZ, gl, gu, ha, 
haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, ja, jp, jv, jw, ka, ki, kk, km, 
kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, ln, lo, lt, lus, lv, mg, mi, 
miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, no, oc, om, or, pa, pap, pl, 
pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, rm_sursilv, rm_sutsilv, 
rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, sq, sr, sr_Cyrl, sr_Latn, 
su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, uk, ur, uz, uz_Cyrl, 
uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.16

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.15

Choose a tag to compare

@github-actions github-actions released this 01 May 14:53
94377a2

What's Changed

  • fix(en_aero): use strict ICAO digit table + canonical en_Aero_ICAO key (#115) (94377a2)

Full Changelog: v1.0.14...v1.0.15

Languages Supported

167 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_AERO, en_Aero_ICAO, en_IN, en_NE, 
en_NG, en_NP, en_aero_icao, en_x_aero_icao, eo, es, es_CO, es_CR, es_GT, es_HN, 
es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, fr_BE, fr_CH, fr_DZ, gl, gu, ha, 
haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, ja, jp, jv, jw, ka, ki, kk, km, 
kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, ln, lo, lt, lus, lv, mg, mi, 
miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, no, oc, om, or, pa, pap, pl, 
pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, rm_sursilv, rm_sutsilv, 
rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, sq, sr, sr_Cyrl, sr_Latn, 
su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, uk, ur, uz, uz_Cyrl, 
uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.15

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.14

Choose a tag to compare

@github-actions github-actions released this 01 May 14:36
fbd2b50

What's Changed

  • feat(en_aero): ICAO/aviation English digit-by-digit reading (#114) (fbd2b50)

Full Changelog: v1.0.13...v1.0.14

Languages Supported

164 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_AERO, en_IN, en_NE, en_NG, en_NP, 
eo, es, es_CO, es_CR, es_GT, es_HN, es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, 
fr, fr_BE, fr_CH, fr_DZ, gl, gu, ha, haw, he, hi, hmn, hr, ht, hu, hy, id, is, 
it, ja, jp, jv, jw, ka, ki, kk, km, kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, 
lij, ln, lo, lt, lus, lv, mg, mi, miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, 
nn, no, oc, om, or, pa, pap, pl, pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, 
rm_sursilv, rm_sutsilv, rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, 
sq, sr, sr_Cyrl, sr_Latn, su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, 
uk, ur, uz, uz_Cyrl, uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.14

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.13

Choose a tag to compare

@github-actions github-actions released this 01 May 14:24
5b7bfe3

What's Changed

  • feat(fraction): add to_fraction + 'n/d' string routing (#113) (5b7bfe3)

Full Changelog: v1.0.12...v1.0.13

Languages Supported

163 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_IN, en_NE, en_NG, en_NP, eo, es, 
es_CO, es_CR, es_GT, es_HN, es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, 
fr_BE, fr_CH, fr_DZ, gl, gu, ha, haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, 
ja, jp, jv, jw, ka, ki, kk, km, kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, 
ln, lo, lt, lus, lv, mg, mi, miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, 
no, oc, om, or, pa, pap, pl, pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, 
rm_sursilv, rm_sutsilv, rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, 
sq, sr, sr_Cyrl, sr_Latn, su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, 
uk, ur, uz, uz_Cyrl, uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.13

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.12

Choose a tag to compare

@github-actions github-actions released this 01 May 14:12
1373934

What's Changed

  • feat(currency): 3-decimal mils + bank cheque format (#112) (1373934)

Full Changelog: v1.0.11...v1.0.12

Languages Supported

163 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_IN, en_NE, en_NG, en_NP, eo, es, 
es_CO, es_CR, es_GT, es_HN, es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, 
fr_BE, fr_CH, fr_DZ, gl, gu, ha, haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, 
ja, jp, jv, jw, ka, ki, kk, km, kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, 
ln, lo, lt, lus, lv, mg, mi, miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, 
no, oc, om, or, pa, pap, pl, pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, 
rm_sursilv, rm_sutsilv, rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, 
sq, sr, sr_Cyrl, sr_Latn, su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, 
uk, ur, uz, uz_Cyrl, uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.12

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.11

Choose a tag to compare

@github-actions github-actions released this 01 May 13:03
ed8341d

What's Changed

  • fix(tr): natural-precision floats, ordinal_num apostrophe, Decimal input (#111) (ed8341d)

Full Changelog: v1.0.10...v1.0.11

Languages Supported

163 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_IN, en_NE, en_NG, en_NP, eo, es, 
es_CO, es_CR, es_GT, es_HN, es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, 
fr_BE, fr_CH, fr_DZ, gl, gu, ha, haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, 
ja, jp, jv, jw, ka, ki, kk, km, kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, 
ln, lo, lt, lus, lv, mg, mi, miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, 
no, oc, om, or, pa, pap, pl, pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, 
rm_sursilv, rm_sutsilv, rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, 
sq, sr, sr_Cyrl, sr_Latn, su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, 
uk, ur, uz, uz_Cyrl, uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.11

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.10

Choose a tag to compare

@github-actions github-actions released this 01 May 12:39
c360558

What's Changed

Full Changelog: v1.0.9...v1.0.10

Languages Supported

163 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_IN, en_NE, en_NG, en_NP, eo, es, 
es_CO, es_CR, es_GT, es_HN, es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, 
fr_BE, fr_CH, fr_DZ, gl, gu, ha, haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, 
ja, jp, jv, jw, ka, ki, kk, km, kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, 
ln, lo, lt, lus, lv, mg, mi, miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, 
no, oc, om, or, pa, pap, pl, pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, 
rm_sursilv, rm_sutsilv, rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, 
sq, sr, sr_Cyrl, sr_Latn, su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, 
uk, ur, uz, uz_Cyrl, uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.10

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))

v1.0.9

Choose a tag to compare

@github-actions github-actions released this 01 May 10:23
4411f1b

What's Changed

  • fix(tests): correct stale Arabic e2e expected output (#108) (4411f1b)
  • ci(aur): replace KSXGitHub action with direct git commands (#107) (113a39b)
  • test: align stale fr/ca currency expectations with v1.0.4-1.0.5 fixes (#106) (b17e6a1)

Full Changelog: v1.0.8...v1.0.9

Languages Supported

163 language codes registered:

af, am, ar, as, az, ba, ban, be, bg, bm, bn, bo, br, bs, ca, ce, ceb, ckb, cn, 
cnh, cs, cy, cz, da, de, dk, dv, el, en, en_IN, en_NE, en_NG, en_NP, eo, es, 
es_CO, es_CR, es_GT, es_HN, es_NI, es_VE, et, eu, fa, ff, fi, fil, fo, fr, 
fr_BE, fr_CH, fr_DZ, gl, gu, ha, haw, he, hi, hmn, hr, ht, hu, hy, id, is, it, 
ja, jp, jv, jw, ka, ki, kk, km, kn, ko, kok, ksw, ku, ky, kz, la, lb, lg, lij, 
ln, lo, lt, lus, lv, mg, mi, miz, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, 
no, oc, om, or, pa, pap, pl, pli, ps, pt, pt_BR, rm, rm_puter, rm_surmiran, 
rm_sursilv, rm_sutsilv, rm_vallader, ro, ru, rw, sa, sd, si, sk, sl, sn, so, 
sq, sr, sr_Cyrl, sr_Latn, su, sv, sw, ta, te, tet, tg, th, ti, tk, tl, tr, tt, 
uk, ur, uz, uz_Cyrl, uz_cyr, vi, wo, xh, yi, yo, zh, zh_CN, zh_HK, zh_TW, zu

Installation

pip install num2words2==1.0.9

Usage

from num2words2 import num2words
print(num2words(42, lang='en'))