Metadata-Version: 2.4
Name: soroban-abacus
Version: 0.1.0
Summary: A Soroban abacus implementation
Project-URL: Homepage, https://github.com/twaclaw/soroban
Project-URL: Documentation, https://github.com/twaclaw/soroban
Project-URL: Issues, https://github.com/twaclaw/soroban/issues
Author-email: Diego Sandoval <dsandovalv@gmail.com>
Maintainer-email: Diego Sandoval <dsandovalv@gmail.com>
Keywords: abacus,soroban
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python
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: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Requires-Dist: drawsvg
Description-Content-Type: text/markdown

# Soroban Abacus

> A simple Soroban abacus supporting positive integers.

## Installation

```bash
uv venv --pytnon=3.14
uv pip install soroban-abacus
```

## Usage

```python
from soroban import Soroban

abacus = Soroban(ncolumns=5)
print(abacus)

0: ●○ | ○○○○
1: ●○ | ○○○○
2: ●○ | ○○○○
3: ●○ | ○○○○
4: ●○ | ○○○○

abacus.from_decimal(17)
print(abacus)

0: ○● | ●●○○
1: ●○ | ●○○○
2: ●○ | ○○○○
3: ●○ | ○○○○
4: ●○ | ○○○○

abacus.to_svg("soroban1.svg")
```

![](./images/soroban1.svg)


```python
from soroban import Soroban

s = Soroban(12)
s.from_decimal(1234567890)
s.to_svg("soroban2.svg")
```

![](./images/soroban2.svg)