Skip to main content

pypi version tests Documentation Status codecov.io

Experta is a Python library for building expert systems strongly inspired by CLIPS.

from random import choice
from experta import *


class Light(Fact):
    """Info about the traffic light."""
    pass


class RobotCrossStreet(KnowledgeEngine):
    @Rule(Light(color='green'))
    def green_light(self):
        print("Walk")

    @Rule(Light(color='red'))
    def red_light(self):
        print("Don't walk")

    @Rule(AS.light << Light(color=L('yellow') | L('blinking-yellow')))
    def cautious(self, light):
        print("Be cautious because light is", light["color"])
>>> engine = RobotCrossStreet()
>>> engine.reset()
>>> engine.declare(Light(color=choice(['green', 'yellow', 'blinking-yellow', 'red'])))
>>> engine.run()
Be cautious because light is blinking-yellow

Migrating from Pyknow

Experta is a Pyknow fork. Just replace any pyknow references in your code/examples to experta and everything should work the same.

Examples

You can find some more examples on GitHub.

TODO

CHANGELOG

1.9.4

  • Resolved #10. Corner case in DepthStrategy in which the first activation of the agenda didn’t get removed.

1.9.3

  • Resolved #11 that was introduced with #7, that caused the same behavior under different conditions.

1.9.2

  • Resolved #7. In some situations last activation was removed right after entering the agenda.

1.9.1

  • Resolved #3. Rules should not be called with already retracted facts.

1.9.0

  • Drop Python 3.4 support.

  • Use setup.cfg to save all package metadata.

1.8.0-1.8.2

  • Rebranded to Experta.

1.7.0

  • Implemented the template system.

  • Replaced warnings by watchers messages.

  • Fixed freeze() with frozen objects.

  • Fixed unfreeze() with unfrozen objects.

  • Parametrized DefFacts via reset() kwargs.

1.6.0

  • Improved overall performance.

1.5.0

  • Added Python version 3.7 to tox.ini.

  • Monkey and bananas example.

  • Fixed bug, numeric index args gets repeated in a weird way introduced in 1.4.0.

  • Pass only the defined args in absence of kwargs.

1.4.0

  • Order integer facts keys after making a copy.

  • as_dict method for Fact.

  • freeze and unfreeze method documentation.

  • unfreeze method in pyknow.utils.

  • Zebra example from Clips.

1.3.0

  • pyknow.operator module.

  • Nested matching.

  • Added Talk ‘Sistemas Expertos en Python con PyKnow - PyConES 2017’ to docs folder.

1.2.0

  • Freeze fact values as the default behavior to address Issue #9.

  • Added pyknow.utils.anyof to mitigate Issue #7.

  • Raise RuntimeError if a fact value is modified after declare().

  • Added MATCH and AS objects.

1.1.1

  • Removing the borg optimization for P field constraints.

  • Use the hash of the check in the sorting of the nodes to always generate the same alpha part of the network.

1.1.0

  • Allow any kind of callable in Predicate Field Constraints (P()).

1.0.1

  • DNF of OR clause inside AND or Rule was implemented wrong.

1.0.0

  • RETE matching algorithm.

  • Better Rule decorator system.

  • Facts are dictionaries.

  • Documentation.

<1.0.0

  • Unestable API.

  • Wrong matching algorithm.

  • Bad performance

  • PLEASE DON’T USE THIS.

Download files

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

Source Distribution

experta-1.9.4.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

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

experta-1.9.4-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file experta-1.9.4.tar.gz.

File metadata

  • Download URL: experta-1.9.4.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for experta-1.9.4.tar.gz
Algorithm Hash digest
SHA256 7c6ea687043b138f4ac7d3a8aea92aa60c02035e350c105a6bc142203fedc109
MD5 d00adfe3f919751cfd6d573217361624
BLAKE2b-256 8b7c355d110bb687caa47d4205963d077abca92f2627bfefafc2115db96e7d58

See more details on using hashes here.

File details

Details for the file experta-1.9.4-py3-none-any.whl.

File metadata

  • Download URL: experta-1.9.4-py3-none-any.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for experta-1.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c83d78d17305d9df502d6c3f14259f3b909278f3dd99f2494c0b83791ebe13c9
MD5 6af08b7d3663f41f7b0274f355c65d18
BLAKE2b-256 035dc06fad9dadbec34d95f548bca648ec0de2afd6f8eb2247194150ad38ee8f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.9.4 This release

2 files

1.9.3

2 files

1.9.2

2 files

1.9.1

2 files

1.9.0

2 files

1.8.2

2 files

1.8.0

2 files

Supported by

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