Skip to main content

Truth table evaluator and Truth table enum module generator.

Project description

https://github.com/MacHu-GWU/tt4human-project/workflows/CI/badge.svg https://img.shields.io/pypi/v/tt4human.svg https://img.shields.io/pypi/l/tt4human.svg https://img.shields.io/pypi/pyversions/tt4human.svg https://img.shields.io/badge/Release_History!--None.svg?style=social https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
https://img.shields.io/badge/Link-Install-blue.svg https://img.shields.io/badge/Link-GitHub-blue.svg https://img.shields.io/badge/Link-Submit_Issue-blue.svg https://img.shields.io/badge/Link-Request_Feature-blue.svg https://img.shields.io/badge/Link-Download-blue.svg

Welcome to tt4human Documentation

Truth Table is a lookup table that can return a boolean value by given a set of conditions. A set of conditions is called a case.

For example, we have two types of conditions: weather and get_up (when you get up). And we want to determine if you will go out. weather has two possible values: is_sunny and not_sunny. get_up has three possible values: before_10, 10_to_2, after_2.

Below is the truth table:

weather         get_up          go_out
is_sunny    before_10       1
is_sunny    10_to_2     1
is_sunny    after_2     0
not_sunny   before_10       0
not_sunny   10_to_2     0
not_sunny   after_2     0

Feature 1, truth table evaluator

the tt4human Python library can read truth table data from csv/tsv file and evaluate the truth table by the given case.

>>> from tt4human.api import TruthTable
>>> tt = TruthTable.from_csv(dir_unit_test.joinpath("go_out.tsv"))
>>> tt.evaluate(case=dict(weather="is_sunny", get_up="before_10"))
True

Feature 2, Truth table enum module generator

You may want to create a Python module that contains all the condition enum and the initialized TruthTable instance. So that you can drop them to your code base and use them directly.

>>> from tt4human.api import TruthTable
>>> from pathlib import Path
>>> tt = TruthTable.from_csv(dir_unit_test.joinpath("go_out.tsv"))
>>> tt.generate_module(
...     dir_path=Path("/path/to/your/project/folder),
...     module_name="do_you_go_out",
...     overwrite=False,
... )

Then it will create a do_you_go_out.tsv file:

weather         get_up          go_out
is_sunny    before_10       1
is_sunny    10_to_2     1
is_sunny    after_2     0
not_sunny   before_10       0
not_sunny   10_to_2     0
not_sunny   after_2     0

And create a do_you_go_out.py file:

# -*- coding: utf-8 -*-

"""
this module is generated by https://pypi.org/project/tt4human = 0.1.1
"""

from pathlib import Path
from tt4human.api import BetterStrEnum, TruthTable


class WeatherEnum(BetterStrEnum):
    is_sunny = "is_sunny"
    not_sunny = "not_sunny"


class GetUpEnum(BetterStrEnum):
    before_10 = "before_10"
    _10_to_2 = "10_to_2"
    after_2 = "after_2"


truth_table = TruthTable.from_csv(
    path=Path(__file__).absolute().parent.joinpath("do_you_go_out.tsv"),
)

if __name__ == "__main__":
    assert truth_table.evaluate(case={'weather': 'is_sunny', 'get_up': 'before_10'}) is True

Install

tt4human is released on PyPI, so all you need is to:

$ pip install tt4human

To upgrade to latest version:

$ pip install --upgrade tt4human

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

tt4human-0.2.1.tar.gz (30.2 kB view hashes)

Uploaded Source

Built Distribution

tt4human-0.2.1-py3-none-any.whl (27.2 kB view hashes)

Uploaded Python 3

Supported by

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