{ "info": { "author": "Damiano Bortolato - Davide Marcato", "author_email": "davide.marcato@lnl.infn.it", "bugtrack_url": null, "classifiers": [], "description": "# pysmlib\n\n## Python Finite State Machines for EPICS\n\n_Developers_: Damiano Bortolato - Davide Marcato @ Laboratori Nazionali di Legnaro - INFN\n\nMain Repository: https://github.com/darcato/pysmlib\n\nFull documentation: https://darcato.github.io/pysmlib/docs/html/\n\n### Main features\n\n- Easy to use and fast development of complex event based fsm - just code the states!\n- Full EPICS Channel Access integration via PyEpics.\n- High expandability as provided by all the libraries of Python.\n- Integrated configurable logging systems.\n- Convenient methods to access all the information on I/O.\n- Timers can be used to execute actions after a time delay.\n- Integrated watchdog logic.\n- Multi-threading: each fsm is executed on a different thread, sharing I/O.\n- Convenient loader to launch a daemon with multiple fsm.\n- Possibility to apply a configurable naming convention on I/O.\n\n## Installation\n\nTo install simply run:\n\n``` bash\npip install pysmlib\n```\n\nor download the latest release/sources from github, unpack it and run:\n\n``` bash\ncd pysmlib\npip install .\n```\n\n### Dependencies\n\nAs of today, only python 2.7 is supported. Pyepics and numpy modules are\nrequired and automatically installed by pip. Sphinx and its theme \"Read the\nDocs\" are required to build the documentation.\n\n## Example\n\n``` python\n#! /usr/bin/python\nfrom smlib import fsmBase, loader\n\n# FSM definition\nclass exampleFsm(fsmBase):\n def __init__(self, name, *args, **kwargs):\n super(exampleFsm, self).__init__(name, **kwargs)\n\n self.counter = self.connect(\"testcounter\") # connect to PV \"testcounter\"\n self.mirror = self.connect(\"testmirror\")\n self.enable = self.connect(\"testenable\")\n\n self.gotoState('idle')\n\n # idle state\n def idle_eval(self):\n if self.enable.rising():\n self.gotoState(\"mirroring\")\n\n # mirroring state\n def mirroring_eval(self):\n if self.enable.falling():\n self.gotoState(\"idle\")\n elif self.counter.changing():\n readValue = self.counter.val()\n self.mirror.put(readValue)\n\n# Main\nif __name__ == '__main__':\n # load the fsm\n loader.load(exampleFsm, \"myFirstFsm\")\n\n # start execution\n loader.start()\n```\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/darcato/pysmlib", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://darcato.github.io/pysmlib/docs/html/", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "pysmlib", "package_url": "https://pypi.org/project/pysmlib/", "platform": "", "project_url": "https://pypi.org/project/pysmlib/", "project_urls": { "Download": "https://github.com/darcato/pysmlib", "Homepage": "https://darcato.github.io/pysmlib/docs/html/" }, "release_url": "https://pypi.org/project/pysmlib/2.0.0/", "requires_dist": [ "numpy", "pyepics" ], "requires_python": "", "summary": "Python Finite State Machines for EPICS", "version": "2.0.0" }, "last_serial": 5096214, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "6d0a45cdca869b9aff6a85b20a216541", "sha256": "8b38ef33c29d3838f33a73582bfd29a03e8e9d73ba4d78fc53dfb14936ec1866" }, "downloads": -1, "filename": "pysmlib-2.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "6d0a45cdca869b9aff6a85b20a216541", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23966, "upload_time": "2019-03-22T18:50:59", "url": "https://files.pythonhosted.org/packages/a4/7d/c2e6020ffd2617c7fb24d3c90f4bf236a04f4888a6cf2dc7aeec53971c9d/pysmlib-2.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f45504bab30919d97ddd1d5c62514e62", "sha256": "6d65907810a9725f38fa8cfa9389559d0f7d59a7a79602998b1b7dac7f5aac66" }, "downloads": -1, "filename": "pysmlib-2.0.0.tar.gz", "has_sig": false, "md5_digest": "f45504bab30919d97ddd1d5c62514e62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36183, "upload_time": "2019-04-04T09:46:43", "url": "https://files.pythonhosted.org/packages/02/f7/5aaf1620bda8a6b5371cdbee7440ac68cd5b78d1eb515f673bfde01b0db0/pysmlib-2.0.0.tar.gz" } ], "2.0.0rc1": [ { "comment_text": "", "digests": { "md5": "63b8f8fc5b1015d65b5b909bc61d847e", "sha256": "fe5b5b9d300526e5a6a8115aaf9e4d0b63106aa3c930a1454685f26ed061cd09" }, "downloads": -1, "filename": "pysmlib-2.0.0rc1-py2-none-any.whl", "has_sig": false, "md5_digest": "63b8f8fc5b1015d65b5b909bc61d847e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 21952, "upload_time": "2018-08-28T14:12:21", "url": "https://files.pythonhosted.org/packages/db/32/a162a3e06fd48156c1616e3825a2e915b6495d6ceb8da35741954dcb1101/pysmlib-2.0.0rc1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1765c6b162f517fc27dfda2b893e64e8", "sha256": "a02ea100b7dcf899988be2bf55b68a1a65077a6a95c823b95a83a14a61a026a3" }, "downloads": -1, "filename": "pysmlib-2.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "1765c6b162f517fc27dfda2b893e64e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34570, "upload_time": "2018-08-28T14:12:23", "url": "https://files.pythonhosted.org/packages/a2/70/6aea788a5b80d4f17c52dd52c3e2c29a7bab406e2581ba452b8651aad39c/pysmlib-2.0.0rc1.tar.gz" } ], "2.0.0rc2": [ { "comment_text": "", "digests": { "md5": "43b338c62ff6cbdce91123db493889f5", "sha256": "926fc74782bd0b45e4002c4c4c165e9629fdfc574258e271a2ccbc00476370b6" }, "downloads": -1, "filename": "pysmlib-2.0.0rc2-py2-none-any.whl", "has_sig": false, "md5_digest": "43b338c62ff6cbdce91123db493889f5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 22163, "upload_time": "2018-11-13T22:05:52", "url": "https://files.pythonhosted.org/packages/b9/8c/83c52dfdb5e11c18f39ee5d557323c28eccfb388bbbb78c6a553012f8ee5/pysmlib-2.0.0rc2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d253c2e52e0369f328697c735ca420ae", "sha256": "d2199319a18a07cdaa6fea0d38d3a34dd53216f7adabe1d8861f944d11d4edb4" }, "downloads": -1, "filename": "pysmlib-2.0.0rc2.tar.gz", "has_sig": false, "md5_digest": "d253c2e52e0369f328697c735ca420ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35747, "upload_time": "2018-11-13T22:05:53", "url": "https://files.pythonhosted.org/packages/0d/6f/b9c06d1e066a6b0bb73b96ea080abaea46ea8c6daf46668360a20b70ed2c/pysmlib-2.0.0rc2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d0a45cdca869b9aff6a85b20a216541", "sha256": "8b38ef33c29d3838f33a73582bfd29a03e8e9d73ba4d78fc53dfb14936ec1866" }, "downloads": -1, "filename": "pysmlib-2.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "6d0a45cdca869b9aff6a85b20a216541", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23966, "upload_time": "2019-03-22T18:50:59", "url": "https://files.pythonhosted.org/packages/a4/7d/c2e6020ffd2617c7fb24d3c90f4bf236a04f4888a6cf2dc7aeec53971c9d/pysmlib-2.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f45504bab30919d97ddd1d5c62514e62", "sha256": "6d65907810a9725f38fa8cfa9389559d0f7d59a7a79602998b1b7dac7f5aac66" }, "downloads": -1, "filename": "pysmlib-2.0.0.tar.gz", "has_sig": false, "md5_digest": "f45504bab30919d97ddd1d5c62514e62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36183, "upload_time": "2019-04-04T09:46:43", "url": "https://files.pythonhosted.org/packages/02/f7/5aaf1620bda8a6b5371cdbee7440ac68cd5b78d1eb515f673bfde01b0db0/pysmlib-2.0.0.tar.gz" } ] }