Metadata-Version: 2.4
Name: fast-roman-rs
Version: 0.1.0
Summary: Fast Rust-backed drop-in replacement for roman 5.2
Author: fast-roman-rs contributors
License-Expression: ZPL-2.1
Project-URL: Homepage, https://github.com/lowmiaq-gmail/fast-roman-rs
Project-URL: Repository, https://github.com/lowmiaq-gmail/fast-roman-rs
Project-URL: Issues, https://github.com/lowmiaq-gmail/fast-roman-rs/issues
Project-URL: Changelog, https://github.com/lowmiaq-gmail/fast-roman-rs/blob/main/CHANGELOG.md
Keywords: roman,roman-numerals,conversion,pyo3,rust,drop-in-replacement
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Rust
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
License-File: LICENSE.txt
License-File: COPYRIGHT.txt
Provides-Extra: test
Requires-Dist: pytest<10,>=8; extra == "test"
Home-Page: https://github.com/lowmiaq-gmail/fast-roman-rs

# fast-roman-rs: fast Roman numerals for Python with Rust

Rust-backed drop-in replacement distribution for the frozen `roman==5.2` package.

It preserves the `roman` Python API and CLI while using a PyO3 Rust core on compatible CPython platforms. A same-version pure-Python wheel keeps the frozen contract available on supported PyPy and other platforms.

## Install fast-roman-rs

```bash
pip install fast-roman-rs
```

```python
import roman

assert roman.toRoman(972) == "CMLXXII"
assert roman.fromRoman("cMlxxii") == 972
```

The installed namespace, function signatures, exception hierarchy, regex globals, typing marker, and `roman` console command follow upstream 5.2. CPython selects a PyO3 abi3 wheel where available; PyPy and unsupported platforms use the same-version pure-Python fallback.

## Roman numeral CLI

```bash
roman 972
roman -r cMlxxii
```

## Migrate from roman 5.2

Remove the upstream distribution, install the replacement, and keep application imports unchanged:

```bash
python -m pip uninstall roman
python -m pip install fast-roman-rs
```

Do not install both distributions into the same environment because both own the `roman` namespace and console script.

## Roll back

```bash
python -m pip uninstall fast-roman-rs
python -m pip install roman==5.2
```

## Compatibility and verification

See [COMPATIBILITY.md](COMPATIBILITY.md) for the executable contract and [UPSTREAM-CONTRACT.md](UPSTREAM-CONTRACT.md) for immutable upstream evidence.

## Benchmark evidence

See [BENCHMARK.md](BENCHMARK.md). Measurements are published only after semantic equality and are scoped to the exact artifact and host.
