{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "=========\n|Experta| \n=========\n\n|pypi| |version| |tests| |docs| |coverage|\n\nExperta is a Python library for building expert systems strongly inspired\nby CLIPS_.\n\n.. code-block:: python\n\n from random import choice\n from experta import *\n\n\n class Light(Fact):\n \"\"\"Info about the traffic light.\"\"\"\n pass\n\n\n class RobotCrossStreet(KnowledgeEngine):\n @Rule(Light(color='green'))\n def green_light(self):\n print(\"Walk\")\n\n @Rule(Light(color='red'))\n def red_light(self):\n print(\"Don't walk\")\n\n @Rule(AS.light << Light(color=L('yellow') | L('blinking-yellow')))\n def cautious(self, light):\n print(\"Be cautious because light is\", light[\"color\"])\n\n\n.. code-block:: python\n\n >>> engine = RobotCrossStreet()\n >>> engine.reset()\n >>> engine.declare(Light(color=choice(['green', 'yellow', 'blinking-yellow', 'red'])))\n >>> engine.run()\n Be cautious because light is blinking-yellow\n\n\nMigrating from Pyknow\n---------------------\n\nExperta is a Pyknow fork. Just replace any `pyknow` references in your\ncode/examples to `experta` and everything should work the same.\n\n\nExamples\n--------\n\nYou can find some more examples on GitHub_.\n\n.. _CLIPS: http://clipsrules.sourceforge.net\n.. _GitHub: https://github.com/nilp0inter/experta/tree/develop/docs\n.. |Experta| image:: https://raw.githubusercontent.com/nilp0inter/experta/develop/docs/static/expertalogo_small.png\n.. |pypi| image:: https://img.shields.io/pypi/v/experta.svg\n :target: https://pypi.python.org/pypi/experta\n\n.. |version| image:: https://img.shields.io/pypi/pyversions/experta.svg\n :target: https://pypi.python.org/pypi/experta\n\n.. |tests| image:: https://travis-ci.org/nilp0inter/experta.svg?branch=master\n :target: https://travis-ci.org/nilp0inter/experta\n\n.. |docs| image:: https://readthedocs.org/projects/experta/badge/?version=stable\n :target: https://experta.readthedocs.io/en/stable/\n :alt: Documentation Status\n\n.. |coverage| image:: https://codecov.io/gh/nilp0inter/experta/branch/develop/graph/badge.svg\n :target: https://codecov.io/gh/nilp0inter/experta\n :alt: codecov.io\n\n\nTODO\n----\n\n\nCHANGELOG\n---------\n\n1.9.2\n~~~~~\n\n* Resolved #7. In some situations last activation was removed right\n after entering the agenda.\n\n\n1.9.1\n~~~~~\n\n* Resolved #3. Rules should not be called with already retracted facts.\n\n\n1.9.0\n~~~~~\n\n* Drop Python 3.4 support.\n* Use setup.cfg to save all package metadata.\n\n\n1.8.0-1.8.2\n~~~~~~~~~~~\n\n* Rebranded to Experta.\n\n\n1.7.0\n~~~~~\n\n* Implemented the template system.\n* Replaced warnings by watchers messages.\n* Fixed freeze() with frozen objects.\n* Fixed unfreeze() with unfrozen objects.\n* Parametrized DefFacts via reset() kwargs.\n\n\n1.6.0\n~~~~~\n\n* Improved overall performance.\n\n\n1.5.0\n~~~~~\n\n* Added Python version 3.7 to tox.ini.\n* Monkey and bananas example.\n* Fixed bug, numeric index args gets repeated in a weird way introduced in `1.4.0`.\n* Pass only the defined args in absence of kwargs.\n\n\n1.4.0\n~~~~~\n\n* Order integer facts keys after making a copy.\n* as_dict method for Fact.\n* freeze and unfreeze method documentation.\n* unfreeze method in pyknow.utils.\n* Zebra example from Clips.\n\n\n1.3.0\n~~~~~\n\n* `pyknow.operator` module.\n* Nested matching.\n* Added Talk 'Sistemas Expertos en Python con PyKnow - PyConES 2017' to docs\n folder.\n\n\n1.2.0\n~~~~~\n\n* Freeze fact values as the default behavior to address Issue #9.\n* Added `pyknow.utils.anyof` to mitigate Issue #7.\n* Raise RuntimeError if a fact value is modified after declare().\n* Added MATCH and AS objects.\n\n\n1.1.1\n~~~~~\n\n* Removing the borg optimization for P field constraints.\n* Use the hash of the check in the sorting of the nodes to always\n generate the same alpha part of the network.\n\n\n1.1.0\n~~~~~\n\n* Allow any kind of callable in Predicate Field Constraints (P()).\n\n\n1.0.1\n~~~~~\n\n* DNF of OR clause inside AND or Rule was implemented wrong.\n\n\n1.0.0\n~~~~~\n\n* RETE matching algorithm.\n* Better Rule decorator system.\n* Facts are dictionaries.\n* Documentation.\n\n\n<1.0.0\n~~~~~~\n\n* Unestable API.\n* Wrong matching algorithm.\n* Bad performance\n* PLEASE DON'T USE THIS.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nilp0inter/experta", "keywords": "knowledge-based,inference,engine", "license": "LGPLv3", "maintainer": "", "maintainer_email": "", "name": "experta", "package_url": "https://pypi.org/project/experta/", "platform": "", "project_url": "https://pypi.org/project/experta/", "project_urls": { "Homepage": "https://github.com/nilp0inter/experta" }, "release_url": "https://pypi.org/project/experta/1.9.2/", "requires_dist": [ "frozendict (==1.2)", "schema (==0.6.7)" ], "requires_python": "", "summary": "Expert Systems for Python", "version": "1.9.2" }, "last_serial": 5866549, "releases": { "1.8.0": [ { "comment_text": "", "digests": { "md5": "147ff951e9bf1691b16fb2be81045df0", "sha256": "ec8d25410cac53ad41e380f46213a1dcc51f95a40831ed558d6184ac6df0308b" }, "downloads": -1, "filename": "experta-1.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "147ff951e9bf1691b16fb2be81045df0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34466, "upload_time": "2019-08-13T06:38:55", "url": "https://files.pythonhosted.org/packages/81/c9/80e1f2084e2931f024093f288458a8e26fe1fc304ca4b3698e3050c95918/experta-1.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ebab1fcf03d488c93624ff627b16ebec", "sha256": "a87356aef0f86f16c29a76e9ebaca7817b3e682430e31e30d29b4284d267fb0f" }, "downloads": -1, "filename": "experta-1.8.0.tar.gz", "has_sig": false, "md5_digest": "ebab1fcf03d488c93624ff627b16ebec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23585, "upload_time": "2019-08-13T06:38:58", "url": "https://files.pythonhosted.org/packages/4a/b0/05e6ee67002172c0bd489a6aa7b264406caefb64abbad0dce9a10da5e890/experta-1.8.0.tar.gz" } ], "1.8.2": [ { "comment_text": "", "digests": { "md5": "fe185dad4965a35d83a059a1910ad0d3", "sha256": "70d68c1d3c4628bdb63bb5fdef1aaaf60dcf8829d569ae70bdbbdc1a182957e6" }, "downloads": -1, "filename": "experta-1.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fe185dad4965a35d83a059a1910ad0d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34466, "upload_time": "2019-08-13T06:48:59", "url": "https://files.pythonhosted.org/packages/0e/2a/ada1ddee7222f15d1b1ffbbf73e523c13b90da3bc96dbceb7a7151ba4f24/experta-1.8.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3039397d9c2edfcfebf40ea7f2347c6a", "sha256": "1605e2e8cd63f0448620639db3ed23bd588aaaec3e9059004c918cf246be4eb9" }, "downloads": -1, "filename": "experta-1.8.2.tar.gz", "has_sig": false, "md5_digest": "3039397d9c2edfcfebf40ea7f2347c6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23599, "upload_time": "2019-08-13T06:49:00", "url": "https://files.pythonhosted.org/packages/50/34/4af5af88cf1c90cd15aeb6b01be6ac4795fe16b48c8cd2f50c240b93cf48/experta-1.8.2.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "2226b32ceae23816310cb8acda00a716", "sha256": "0ed7c48939dd32ef8f7e44179125fb3033255b07d52f43627ad59a0bbbf0eed2" }, "downloads": -1, "filename": "experta-1.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2226b32ceae23816310cb8acda00a716", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35298, "upload_time": "2019-08-13T09:18:26", "url": "https://files.pythonhosted.org/packages/83/b1/15ccdd64f468cb20d0c597a15e63f9eb993916f602cebd065667c88b57eb/experta-1.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a808b04d2e07b294550e9679e0918afd", "sha256": "72a4a1b172f49c7663c171fdcf4f6dc4c69bd5b178645c0e31f55390da739297" }, "downloads": -1, "filename": "experta-1.9.0.tar.gz", "has_sig": false, "md5_digest": "a808b04d2e07b294550e9679e0918afd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23960, "upload_time": "2019-08-13T09:18:28", "url": "https://files.pythonhosted.org/packages/00/de/df838debe4a3a2e84f438780bb02cd33ac4c2ebcaeabd1fe509af1426d27/experta-1.9.0.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "d5a7e79b05c1d9d55299a35b0490a8b3", "sha256": "dbcff743af5c5b05654a7af96df76150d64595b21b36884d59810717dd7aa510" }, "downloads": -1, "filename": "experta-1.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d5a7e79b05c1d9d55299a35b0490a8b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35348, "upload_time": "2019-08-13T12:46:08", "url": "https://files.pythonhosted.org/packages/f2/21/18207f6f6141c1182db30d177b1757b4dc502f3f201fe899f2465d240374/experta-1.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4a14b7af3ba43013161e5c94456d9f7", "sha256": "7ed012cda682e8bf7ba4ea0da6f9d25976bf093fa721e01f812596d8ecbf8e41" }, "downloads": -1, "filename": "experta-1.9.1.tar.gz", "has_sig": false, "md5_digest": "d4a14b7af3ba43013161e5c94456d9f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24044, "upload_time": "2019-08-13T12:46:11", "url": "https://files.pythonhosted.org/packages/01/4d/c3f4bc9bcbe59bd5812912fbf67b07f3d55b0281df3297b79b3b2445dff5/experta-1.9.1.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "a117846dd934df83db1a2cc5ed9e4741", "sha256": "36df8aab531fff1d8100ff08bfe82cd8ac882be243dc0302b6e7c5667a646c99" }, "downloads": -1, "filename": "experta-1.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a117846dd934df83db1a2cc5ed9e4741", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35440, "upload_time": "2019-09-21T16:45:57", "url": "https://files.pythonhosted.org/packages/32/c4/b08d6b0355b625c8c2499f9cf20e284e13517c275e210536dece54b7118c/experta-1.9.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3449c1b218173be3305d4b07903f612", "sha256": "4344870505ec57d614431cac2bd363005fc52dcaf91f559b82eaab1e87f2e9c5" }, "downloads": -1, "filename": "experta-1.9.2.tar.gz", "has_sig": false, "md5_digest": "b3449c1b218173be3305d4b07903f612", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26102, "upload_time": "2019-09-21T16:45:59", "url": "https://files.pythonhosted.org/packages/ea/de/9fa61d48fdebc04481e3bb65d6dccdb2eb73b6d479dd81187d83397b9082/experta-1.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a117846dd934df83db1a2cc5ed9e4741", "sha256": "36df8aab531fff1d8100ff08bfe82cd8ac882be243dc0302b6e7c5667a646c99" }, "downloads": -1, "filename": "experta-1.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a117846dd934df83db1a2cc5ed9e4741", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35440, "upload_time": "2019-09-21T16:45:57", "url": "https://files.pythonhosted.org/packages/32/c4/b08d6b0355b625c8c2499f9cf20e284e13517c275e210536dece54b7118c/experta-1.9.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3449c1b218173be3305d4b07903f612", "sha256": "4344870505ec57d614431cac2bd363005fc52dcaf91f559b82eaab1e87f2e9c5" }, "downloads": -1, "filename": "experta-1.9.2.tar.gz", "has_sig": false, "md5_digest": "b3449c1b218173be3305d4b07903f612", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26102, "upload_time": "2019-09-21T16:45:59", "url": "https://files.pythonhosted.org/packages/ea/de/9fa61d48fdebc04481e3bb65d6dccdb2eb73b6d479dd81187d83397b9082/experta-1.9.2.tar.gz" } ] }