a little flow-based process engine implementation
Project description
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.
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
dtree-python-1.0.0.tar.gz
(4.7 kB
view hashes)
Built Distributions
Close
Hashes for dtree_python-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4874cd636911e53526ddd09d4ab7217438eb4d3c36642a6d345c569fa41c98ba |
|
MD5 | e2d238dcaeb57d5b8c5d168ff0f29b38 |
|
BLAKE2b-256 | cf2553228111801f0495715dc490640d40636956d30a5851ff0c3420c7e546b8 |
Close
Hashes for dtree_python-1.0.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 676b02f33634967809e0b8117a04cb5addcb13ddbe905c7a2b48af8eb8e58731 |
|
MD5 | 5c41da8e99a6966bc646e8529b33d799 |
|
BLAKE2b-256 | 501942fb7d640db1587270cc658ab1a5a89464e3f2ba2adaa46ca9f5ad254b21 |