Skip to main content

A modern Pythonic implementation of Avro Phonetic.

Project description

avro.py

A modern Pythonic implementation of the popular Bengali phonetic-typing software Avro Phonetic.

Downloads Python Version License



Unit Tests Linting Formatting


⚡ Overview

avro.py provides a fully fledged, batteries-included text parser which can parse, reverse and even convert English Roman script into its phonetic equivalent (unicode) of Bengali. At its core, it implements an extensively modified version of the Avro Phonetic Dictionary Search Library by Mehdi Hasan Khan.

The original project (pyAvroPhonetic) can only be used on versions up to Python 2.7 and doesn't contain proper support for Python's third major version AKA Python 3. It is noteworthy that Python 2 has officially been deprecated by the original maintainers and its usage is being discouraged overall.

✨ Inspirations

This package is inspired from Rifat Nabi's jsAvroPhonetic library and derives from Kaustav Das Modak's pyAvroPhonetic.


🔨 Installation

This package requires Python 3.8 or higher to be used inside your development environment.

# Install / upgrade.
$ pip install avro.py

🔖 Usage Guide

1. parse()

This is the most basic use case for avro.py, which includes parsing English Roman script to unicode Bengali:

# Imports.
import avro

# Parsing some text.
output = avro.parse('ami banglay gan gai.')
print(output)

2. parse(bijoy=True)

Alternatively, we can generate the same output, but in compliance with the Bijoy Keyboard format:

# Parsing some text in Bijoy!
output = avro.parse('tumi emon keno?', bijoy=True)

3. to_bijoy()

We can also use avro.py to convert existing unicode Bengali to its Bijoy Keyboard equivalent:

# Converting some text.
bijoy_text = avro.to_bijoy('আমি বাংলায় গান গাই।')

4. reverse()

Finally, you can reverse unicode Bengali to English as well (newly added).

# Reversing back!
reversed_text = avro.reverse('আমার সোনার বাংলা।')

🔖 Command Line Usage

Alternatively, instead of using avro.py from within your Python project, you can also use it as a simple, tiny command-line interface for easy parsing and reversing of text.

# Installing the package.
$ pip install avro.py[cli]

Here are some examples for you to get started with:

# Main help section.
$ avro --help  # or, use: avro <command> --help

# Parsing some text.
$ avro parse "tumi onek bhalO!"
$ avro parse --bijoy "amio kharap na, taina?"  # (bijoy keyboard format)

# Reversing.
$ avro reverse "তাই তো!"

# Using additional flags to ease workflow.
$ avro parse --from-clip  # (fetching input from clipboard)
$ avro parse "asolei!" --copy  # (copying output to clipboard)
$ avro parse --from-clip --copy  # (clipboard input -> output)

🛠️ Contributing

:octocat: Fork -> Do your changes -> Send a Pull Request, it's that easy!


Additional Developer Notes

In short, avro.py doesn't depend on any third-party libraries. However, if you'd like to contribute to the project, you'll need a handful of such useful tools.

# Installing the required developer toolchain.
$ python3 -m pip install -r requirements.txt

# (Optional) Setting up the package itself for testing purposes.
$ python3 setup.py develop

# Running the predetermined tests inside the project.
$ python3 -m pytest --verbose

🐛 We're looking for bug hunters, by the way!

If you come across any kind of bug or wanna request a feature, please let us know by opening an issue here. We do need more ideas to keep the project alive and running, don't we? :P



👑 Acknowledgements

  • Mehdi Hasan Khan for originally developing and maintaining Avro Phonetic.
  • Rifat Nabi for porting it to Javascript.
  • Sarim Khan for writing ibus-avro which helped to clarify my concepts further.
  • Kaustav Das Modak for porting Rifat Nabi's JavaScript iteration to Python 2.
  • Md Enzam Hossain for helping him understand the ins and outs of the Avro dictionary and the way it works.

📋 License

Licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

avro_py-2024.4.27.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

avro.py-2024.4.27-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file avro_py-2024.4.27.tar.gz.

File metadata

  • Download URL: avro_py-2024.4.27.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for avro_py-2024.4.27.tar.gz
Algorithm Hash digest
SHA256 6e91337e77bd65e40347388967d3ed4810889b915531ce62944f4ae505eb516e
MD5 3c4e2d595aec4d3f4fba20a99dfc9f98
BLAKE2b-256 52ef788ab7432012a098081e5d5fc660da7e6f859dabf2dbb81198d432005aa0

See more details on using hashes here.

File details

Details for the file avro.py-2024.4.27-py3-none-any.whl.

File metadata

  • Download URL: avro.py-2024.4.27-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for avro.py-2024.4.27-py3-none-any.whl
Algorithm Hash digest
SHA256 58591ee46234ac7451966d8b85c7a7c077a1dd5f27f0accf4d4450d4db7fc2c9
MD5 fd5e42693cf9e685f8075143ea260186
BLAKE2b-256 5ccc0a93a98d65fc696cd510221cb4c68c60b56f2fbad37f93ac8c3427157b19

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page