English
Module converting Arabic numerals to Greek and Roman numbers
Version: 1.2.0
Supported Python: 3.11-3.14 stable; 3.15.0rc2 provisionally tested
Repository: GitHub - GreekRomanNumerical
License: Apache 2.0
Description
The library converts Arabic numbers, such as 1234, to Roman equivalents, such as MCCXXXIV, or Greek — Α_ΣΛΔ.
This module can also output Greek numbers in different formats. For example, the number 20005003001 can be represented as Κ___Ε__Γ_Α or Κ~Ε~Γ~Α. In addition, it is possible to output the text name of the digits, for example, Kappa macron Epsilon macron Gamma macron Alpha, or output them in lowercase.
Finite float fractions are encoded digit by digit, with numeral tokens separated by colons. For example, 1.25 becomes I.(II:V) or α.(β:ε). A zero digit is written as _ for Roman numerals and classic Greek, or ~ for positional Greek; thus 1.05 becomes I.(_:V), α.(_:ε), or α.(~:ε).
Installation
Install the package using pip:
pip install GreekRomanUtils
Hybrid backend (Python + Rust)
Starting from this migration stage, the public API stays unchanged while internal conversion logic can run on a Rust backend.
- Default behavior: try Rust backend first, fallback to Python automatically.
- Force Python backend:
GREEKROMAN_FORCE_PYTHON=1
The Rust bridge preserves Python's arbitrary-precision integers. Output size remains limited by available memory.
Development environment and quality checks
Requirements: Python 3.11 or newer, uv, and rustup. Windows builds also require the MSVC C++ Build Tools.
Create the environment and install the project with its Rust extension:
rustup toolchain install stable
uv python install 3.11
uv sync --locked --group dev --python 3.11
Install the optional notebook tools only when needed:
uv sync --locked --group dev --group notebook --python 3.11
Run the full test suite with the Python backend:
GREEKROMAN_FORCE_PYTHON=1 uv run pytest -v
On Windows PowerShell:
$env:GREEKROMAN_FORCE_PYTHON = "1"
uv run pytest -v
Remove-Item Env:GREEKROMAN_FORCE_PYTHON
Rebuild the Rust extension after Rust changes and test the hybrid backend:
uv run maturin develop --manifest-path rust/Cargo.toml
uv run pytest -v
Run Python lint and type checks:
uv run ruff check --exclude tests/
uv run ty check --exclude tests/
Check Rust formatting, compile the Rust crate, and build the package:
cargo fmt --manifest-path rust/Cargo.toml --check
cargo test --locked --manifest-path rust/Cargo.toml
uv build
Rust behavior is covered by native unit tests and Python backend-equivalence tests.
Run the opt-in performance benchmarks (the Rust extension must be built):
uv sync --locked --group dev --group performance --python 3.11
uv run maturin develop --manifest-path rust/Cargo.toml
uv run --group performance pytest benchmarks/test_backend_performance.py --benchmark-only --benchmark-sort=mean
The benchmark checks result equivalence before timing Roman, classic Greek, and positional Greek conversions in both backends. It reports measurements without enforcing a speed threshold because timings depend on the machine.
The structure of the project
There are two main classes: GreekConvert and RomanConvert. They implement the logic of converting to the corresponding numbers. There are also classes GreekAlphabet and RomanNumberAlphabet, which are used to store lists and dictionaries.
There are proprietary data types GreekNumber and RomanNumber for working with Greek and Roman numbers, which will allow you to perform basic mathematical operations with them.
Main functions
For "GreekConvert":
change_capital— A flag that controls the conversion of characters to upper or lower case.change_positional— Change the positional mode for conversion.convert— The function of converting an Arabic number to a Greek one, returnsGreekNumberobject. For example, the number20005003001is converted toΚ___Ε__Γ_Α(non-positional mode) or toΚ~Ε~Γ~Α(positional mode).convert_to_arabic— A function for converting a Greek number to an Arabic one.unicode_to_name— The function converts a Unicode character into its name.name_to_unicode— The reverse operation forunicode_to_name.
The "GreekNumber" class:
set_number— Set a new value.set_positional— Set the positional mode flag (affects display format: underscore_for non-positional, tilde~for positional).set_capital— Set the upper case flag.get_number— Get the current number.get_positional— Get the positional flag value.get_capital— Get the capital flag value.get_str— Get the textual representation of the number (e.g., "alpha beta gamma").- And basic mathematical operations (+, -, *, /, //, %, **, ==, !=, <, <=, >, >=).
For "RomanConvert":
convert— The method converts an Arabic number to a Roman number, returnsRomanNumberobject.convert_to_arabic— The reverse method forconvert.
For "RomanNumber":
set_number— Set a new value.get_number— Get the current number.get_value— Get the string representation of the Roman numeral.- And basic mathematical operations (+, -, *, /, //, %, **, ==, !=, <, <=, >, >=).
Ru
Модуль преобразование арабских цифр в греческие и римские числа
Версия: 1.2.0
Поддерживаемые версии Python: 3.11-3.14 stable; 3.15.0rc2 проверяется предварительно
Репозиторий: GitHub - GreekRomanNumerical
Лицензия: Apache 2.0
Описание
Библиотека преобразует арабские числа, такие как 1234, в римские эквиваленты, например, MCCXXXIV, или греческие — Α_ΣΛΔ.
Также этот модуль может выводить греческие цифры в разных форматах. Например, число 20005003001 можно представить как Κ___Ε__Γ_Α или Κ~Ε~Γ~Α. Кроме того, есть возможность выводить текстовое название цифр, например, Kappa macron Epsilon macron Gamma macron Alpha, или выводить их в нижнем регистре.
Дробная часть конечного float кодируется по цифрам, разделённым двоеточиями. Например, 1.25 преобразуется в I.(II:V) или α.(β:ε). Нулевой разряд записывается как _ для римского и классического греческого форматов, или ~ для позиционного греческого; поэтому 1.05 выглядит как I.(_:V), α.(_:ε) или α.(~:ε).
Установка
Установите пакет с помощью pip:
pip install GreekRomanUtils
Гибридный backend (Python + Rust)
На этапе миграции публичный API не меняется, но внутренняя логика конвертации может выполняться через Rust backend.
- Поведение по умолчанию: сначала попытка Rust backend, при недоступности автоматический fallback на Python.
- Принудительное отключение Rust backend:
GREEKROMAN_FORCE_PYTHON=1
Rust-мост сохраняет произвольную точность целых Python. Размер строкового результата ограничен доступной памятью.
Настройка среды и проверки качества
Требования: Python 3.11 или новее, uv и rustup. Для сборки в Windows также нужны MSVC C++ Build Tools.
Создание окружения и установка проекта вместе с Rust-расширением:
rustup toolchain install stable
uv python install 3.11
uv sync --locked --group dev --python 3.11
Дополнительные инструменты для ноутбуков устанавливаются отдельно:
uv sync --locked --group dev --group notebook --python 3.11
Полный набор тестов с Python backend:
$env:GREEKROMAN_FORCE_PYTHON = "1"
uv run pytest -v
Remove-Item Env:GREEKROMAN_FORCE_PYTHON
После изменений Rust пересоберите расширение и запустите тесты в hybrid-режиме:
uv run maturin develop --manifest-path rust/Cargo.toml
uv run pytest -v
Проверки Python-кода:
uv run ruff check --exclude tests/
uv run ty check --exclude tests/
Проверки Rust и сборка пакета:
cargo fmt --manifest-path rust/Cargo.toml --check
cargo test --locked --manifest-path rust/Cargo.toml
uv build
Поведение Rust backend покрывается собственными unit-тестами и Python-тестами эквивалентности backend-ов.
Запуск opt-in тестов производительности (Rust-расширение должно быть собрано):
uv sync --locked --group dev --group performance --python 3.11
uv run maturin develop --manifest-path rust/Cargo.toml
uv run --group performance pytest benchmarks/test_backend_performance.py --benchmark-only --benchmark-sort=mean
Перед замером тесты проверяют равенство результатов и затем измеряют Roman, classic Greek и positional Greek конвертации в обоих backend’ах. Порог скорости не задан: время зависит от машины и окружения.
Структура пректа
Есть два основных класса: GreekConvert и RomanConvert. Они реализуют логику преобразования в соответствующие числа. Также есть классы GreekAlphabet и RomanNumberAlphabet, которые используются для хранения списков и словарей.
Есть собственные типы данных GreekNumber и RomanNumber для работы с греческими и римскими числами, что позволит выполнять с ними базовые математические операции.
Основные функции
Для «GreekConvert»:
change_capital— Флаг, управляющий преобразованием символов в верхний или нижний регистр.change_positional— Изменить режим позиционного преобразования.convert— Функция преобразования арабского числа в греческое, возвращает объектGreekNumber. Например, число20005003001преобразуется вΚ___Ε__Γ_Α(непозиционный режим) или вΚ~Ε~Γ~Α(позиционный режим).convert_to_arabic— Функция преобразования греческого числа в арабское.unicode_to_name— Функция преобразует символ Unicode в его название.name_to_unicode— Обратная операция дляunicode_to_name.
Класс «GreekNumber»:
set_number— Установить новое значение.set_positional— Установить флаг позиционного режима (влияет на формат отображения: подчеркивание_для непозиционного, тильда~для позиционного).set_capital— Установить флаг верхнего регистра.get_number— Получить текущее число.get_positional— Получить значение флага позиционности.get_capital— Получить значение флага регистра.get_str— Получить текстовое представление числа (например, "alpha beta gamma").- И базовые математические операции (+, -, *, /, //, %, **, ==, !=, <, <=, >, >=).
Для «RomanConvert»:
convert— Метод преобразует арабское число в римское, возвращает объектRomanNumber.convert_to_arabic— Обратный метод дляconvert.
Для «RomanNumber»:
set_number— Установить новое значение.get_number— Получить текущее число.get_value— Получить строковое представление римского числа.- И базовые математические операции (+, -, *, /, //, %, **, ==, !=, <, <=, >, >=).
Схема пректа
License
Apache License 2.0
Metadata
Release files for GreekRomanUtils 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| greekromanutils-1.2.0.tar.gz | 32.8 kB | Without provenance | Details for greekromanutils-1.2.0.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| greekromanutils-1.2.0-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details for greekromanutils-1.2.0-cp311-abi3-win_amd64.whl |
| greekromanutils-1.2.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details for greekromanutils-1.2.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| greekromanutils-1.2.0-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details for greekromanutils-1.2.0-cp311-abi3-macosx_11_0_arm64.whl |
Total release size: 932.1 kB
Release files / greekromanutils-1.2.0.tar.gz
| Download URL | greekromanutils-1.2.0.tar.gz |
|---|---|
| Size | 32.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
da377475515b78f0fd47b9c733f94ecd4e8e5464302135c86d68e464a9b66de5
|
|
BLAKE2b-256 checksum How to use checksums |
8c2e82852a4f0caab677315cfb3924d1700e51bb96d0d7080ad9451b81e9bed7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / greekromanutils-1.2.0-cp311-abi3-win_amd64.whl
| Download URL | greekromanutils-1.2.0-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 220.4 kB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a1dd7784af16f134eb00d10c0a1a549a3e0192ac20758cabf3e24e444b1d8af3
|
|
BLAKE2b-256 checksum How to use checksums |
513d3635fb53a7696b40376948a414bd02c34d338364c4de970a11932ea650fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / greekromanutils-1.2.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | greekromanutils-1.2.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 358.6 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
317563271053ae05d939904994225a5c241bf4a629f1d4ee81d1ce5294c4ef35
|
|
BLAKE2b-256 checksum How to use checksums |
ae089e6ea270bb35337f326b24b5aa8bf3b3de9f44e01d30b92d1a5bd378849a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / greekromanutils-1.2.0-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | greekromanutils-1.2.0-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 320.2 kB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c749b6b275f961396700f4d51547e68991a9866ae9fabb5dcb6a5e119cea2a67
|
|
BLAKE2b-256 checksum How to use checksums |
89438fed667bea9a045341f7c558ea069bccd2a894b73b9940cb9bb066f709f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for GreekRomanUtils 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.