Metadata-Version: 2.5
Name: ganapati
Version: 0.0.1
Summary: Sanskrit philology for a search index: metre, verse chunking, citations, lemmas and glosses
Project-URL: Repository, https://github.com/vedicreader/ganapati
Project-URL: Documentation, https://vedicreader.github.io/ganapati/
Author-email: Karthik <karthik.rajgopal@hotmail.com>
License: Apache-2.0
License-File: LICENSE
Keywords: devanagari,metre,nbdev,philology,prosody,sanskrit,search
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: >=3.10
Requires-Dist: fastcore>=2.2.15
Requires-Dist: litesearch>=0.1.33
Requires-Dist: vidyut
Description-Content-Type: text/markdown

# ganapati


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

Metre, verse boundaries, citations, and lemmas. `import ganapati` registers the Sanskrit reader
profiles, so a GRETIL or TEI source is chunked by verse and its tree is built from the citations.

``` python
from litesearch import Index
from ganapati import Meter

ix = Index('vault.db')
ix.add('mahabharata.htm')
ix.search('dharma')[:3]
ix.db.by_meter(meter=Meter.ANUSTUBH)[:3]
```

    /Users/71293/code/personal/orgs/ganapati/.venv/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
      from .autonotebook import tqdm as notebook_tqdm

    [{'content': 'nārāyaṇaṃ namaskṛtya naraṃ caiva narottamam\ndevīṃ sarasvatīṃ caiva tato jayam udīrayet',
      'metadata': '{"meter": "anuṣṭubh", "variant": "pathyā", "gana": "ta_ra_ga_ga", "pada": "8"}',
      'node_id': '73a63025c7fc3d14#0',
      'doc_id': '73a63025c7fc3d14',
      'page': 0},
     {'content': 'samāsīnān abhyagacchad brahmarṣīn saṃśitavratān\nvinayāvanato bhūtvā kadā cit sūtanandanaḥ',
      'metadata': '{"meter": "anuṣṭubh", "variant": "pathyā ra-vipulā", "gana": "ya_ta_ga_ga", "pada": "8"}',
      'node_id': '73a63025c7fc3d14#0',
      'doc_id': '73a63025c7fc3d14',
      'page': 2},
     {'content': 'tam āśramam anuprāptaṃ naimiṣāraṇyavāsinaḥ\ncitrāḥ śrotuṃ kathās tatra parivavrus tapasvinaḥ',
      'metadata': '{"meter": "anuṣṭubh", "variant": "pathyā", "gana": "ja_sa_ga_ga", "pada": "8"}',
      'node_id': '73a63025c7fc3d14#0',
      'doc_id': '73a63025c7fc3d14',
      'page': 3}]

Every chunk carries its metre as searchable metadata.

``` python
verse_meta('dharmakṣetre kurukṣetre samavetā yuyutsavaḥ '
           'māmakāḥ pāṇḍavāścaiva kimakurvata sañjaya')
```

    {'meter': 'anuṣṭubh', 'variant': 'pathyā', 'gana': 'ma_ra_ga_ga', 'pada': '8'}

The scan behind it, and the metre that pattern names:

``` python
scan('dharmakṣetre kurukṣetre')     # g for heavy, l for light
```

    'gggglggg'

``` python
detect_meter('kaścit kāntāvirahaguruṇā svādhikārātpramattaḥ '
             'śāpenāstaṃgamitamahimā varṣabhogyeṇa bhartuḥ '
             'yakṣaścakre janakatanayāsnānapuṇyodakeṣu '
             'snigdhacchāyātaruṣu vasatiṃ rāmagiryāśrameṣu')['name']
```

    <Meter.MANDAKRANTA: 'mandākrāntā'>

## The three modules

| module | what is in it |
|----|----|
| `ganapati.text` | verse boundaries, the two chunkers, readers for GRETIL, TEI, VR XML and DCS |
| `ganapati.metre` | IAST transliteration, syllable weights, the gaṇas, 80 metres, mātrā metres |
| `ganapati.lemma` | vidyut lemmas, Monier-Williams glosses, the reader profiles |

## Install

``` sh
pip install ganapati
```

Lemmas and glosses need `vidyut` and an 81 MB data download, both reached on first use. Without
them a store still gets metre.
