Skip to main content

A skeleton template for Python projects.

Project description

Python Simple decision table procesor

CI Codecov Maintainability Code Climate technical debt Read the Docs PyPi

Install

pysidetap is available on PyPI pypi-pysidetap and you can install it using pip:

`sh pip install pysidetap `

Summary

Simple Decision Table Processor

https://en.wikipedia.org/wiki/Decision_table

This function find and return field ‘return’ from Decision Table,

when all operands in row by ‘fields’ are True.

Example:

This example show use case off Traffic lights decisions.

https://en.wikipedia.org/wiki/Traffic_light#Meanings_of_signals

Decision Table:

red

yellow

green

return

==on

==off

==off

stop

==on

==on

==off

ready

==off

==off

==on

go

==off

==on

==off

break

==off

==off

==off

off

from pysidetap.processor import DTProcessor

DTableTL = [
    {
        'fields': {
            'red': {'op':'==', 'value':'on'},
            'yellow': {'op':'==', 'value':'off'},
            'green': {'op':'==', 'value':'off'},
        },
        # Traffic may not proceed beyond the stop line or
        # otherwise enter the intersection
        'return': {'stop'}
    },
    {
        'fields': {
            'red': {'op':'==', 'value':'on'},
            'yellow': {'op':'==', 'value':'on'},
            'green': {'op':'==', 'value':'off'},
        },
        # The signal is about to change, but the red light rules do apply
        'return': {'ready'}
    },
    {
        'fields': {
            'red': {'op':'==', 'value':'off'},
            'yellow': {'op':'==', 'value':'off'},
            'green': {'op':'==', 'value':'on'},
        },
        # Traffic may not pass the stop line or enter the intersection
        # unless it cannot safely stop when the light shows
        'return': {'go'}
    },
    {
        'fields': {
            'red': {'op':'==', 'value':'off'},
            'yellow': {'op':'==', 'value':'on'},
            'green': {'op':'==', 'value':'off'},
        },
        # Traffic may proceed unless it would not clear the intersection
        # before the next change of phase
        'return': {'break'}
    },
    {
        'fields': {
            'red': {'op':'==', 'value':'off'},
            'yellow': {'op':'==', 'value':'off'},
            'green': {'op':'==', 'value':'off'},
        },
        # Traffic lights is off
        'return': {'off'}
    },
]

p = DTProcessor(DTableTL)
for red in ['on','off']:
    for yellow in ['on','off']:
        for green in ['on','off']:
            result = p.process({'red':red, 'yellow':yellow, 'green':green})
            print(f'red: {red}, yellow: {yellow}, green: {green}, result:{result}')

Issues and Discussions

As usual for any GitHub-based project, raise an issue if you find any bug or want to suggest an improvement, or open a discussion if you want to discuss or chat :wink:

Version

v0.0.10

Changelog

v0.0.10 (2023-12-22)

v0.0.9 (2023-12-22)

v0.0.8 (2023-12-22)

v0.0.7 (2023-12-22)

v0.0.6 (2023-12-22)

v0.0.5 (2023-12-22)

v0.0.4 (2023-01-08)

  • documentation update

  • added traffic lights example

v0.0.3 (2023-01-05)

  • documentation update

v0.0.2 (2023-01-05)

  • First release on PyPI.

v0.1.0 (2023-01-05)

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

pysidetap-0.0.10.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

pysidetap-0.0.10-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file pysidetap-0.0.10.tar.gz.

File metadata

  • Download URL: pysidetap-0.0.10.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pysidetap-0.0.10.tar.gz
Algorithm Hash digest
SHA256 6805e5723ac1987c0e136d36904cb062f680b29fbd82792f75dfe93783b1b380
MD5 5ba295b34256ec5b59224fddd70bacd9
BLAKE2b-256 ea93b65a3109e7d1f27b3c528dbfd7cfe8456bd7834b9c762b9592281c6b6661

See more details on using hashes here.

File details

Details for the file pysidetap-0.0.10-py3-none-any.whl.

File metadata

  • Download URL: pysidetap-0.0.10-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pysidetap-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 c94f09d47f58dccd9f8a7c6e19db546193e456f315e33b981e5e1bf0cbdd3471
MD5 9a9cfade181167b9f406a1f518cec920
BLAKE2b-256 b07bbd25140c00f4bde36943b01b8484ee64bfc7245f036d47e96d5033c94667

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 Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page