{ "info": { "author": "Shenghao Yang", "author_email": "me@shenghaoyang.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# pylcddc\n\nA python library for interfacing with ``LCDd``, the server\ncomponent of the commonly known ``LCDproc``\n\nFeatures:\n\n- Object-oriented interface support for all native \n ``LCDd`` widgets\n - Full frame support, nest widget objects in frames, treat frames \n like widget containers\n - Support for user-created composite widgets, that can be used just \n like native widgets (no easy API for now, changes to come later)\n\n- Decoupled thread to service ``LCDd`` screen switching responses \n- One I/O method to update screen, no funky exception handling everywhere\n\n# Installation\n``pip install pylcddc``\n\n# More TODOs\n- See ``TODO.md`` for more information and TODOs\n\n# Version support\n- Tested on ``LCDd`` packaged with ``LCDproc`` version ``0.5.9``\n- Protocol version ``0.3``\n\n# Modules for users\n- ``pylcddc.client``: client for LCDd\n- ``pylcddc.screen``: screens to attach to clients\n- ``pylcddc.widgets``: widgets to place in screens\n- ``pylcddc.exceptions``: exceptions raised by the library\n\n# Modules for developers\n- ``pylcddc.responses``: LCDd response decoder and abstractions\n- ``pylcddc.commands``: LCDd request generation\n\n# Examples\nDon't really use these for production code...\n\nSee more examples in ``/demo``\n\n## Simple usage for static display\n\n```python\nimport pylcddc.client as client\nimport pylcddc.widgets as widgets\nimport pylcddc.screen as screen\n\ntitle = widgets.Title('title_widget',\n 'Hello, World!')\nmain_scr = screen.Screen('main', [title])\n\nc = client.Client('localhost', 13666)\nc.add_screen(main_scr)\ninput('Press any key to exit')\nc.close()\n```\n\n## Nest widgets in frames\n```python\nimport pylcddc.client as client\nimport pylcddc.widgets as widgets\nimport pylcddc.screen as screen\nimport platform\n\nflavorful_text_widgets = [widgets.String(f'flv_tx{i}', 1, 1 + i, text) for \n i, text in enumerate(\n 'now you see me\\nnow you dont\\nso scary\\nsuch wow'.splitlines())]\nframe_top = widgets.Frame('frame_top', flavorful_text_widgets, \n 1, 1, 10, 1, 10, 4, \n widgets.Frame.Direction.VERTICAL, 8)\nplatform_text = widgets.Scroller('platform', 1, 2, 20, 1,\n widgets.Scroller.Direction.HORIZONTAL, 1,\n 'pylcddc running on ' \n + ' '.join(platform.uname()))\n\nmain_scr = screen.Screen('main', [frame_top, platform_text])\n\nc = client.Client('localhost', 13666)\nc.add_screen(main_scr)\ninput('Press any key to exit')\nc.close()\n```\n\n## Simple timed display updates and display attributes\n\n```python\nimport pylcddc.client as client\nimport pylcddc.widgets as widgets\nimport pylcddc.screen as screen\nimport pylcddc.exceptions as lcdexcept\nimport time\n\ntime_string = widgets.Scroller('time', 1, 1, 20, 2,\n widgets.Scroller.Direction.HORIZONTAL, 8,\n time.ctime())\nmain_scr = screen.Screen('main', [time_string],\n heartbeat=screen.ScreenAttributeValues.Heartbeat.OFF)\n\nc = client.Client('localhost', 13666)\nc.add_screen(main_scr)\n\nprint('pylcdd time demo\\nUse ^C to exit')\n\ntry:\n while True:\n time_string.text = time.ctime()\n c.update_screens([main_scr])\n print('updated time to: ', time.ctime())\n time.sleep(0.1)\nexcept lcdexcept.RequestError as e:\n print('LCDd refused our request', e)\nexcept lcdexcept.FatalError as e:\n print('pylcddc fatal internal error', e)\nexcept KeyboardInterrupt:\n print('exitting')\n\nc.close() # there might be exceptions from OS system call failures here\n```\n\n# Licensing \nSee ``LICENSE.txt`` for more details\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/shenghaoyang/pylcddc", "keywords": "lcdproc lcdd", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pylcddc", "package_url": "https://pypi.org/project/pylcddc/", "platform": "", "project_url": "https://pypi.org/project/pylcddc/", "project_urls": { "Bug Reports": "https://github.com/shenghaoyang/pylcddc/issues", "Homepage": "https://github.com/shenghaoyang/pylcddc", "Source": "https://github.com/shenghaoyang/pylcddc/" }, "release_url": "https://pypi.org/project/pylcddc/0.3.0/", "requires_dist": null, "requires_python": ">=3.6, < 4", "summary": "LCDproc LCDd client", "version": "0.3.0" }, "last_serial": 4185361, "releases": { "0.0.0.dev2": [ { "comment_text": "", "digests": { "md5": "4bb8b9eceeac2516ce0f6380b01b6458", "sha256": "68ca565de2a2a0add32706525871639d8a4f5b02e015c88c80704cbfa950b2da" }, "downloads": -1, "filename": "pylcddc-0.0.0.dev2.tar.gz", "has_sig": false, "md5_digest": "4bb8b9eceeac2516ce0f6380b01b6458", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, < 4", "size": 27453, "upload_time": "2018-04-18T06:24:32", "url": "https://files.pythonhosted.org/packages/45/72/4f651e0d3a6776c11da9cc904758fa0cda880cba12e6563238d94d7a05c4/pylcddc-0.0.0.dev2.tar.gz" } ], "0.0.0.dev3": [ { "comment_text": "", "digests": { "md5": "63a922fa6cc422ac9ca6e94faecc1093", "sha256": "2484b86b58e4c7eb25b6386c2814b9e46f1bf035a4bd0e21f5acbf87b749c710" }, "downloads": -1, "filename": "pylcddc-0.0.0.dev3.tar.gz", "has_sig": false, "md5_digest": "63a922fa6cc422ac9ca6e94faecc1093", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, < 4", "size": 27655, "upload_time": "2018-04-18T15:19:55", "url": "https://files.pythonhosted.org/packages/c6/43/052dd066581c367603b24e3120b2283361479f4052d404e81c5375976713/pylcddc-0.0.0.dev3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e0afe7c7b5359a524d2f7855f1236ad2", "sha256": "f65cd7d826b084f8ff914262745e51f25402fda80fbe8f51a53d2bd390e82a4c" }, "downloads": -1, "filename": "pylcddc-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e0afe7c7b5359a524d2f7855f1236ad2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, < 4", "size": 29283, "upload_time": "2018-05-19T16:33:55", "url": "https://files.pythonhosted.org/packages/d2/b1/615142b2e50037d01627124609efa032be2e31ebc2d5bfd85dbae0263e77/pylcddc-0.1.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "9e97fa079ce4af9c667452079c29a41f", "sha256": "6bc890badad51cdc767f46bfbefb775d7cb8b0595cfa3a2395bb00d49ebf2a15" }, "downloads": -1, "filename": "pylcddc-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9e97fa079ce4af9c667452079c29a41f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, < 4", "size": 29282, "upload_time": "2018-08-19T14:36:55", "url": "https://files.pythonhosted.org/packages/fc/61/02e79589e0ae86b88f290ad5f6a6d8286ea1d1674fd5872fc3666ec2f01f/pylcddc-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11e4c95a06f18285b4dbbc7fe0bdc834", "sha256": "066dd8d750ba91a1e2166c1405acba6b3e7d2168acc21216dc15a9c26e22cddb" }, "downloads": -1, "filename": "pylcddc-0.3.0.tar.gz", "has_sig": false, "md5_digest": "11e4c95a06f18285b4dbbc7fe0bdc834", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, < 4", "size": 30883, "upload_time": "2018-08-19T14:36:59", "url": "https://files.pythonhosted.org/packages/32/e0/abf5fd4d11871dc7691b1832f63bafdc8ef79bc2387ee072b2106e6c2e02/pylcddc-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9e97fa079ce4af9c667452079c29a41f", "sha256": "6bc890badad51cdc767f46bfbefb775d7cb8b0595cfa3a2395bb00d49ebf2a15" }, "downloads": -1, "filename": "pylcddc-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9e97fa079ce4af9c667452079c29a41f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6, < 4", "size": 29282, "upload_time": "2018-08-19T14:36:55", "url": "https://files.pythonhosted.org/packages/fc/61/02e79589e0ae86b88f290ad5f6a6d8286ea1d1674fd5872fc3666ec2f01f/pylcddc-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11e4c95a06f18285b4dbbc7fe0bdc834", "sha256": "066dd8d750ba91a1e2166c1405acba6b3e7d2168acc21216dc15a9c26e22cddb" }, "downloads": -1, "filename": "pylcddc-0.3.0.tar.gz", "has_sig": false, "md5_digest": "11e4c95a06f18285b4dbbc7fe0bdc834", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6, < 4", "size": 30883, "upload_time": "2018-08-19T14:36:59", "url": "https://files.pythonhosted.org/packages/32/e0/abf5fd4d11871dc7691b1832f63bafdc8ef79bc2387ee072b2106e6c2e02/pylcddc-0.3.0.tar.gz" } ] }