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

jqueguiner / num2words2 / 25219511336
95%
master: 94%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 01 May 2026 03:07PM UTC
Jobs 6
Files 337
Run time 1min
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

01 May 2026 03:06PM UTC coverage: 95.198% (+0.005%) from 95.193%
25219511336

push

github

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

Per the upstream issue's request to "implement the different
variations depending on ICAO, FAA, US Navy, US Army, and other
respellings".

Adds named entry points for each service standard:
  en_Aero_FAA      → Num2Word_EN_AERO_FAA
  en_Aero_USN      → Num2Word_EN_AERO_USN
  en_Aero_US_Navy  → alias for USN
  en_Aero_US_Army  → Num2Word_EN_AERO_US_Army
  en_Aero_NATO     → Num2Word_EN_AERO_NATO

Also exposes a `profile=` constructor argument on Num2Word_EN_AERO so
consumers can switch profiles programmatically and ValueError on
unknown profile names.

**Honest scope note**: modern services have all converged on the ICAO
digit table for joint operations (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 for two reasons:

  1. Callers can document *which* standard they're targeting in code
     ("our radio backend uses FAA phraseology") even though today the
     output happens to match ICAO byte-for-byte.

  2. Future divergent profiles (historical WW2-era US Army/Navy
     respellings, ITU/IMO maritime variants, tactical service
     deviations) can be added by populating their _PROFILES tuple
     without breaking back-compat.

The implementation refactors the digit table from module constants
into a `_PROFILES` lookup keyed by profile name. Adding a new profile
is a one-line table addition.

Bug fix bundled: an earlier version of this patch put 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. Subclasses now live at module level after
the parent class body.

Tests: 6 new cases covering registration, profile attribute, output
parity across all five variants, aviation-method availability per
variant, the profile= constructor ... (continued)

8042 of 8834 branches covered (91.03%)

Branch coverage included in aggregate %.

54 of 54 new or added lines in 2 files covered. (100.0%)

42430 of 44184 relevant lines covered (96.03%)

5.76 hits per line

Jobs
ID Job ID Ran Files Coverage
1 3.11 - 25219511336.1 01 May 2026 03:08PM UTC 337
95.2
GitHub Action Run
2 3.12 - 25219511336.2 01 May 2026 03:08PM UTC 337
95.2
GitHub Action Run
3 3.13 - 25219511336.3 01 May 2026 03:08PM UTC 337
95.2
GitHub Action Run
4 3.15 - 25219511336.4 01 May 2026 03:08PM UTC 337
95.2
GitHub Action Run
5 3.10 - 25219511336.5 01 May 2026 03:08PM UTC 337
95.2
GitHub Action Run
6 3.14 - 25219511336.6 01 May 2026 03:08PM UTC 337
95.2
GitHub Action Run
Source Files on build 25219511336
  • Tree
  • List 337
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • c8447054 on github
  • Prev Build on main (#25219230627)
  • Next Build on main (#25220084867)
  • Delete
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