Development

Managing with ttasks.py

tt ships with a script ttasks.py (tt + tasks = ttasks) in the project’s top-level directory, used to manage common project tasks. You will see it referenced below.

Dependencies

All development requirements for tt are stored in the dev-requirements.txt file in the project’s top-level directory. You can install all of these dependencies with:

pip install -r dev-requirements.txt

Testing

Testing is done with Python’s unittest module. All tests can be run using the ttasks.py script:

python ttasks.py test

Cross Python version testing is achieved through tox, and the project’s CI is run on Travis CI and AppVeyor. To run changes against the reference and style tests, simply invoke tox from the top-level directory of the project

Style

tt aims to be strictly PEP8 compliant, enforcing this compliance via Flake8. This project includes an editorconfig file to help with formatting issues, as well. Google style docstrings are used in the source code code documentation and processed via napoleon.

The Todo List

Below are features I’d like to add eventually, roughly ordered in anticipated schedule of completion. A new release will be cut every so often down the list.

  • For the CLI

    • Functional testing, capturing stdout/stderr
    • Option for interfacing with the truth table’s fill method
    • Option for interfacing with the truth table’s ordering attribute
    • Option for specifying output delimiters for token-listing commands
  • For the project as a whole

    • A Getting Started section with a tutorial-style guide to the library and CLI
    • Clean up API documentation (with valid cross-references)
    • Karnaugh map support
    • Optimizations in tree evaluation
    • Interface for substituting/transforming expression symbols
    • Functionality for optimizing/simplifying expressions