Skip to main content

ukr_numbers

[!WARNING]
This is a side project. Sometimes it WILL be wrong, especially for longer numbers. Bug reports and PRs very welcome!

Basics

What?

Convert int numbers (3) to (Ukrainian-language) words in a specific declination (третій/три/третьому/третьої).

The target declination is given using natural language, in other words you show the target declination instead of describing it.

FOR EXAMPLE, if you need "1→в першому вагоні", "2→в другому вагоні", "-1→в останньому вагоні", you can just enter "першому" as your target declension, and all your integers will be transformed to ordinals in the dative case.

It additionally supports -1 as code for last, the output will be останній declined in the same shape as the numeral would be.

Why?

Declension target as natural language is neat

  1. I find this easier than remembering the names of everything for an explicit target declension (is it ordinal or cardinal? do I write dative or datv? ..)
  2. Automatic templating! I use this package to replace numbers in strings without the need to explicitly parse each one!

More features

Even without the natural language target bit, I found no packages that could convert integers to natural language while:

  • handling both cardinals and ordinals
  • in different (grammatical) cases
  • agreeing to numbers and genders.

Examples

>>> from ukr_numbers import Numbers
>>> Numbers().convert_to_auto(231300,"другий")
WARNING:ukr_numbers.nums:Support for multi-word numbers (231300) is bad, errors are likely to happen, you're warned.
'двістітридцятьоднатисячатрьохсотий'
python3 -m ukr_numbers 8 два
вісім
python3 -m ukr_numbers 8 другої
восьмої

# `-1` is a special number denoting "last":
python3 -m ukr_numbers -1 два  #! can't decline it into a number
None
python3 -m ukr_numbers -1 другої
останньої

python3 -m ukr_numbers 124 першою
WARNING:ukr_numbers.nums:Multi-word numbers (124) are unsupported, results may be wrong.
сто двадцять четвертою

python3 -m ukr_numbers -124 першою
WARNING:ukr_numbers.nums:Multi-word numbers (-124) are unsupported, results may be wrong.
мінус сто двадцять четвертою

python3 -m ukr_numbers -1 першою
WARNING:ukr_numbers.nums:Multi-word numbers (124) are unsupported, results may be wrong.
останньою

Errors handling

  • if останній/last can't be inflected in the required way, (e.g. "перший"→"останній" is OK, "один"→??? isn't) None will be returned.
  • if anything goes wrong and graceful_failure is enabled, in the worst case scenario the number itself will be returned as string (2 →'2')

Drawbacks

Explicitly unsupported

  • Nouns (десятка, десяток)
  • Fractions (дві з половиною тисячі)

Known bugs

Numbers that take multiple words in Ukrainian (23 → двадцять три) now have weak support, except:

  • numbers composed of multiple words in certain cases (pun intended) are only partially correct
    • e.g. (currently) 2000000+двома → два мільйонами, not двома мільйонами
  • Please write tickets for edge cases you find!

Similar projects

Both used in this package:

  • num2words
    • multilingual incl. Ukrainian
    • can do inflection by case and partly by gender
    • can't do inflections together with ordinals
    • can't do adjectives (на ПЕРШОМУ місці)
  • pymorphy2 does inflection on natural words

Metadata

Release files for ukr-numbers 0.1.4

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

Source distribution (sdist)

Source distribution for ukr-numbers 0.1.4
File Size Uploaded
ukr_numbers-0.1.4.tar.gz 11.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ukr-numbers 0.1.4
File Interpreter ABI Platform
ukr_numbers-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 23.6 kB

Release files / ukr_numbers-0.1.4.tar.gz

Download URL ukr_numbers-0.1.4.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dd17263acc0cf12207c6fa57be8a6ba13b3052c0c6bc10774479bfa7bf1d7f7e
BLAKE2b-256 checksum
How to use checksums
ab8caf51adbdd73d955b2d400ed6a845e7c14f5e1ef82595d669eea0d34bbb2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.13.1 Linux/6.6.69-1-lts

Release files / ukr_numbers-0.1.4-py3-none-any.whl

Download URL ukr_numbers-0.1.4-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19033ea4315b1687eec881f3d1ddd8d792408e8ea4b46c160b04847153b73fe4
BLAKE2b-256 checksum
How to use checksums
c5f17434c4b31e8896a757bae1e3c3153026e4c4c071393866cf62ddb2b1ae8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.13.1 Linux/6.6.69-1-lts

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 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