Skip to main content

Transform integers to correctly inflected Ukrainian words (3 → третьої)

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ukr_numbers-0.1.4.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ukr_numbers-0.1.4-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file ukr_numbers-0.1.4.tar.gz.

File metadata

  • Download URL: ukr_numbers-0.1.4.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.6.69-1-lts

File hashes

Hashes for ukr_numbers-0.1.4.tar.gz
Algorithm Hash digest
SHA256 dd17263acc0cf12207c6fa57be8a6ba13b3052c0c6bc10774479bfa7bf1d7f7e
MD5 f043533f5baf460c1faeabe032bd078f
BLAKE2b-256 ab8caf51adbdd73d955b2d400ed6a845e7c14f5e1ef82595d669eea0d34bbb2c

See more details on using hashes here.

File details

Details for the file ukr_numbers-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: ukr_numbers-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Linux/6.6.69-1-lts

File hashes

Hashes for ukr_numbers-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 19033ea4315b1687eec881f3d1ddd8d792408e8ea4b46c160b04847153b73fe4
MD5 3e58effbdf964b25c080c8b4973f3ccd
BLAKE2b-256 c5f17434c4b31e8896a757bae1e3c3153026e4c4c071393866cf62ddb2b1ae8d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page