Skip to main content

Flow-based process just got Pythonic

dtree is a library for processing flow-based logical system with complicated chain of if-else blocks just like handling a flowchart.

Example

Here is a quick example to get a feeling of dtree. Given information of a student like

student = {
    'age': 15,
    'interest': 'reading',
    'gender': 'female',
}

figure out what gift to give with the following logics:

+++root:
|      +++age < 12:
|      |      +++interest = sports:
|      |      |      ---gender = female --> give note
|      |      |      ---ELSE --> give football
|      |      ---ELSE --> give book
|      +++age >= 15:
|      |      ---interest = writing --> give note
|      |      ---ELSE --> give book
|      +++ELSE:
|      |      ---gender = male --> give football
|      |      ---ELSE --> give book
from dtree import *

student = {
    'age': 15,
    'interest': 'reading',
    'gender': 'female',
}

age = ValueGetter("age", lambda student: student['age'])
interest = ValueGetter("interest", lambda student: student['interest'])
gender = ValueGetter("gender", lambda student: student['gender'])

is_male = gender.eq("male")
is_female = gender.eq("female")


def give(item):
    print("give %s" % item)


give_book = ToAction(lambda student: give("book"), "give book")
give_football = ToAction(lambda student: give("football"), "give football")
give_note = ToAction(lambda student: give("note"), "give note")

rule = DTree(Node(
    (age.lt(12), Node(
        (interest.eq("sports"), Node(
            (is_female, give_note),
            (else_, give_football),
        )),
        (else_, give_book),
    )),
    (age.ge(15), Node(
        (interest.eq("writing"), give_note),
        (else_, give_book),
    )),
    (else_, Node(
        (is_male, give_football),
        (else_, give_book),
    )),
))

rule.run(student)  # give book

Installation

Use pip <http://pip-installer.org>_ or easy_install::

pip install dtree-python

Alternatively, you can just drop dtree.py file into your project—it is self-contained.

  • dtree is tested with Python 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7 and PyPy.

Download files

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

Source Distribution

dtree-python-1.0.2.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dtree_python-1.0.2-py2-none-any.whl (4.7 kB view details)

Uploaded Python 2

File details

Details for the file dtree-python-1.0.2.tar.gz.

File metadata

  • Download URL: dtree-python-1.0.2.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.0

File hashes

Hashes for dtree-python-1.0.2.tar.gz
Algorithm Hash digest
SHA256 1ee1189d201023a41c17bcaff747c49e301496608b4f19f1d2be183b567ebcd1
MD5 a4007083d8c3d34bf1e8d80a296b4285
BLAKE2b-256 8638b72fa424ce52c9d65a0c0b7bb1baf9182d53a5e702df60b58f75f8eb31f2

See more details on using hashes here.

File details

Details for the file dtree_python-1.0.2-py2-none-any.whl.

File metadata

  • Download URL: dtree_python-1.0.2-py2-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.0

File hashes

Hashes for dtree_python-1.0.2-py2-none-any.whl
Algorithm Hash digest
SHA256 3a16f0d5d8fcdba61680698070b1ba92be056638096c5aff4743ef6cf51f2be3
MD5 4b91f438822ba9a3f33db8c6a702d115
BLAKE2b-256 1cc8ef59b57957b84f7fa52ed235fade8a53fdb161f702ad2891df68ab4afdb7

See more details on using hashes here.

Supported by

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