Metadata-Version: 2.4
Name: dhaturupa
Version: 0.3.0
Summary: A Python package for Sanskrit verb conjugation (dhāturūpa) - generates conjugation tables for Sanskrit verb roots across all tenses and moods
Author: dhaturupa contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/user/dhaturupa
Project-URL: Repository, https://github.com/user/dhaturupa
Project-URL: Bug Tracker, https://github.com/user/dhaturupa/issues
Keywords: sanskrit,verb-conjugation,dhaturupa,linguistics,nlp,panini
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Text Processing :: Linguistic
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# dhaturupa

Sanskrit verb conjugation. Give it a root, get back the full paradigm.

```bash
pip install dhaturupa
```

## Quick start

```python
from dhaturupa import conjugate

result = conjugate('bhū')
print(result['forms']['prathama']['ekavacana'])  # bhavati
print(result['forms']['uttama']['ekavacana'])     # bhavāmi

result = conjugate('bhū', lakara='loṭ')           # imperative
result = conjugate('bhū', pada='ātmanepada')       # override voice
```

`conjugate()` returns the 3×3 grid (puruṣa × vacana). `get_all_lakaras()` does it for all 10 tenses at once.

## Reverse lookup

```python
from dhaturupa import get_root, get_root_summary

get_root('bhavati')
# [{'dhatu': 'bhū', 'meaning': 'to be, to become',
#   'lakara': 'laṭ', 'purusha': 'prathama', 'vacana': 'ekavacana', ...}]

get_root_summary('gacchati')
# ['√gam (to go) — laṭ, prathama puruṣa, ekavacana, parasmaipada']
```

Give it any conjugated form, get back the root and full morphological analysis.

## Search and lookup

```python
from dhaturupa import get_dhatu_info, search_dhatus, list_dhatus

get_dhatu_info('gam')
# {'dhatu': 'gam', 'gana': 1, 'meaning': 'to go'}

search_dhatus('to know')
# [{'dhatu': 'budh', ...}, {'dhatu': 'vid', ...}, {'dhatu': 'jñā', ...}]

list_dhatus(gana=4)  # all divādi roots
```

## Transliteration

```python
from dhaturupa.transliteration import iast_to_devanagari, devanagari_to_iast

iast_to_devanagari('bhavati')  # भवति
devanagari_to_iast('भवति')     # bhavati
```

## JSON API

```python
from dhaturupa import conjugate_json, get_root_json

conjugate_json('bhū', pretty=True)
# '{"dhatu": "bhū", "forms": {"prathama": {"ekavacana": "bhavati", ...}}}'

get_root_json('gacchati')
# '[{"dhatu": "gam", "meaning": "to go", "lakara": "laṭ", ...}]'
```

Every public method has a `_json` twin. All take `pretty=True` for indented output. Unicode preserved, not escaped.

## CLI

```bash
dhaturupa conjugate bhū
#   Prathama (3rd)    bhavati    bhavataḥ    bhavanti
#   Madhyama (2nd)    bhavasi    bhavathaḥ   bhavatha
#   Uttama (1st)      bhavāmi    bhavāvaḥ    bhavāmaḥ

dhaturupa root bhavati
#   √bhū (to be, to become) — laṭ, prathama puruṣa, ekavacana

dhaturupa conjugate bhū --lakara loṭ
dhaturupa conjugate bhū --all-lakaras
dhaturupa conjugate bhū --json
dhaturupa search "to know"
dhaturupa list --gana 1
```

## What's inside

85+ roots across all 10 gaṇas. 10 lakāras. Both parasmaipada and ātmanepada. Guṇa/vṛddhi gradation, vikaraṇa suffixes, sandhi, and pre-computed irregular stems. Zero dependencies.

## License

MIT © [Hemanth.HM](https://h3manth.com)
