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.3.tar.gz (5.2 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.3-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dtree-python-1.0.3.tar.gz
  • Upload date:
  • Size: 5.2 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.3.tar.gz
Algorithm Hash digest
SHA256 9c5777d16b1f257dcd8ec5a7427f534657f1b69b502b94083a20d9c3d7738031
MD5 7d032e41c013aa4d74cc9943e7211380
BLAKE2b-256 3279c01d6f6abe56733fb24a24ca287ce512a607572b1628723536935cfe64bb

See more details on using hashes here.

File details

Details for the file dtree_python-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: dtree_python-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9f1ebf557b1600f88f80f5c98d990fa082dff897529f77358d99c259dc542335
MD5 3b1e10a2c054d41801a4ce1c0efb2d1d
BLAKE2b-256 8e2dbb1e729d7861463dee6bc47d98998dee623863d2833271cf7b1860ce4160

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 Sentry Error logging StatusPage Status page