Skip to content

Pure-python reader for DAWGs on CircuitPython compatible boards.

License

Notifications You must be signed in to change notification settings

kbravh/circuit-dawg

 
 

Repository files navigation

Circuit DAWG

This pure-python package provides read-only access for files created by the dawgdic C++ library and the DAWG python package. It has been forked from DAWG-Python in order to provide support for Circuit Python.

This package is not capable of creating DAWGs. It works with DAWGs built by the dawgdic C++ library or the DAWG Python extension module. The main purpose of Circuit DAWG is to provide access to DAWGs on a microcontroller without requiring compiled extensions.

Installation

Clone this repository, or install with pip:

pip install circuit_dawg

Usage

The aim of circuit-dawg is to be API compatible with DAWG when it is possible.

First, you have to create a dawg using DAWG module:

import dawg
d = dawg.DAWG(data)
d.save('words.dawg')

And then this dawg can be loaded without requiring C extensions:

import circuit_dawg
d = circuit_dawg.DAWG().load('words.dawg')

Please consult DAWG docs for detailed usage. Some features (like constructor parameters or save() method) are intentionally unsupported.

Changes from DAWG Python

Circuit Python has a subset of the functionality of a full Python distribution. There were some built-in array methods from Python used for loading in the DAWG files that aren't present in Circuit Python, so they needed to be re-written.

Future Goals

Interact with DAWGs from file without loading into memory

Since Circuit Python is run on microcontrollers, memory is a commodity in very short supply. Loading a large DAWG into memory in order to interact with it is entirely unfeasible. Thus, I plan to make modifications to allow the DAWG to be read directly from the binary file without needing to load it all in.

Contributions are welcome!

Contributing

Check out the source code Submit an issue or suggestion

Feel free to submit ideas, bugs or pull requests.

Local development

Create a virtual environment and install the requirements in requirements-dev.txt.

Tests can be run (with coverage) using python -m pytest --cov=circuit_dawg tests/.

Authors & Contributors

Forked from DAWG-Python by Mikhail Korobov - kmike84@gmail.com

The algorithms are from dawgdic C++ library by Susumu Yata & contributors.

License

This package is licensed under MIT License.

About

Pure-python reader for DAWGs on CircuitPython compatible boards.

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Python 100.0%