{ "info": { "author": "Bartosz Ko\u015bci\u00f3w", "author_email": "kosci1@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Home Automation", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "What it is\n===\n\nPack of HD44780 lcd drivers to be used with Raspberry PI. \nIt gives functions to quickly control what is displayed and how.\nSupports i2c, GPIO wiring and WiFi remote LCD. \n\nUse two modes:\n\n- direct - write to lcd asap\n- buffered - write to buffer and do flush \n\nSupports virtual lcds - ability to join few lcd into one\n\nSupports 20x4, 16x2, 40x4 and so.\n\nInclude simple game Piader that utilize vlcds - demo\n\nSee more: [koscis.wordpress.com](https://koscis.wordpress.com)\n\nContent\n===\n\n## LCDs\n\nClass direct.\nSupports displaying chars on lcd. Using direct mode, means each char is displayed \nas soon as possible.\n\nClass buffered.\nUse buffer to set what need to be displayed and flush function to draw on screen.\nIts drawing only those chars that differ from last frame.\n\nClass virtual_direct.\nAllows to set virtual lcd. Rect area on any number of lcds. Uses direct mode\n\nClass virtual_buffered.\nAllows to set virtual lcd. Rect area on any number of lcds. Uses buffered mode\n\n## Drivers\n\n###GPIO driver\nDriver that use GPIO pins as connection to lcd. Default pins:\n\n LCD : GPIO\n RS : 24\n E : 17\n E2 : None\n DB4 : 27\n DB5 : 25\n DB6 : 23\n DB7 : 22\n\nTo use 40x4 lcd set E2\n\n###I2C driver\nUse i2c bus to control lcd. Default connection:\n\n GPIO : PCF8574\n GND : A0\n GND : A1\n GND : A2\n GND : GND\n +5V : Vcc\n SDA : SDA\n SCL : SCL\n\n PCF8574 : LCD\n P4 : LCD4 (RS)\n P5 : LCD6 (E)\n P3 : LCD14 (DB7)\n P2 : LCD13 (DB6)\n P1 : LCD12 (DB5)\n P0 : LCD11 (DB4)\n\n\n###WiFi direct driver\nThis one use UDP broadcast to transmit each command/char to remote LCD\n[See here for NodeMCU remote LCD](https://github.com/bkosciow/nodemcu_boilerplate)\n[Articles](https://koscis.wordpress.com/tag/nodehd44780/) \n\n###WiFi content driver\nSends UDP message with full content to remote LCD.\n[See here for NodeMCU remote LCD](https://github.com/bkosciow/nodemcu_boilerplate)\n[Articles](https://koscis.wordpress.com/tag/nodehd44780/) \n\n\n###Null and NullEvents driver\nUsed in tests\n\n\nWiring\n===\n\n## GPIO 40x4\n\n LCD13 [VSS] ------------ GND\n LCD14 [VDD] ------------ +5V\n LCD12 [V0] ------/\\/\\/\\ [potentiometer]\n \\---- GND\n LCD11 [RS] ------------- GPIO 25\n LCD10 [R/W] ------------ GND\n LCD9 [E1] ------------- GPIO 24\n LCD15 [E2] ------------- GPIO 10\n LCD4 [DB4] ------------ GPIO 22\n LCD3 [DB5] ------------ GPIO 23\n LCD2 [DB6] ------------ GPIO 27\n LCD1 [DB7] ------------ GPIO 17\n LCD17 [A] ------/\\/\\/\\ [potentiometer]\n \\---- +5V\n LCD18 [K] -------------- GND\n\n## GPIO 20x4, 16x2\n\n LCD1 [VSS] ------------- GND\n LCD2 [VDD] ------------- +5V\n LCD3 [V0] ------/\\/\\/\\ [potentiometer]\n \\---- GND\n LCD4 [RS] -------------- GPIO 25\n LCD5 [R/W] ------------- GND\n LCD6 [E] --------------- GPIO 24\n LCD7 [DB0]\n LCD8 [DB1]\n LCD9 [DB2]\n LCD10 [DB3]\n LCD11 [DB4] ------------ GPIO 22\n LCD12 [DB5] ------------ GPIO 23\n LCD13 [DB6] ------------ GPIO 27\n LCD14 [DB7] ------------ GPIO 17\n LCD15 [A] ------/\\/\\/\\ [potentiometer]\n \\---- +5V\n LCD16 [K] -------------- GND\n\n## I2C 20x4, 16x2\n\n LCD PCF8574\n 1 -------- GND GND ----- A0 Vcc ---- +5V \n 2 -------- +5V GND ----- A1 SDA ---- SDA on RPi\n 3 --/\\/\\ [potentiometer] GND ----- A2 SCL ---- SCL on RPi\n \\--- GND LCD11 ----- P0 INT \n 4 [RS]---- P4 LCD12 ----- P1 P7\n 5 -------- GND LCD13 ----- P2 P6\n 6 [E]----- P5 LCD14 ----- P3 P5 ----- LCD6\n 7 GND ----- GND P4 ----- LCD4\n 8\n 9\n 10\n 11 [DB4]--- P0\n 12 [DB5]--- P1\n 13 [DB6]--- P2\n 14 [DB7]--- P3\n 15 --/\\/\\ [potentiometer]\n \\--- +5V\n 16 -------- GND\n\n## I2C 40x4\n\n LCD PCF8574\n 13 -------- GND GND ----- A0 Vcc ---- +5V \n 14 -------- +5V GND ----- A1 SDA ---- SDA on RPi\n 12 --/\\/\\ [potentiometer] GND ----- A2 SCL ---- SCL on RPi\n \\--- GND LCD4 ----- P0 INT \n 11 [RS]---- P4 LCD3 ----- P1 P7\n 10 -------- GND LCD2 ----- P2 P6 ----- LCD15\n 9 [E]----- P5 LCD1 ----- P3 P5 ----- LCD9\n 15 [E2] --- P6 GND ----- GND P4 ----- LCD11\n 4 [DB4]--- P0\n 3 [DB5]--- P1\n 2 [DB6]--- P2\n 1 [DB7]--- P3\n 17 --/\\/\\ [potentiometer]\n \\--- +5V\n 18 -------- GND\n\nUsage\n===\n\n## GPIO Driver\n\nSimplest way\n\n```\n l = lcd.CharLCD(20, 4, Gpio())\n```\n\nPlugin char display 20x4 on GPIO pins. Connections are default.\nCustom pins:\n\n g = Gpio()\n g.pins = {\n 'RS': 24,\n 'E': 17,\n 'E2': None,\n 'DB4': 27,\n 'DB5': 25,\n 'DB6': 23,\n 'DB7': 22\n }\n l = lcd.CharLCD(20, 4, g)\n\n\nPlug 40x4 by GPIO:\n\n g = Gpio()\n g.pins = {\n 'RS': 24,\n 'E': 17,\n 'E2': 10,\n 'DB4': 27,\n 'DB5': 25,\n 'DB6': 23,\n 'DB7': 22\n }\n l = lcd.CharLCD(40, 4, g)\n\n## I2C Driver\n\n```\n l = lcd.CharLCD(16, 2, I2C(0x20, 1))\n```\n\nChar display 16x2 on i2c @ 0x20 and bus 1.\nTo change pins:\n\n i2c = I2C(0x20, 1)\n i2c.pins = {\n 'RS': 4,\n 'E': 5,\n 'DB4': 0,\n 'DB5': 1,\n 'DB6': 2,\n 'DB7': 3\n }\n l = lcd.CharLCD(16, 2, i2c)\n\n\nDirect Class\n===\n\nFully working demo (more in demos directory):\n\n #!/usr/bin/python\n # -*- coding: utf-8 -*-\n\n \"\"\"test script for direct lcd input\"\"\"\n\n __author__ = 'Bartosz Ko\u015bci\u00f3w'\n\n import RPi.GPIO as GPIO #pylint: disable=I0011,F0401\n from charlcd import direct as lcd\n from charlcd.drivers.gpio import Gpio\n from charlcd.drivers.i2c import I2C #pylint: disable=I0011,F0401\n\n GPIO.setmode(GPIO.BCM)\n\n def test2():\n \"\"\"demo - 20x4 by gpio\"\"\"\n lcd_2 = lcd.CharLCD(20, 4, Gpio())\n lcd_2.init()\n lcd_2.write('- Blarg !')\n lcd_2.write('- Grarg !', 0, 1)\n lcd_2.set_xy(0, 2)\n lcd_2.write('- ALIVE !!!!')\n lcd_2.stream('1234567890qwertyuiopasdfghjkl')\n\n test2()\n\n### Functions\n\n`CharLCD(width, height, driver, cursor_visible=1, cursor_blink=1)`\n\n`write(self, string, pos_x=None, pos_y=None)` - print string on lcd\n\n`set_xy(pos_x, pos_y)` - move cursor to position\n\n`stream(string)` - stream string, breaks on line ends and after reaching end of display starts from top\n\n\nBuffered Class\n===\n\nFully working demo (more in demos directory):\n\n #!/usr/bin/python\n # -*- coding: utf-8 -*-\n\n \"\"\"test script for buffered lcd\"\"\"\n\n __author__ = 'Bartosz Ko\u015bci\u00f3w'\n\n import RPi.GPIO as GPIO #pylint: disable=I0011,F0401\n from charlcd import buffered as lcd\n from charlcd.drivers.gpio import Gpio\n from charlcd.drivers.i2c import I2C\n\n GPIO.setmode(GPIO.BCM)\n\n def test3():\n \"\"\"demo 16x2\"\"\"\n lcd_1 = lcd.CharLCD(16, 2, I2C(0x20, 1), 0, 0)\n lcd_1.init()\n lcd_1.set_xy(10, 0)\n lcd_1.stream(\"1234567890qwertyuiopasdfghjkl\")\n lcd_1.flush()\n\n\n test3()\n\n\n###Functions\n\n`CharLCD(width, height, driver, cursor_visible=1, cursor_blink=1)`\n\n`write(content, pos_x=None, pos_y=None)` - writes content into buffer at position(x,y) or current\n\n`set_xy(pos_x, pos_y)` - set cursor position\n\n`get_xy()` - get cursor position\n\n`buffer_clear()` - clears buffer\n\n`flush()` - flush buffer to display\n\n\nShared functions\n===\n\n`get_width()` - display width\n\n`get_height()` - display height\n\n`get_display_mode()` - return direct or buffered\n\n`shutdown()` - calls driver shutdown\n\n\nVirtual Direct\n===\n\n #!/usr/bin/python\n # -*- coding: utf-8 -*-\n\n \"\"\"test script for virtual direct lcd\"\"\"\n\n __author__ = 'Bartosz Ko\u015bci\u00f3w'\n\n import RPi.GPIO as GPIO #pylint: disable=I0011,F0401\n from charlcd import direct as lcd\n from charlcd.drivers.gpio import Gpio\n from charlcd.drivers.i2c import I2C #pylint: disable=I0011,F0401\n from charlcd import virtual_direct as vlcd\n\n GPIO.setmode(GPIO.BCM)\n\n\n def test2():\n \"\"\"demo: 16x2 + 20x4 = 36x4 left, right\"\"\"\n lcd_1 = lcd.CharLCD(16, 2, I2C(0x20, 1))\n lcd_2 = lcd.CharLCD(20, 4, Gpio(), 0, 0)\n lcd_1.init()\n lcd_2.init()\n vlcd_1 = vlcd.CharLCD(36, 4)\n vlcd_1.add_display(0, 0, lcd_2)\n vlcd_1.add_display(20, 0, lcd_1)\n vlcd_1.write('test me 123456789qwertyuiopasdfghjkl12')\n\n test2()\n\n\nVirtual Buffered\n===\n\n #!/usr/bin/python\n # -*- coding: utf-8 -*-\n\n \"\"\"test script for virtual buffered lcd\"\"\"\n\n __author__ = 'Bartosz Ko\u015bci\u00f3w'\n\n import RPi.GPIO as GPIO #pylint: disable=I0011,F0401\n from charlcd import buffered as lcd\n from charlcd.drivers.gpio import Gpio\n from charlcd.drivers.i2c import I2C\n from charlcd import virtual_buffered as vlcd\n\n GPIO.setmode(GPIO.BCM)\n\n\n def test1():\n \"\"\"demo: 16x2 + 20x4 = 20x6\"\"\"\n lcd_1 = lcd.CharLCD(16, 2, I2C(0x20, 1))\n lcd_2 = lcd.CharLCD(20, 4, Gpio(), 0, 0)\n\n vlcd_1 = vlcd.CharLCD(20, 6)\n vlcd_1.add_display(0, 0, lcd_2)\n vlcd_1.add_display(0, 4, lcd_1)\n vlcd_1.init()\n\n vlcd_1.write('First line')\n vlcd_1.write('Second line', 0, 1)\n vlcd_1.write('Fifth Line', 0, 4)\n\n vlcd_1.set_xy(4, 2)\n vlcd_1.write('third line')\n\n vlcd_1.flush()\n\n test1()\n\n\nFunctions\n===\n`CharLCD(width, height, driver, cursor_visible=1, cursor_blink=1)` - initialize, lcd size, cursor options\n\n`write(self, string, pos_x=None, pos_y=None)` - print string on lcd\n\n`set_xy(pos_x, pos_y)` - move cursor to position\n\n`get_xy()` - get cursor position\n\n`stream(string)` - stream string, breaks on line ends and after reaching end of display starts from top\n\n`buffer_clear()` - clears buffer (only buffered)\n\n`flush()` - flush buffer to display (only buffered)\n\n`get_width()` - display width\n\n`get_height()` - display height\n\n`get_display_mode()` - return direct or buffered\n\n`shutdown()` - calls driver shutdown\n\nHandler\n===\nHandler for message_listener package. Supports three events: lcd.cmd, lcd.char and lcd.content.\n\n\nDemos\n===\nCheck charlcd/demos directory\n\nPiader\n===\n\nThis game is a simple demo. It show how to utilize any lcd to display a game.\n\nIt also shows how to generate a code with 2 fps :)\n\nControlls:\na - left,\nd - right,\nspace - fire\n\n## How to run:\n\nFirst lets see a configuration with two lcds. One 20x4 and second 16x2. \n>From this two vlcds are made. One 16x6 for game and 4x4 for score. \n\n #!/usr/bin/python\n # -*- coding: utf-8 -*-\n\n \"\"\"Game launcher\"\"\"\n\n __author__ = 'Bartosz Ko\u015bci\u00f3w'\n\n import sys\n sys.path.append(\"../\")\n import RPi.GPIO as GPIO #pylint: disable=I0011,F0401\n from charlcd import buffered\n from charlcd.drivers.gpio import Gpio\n from charlcd.drivers.i2c import I2C\n from charlcd import virtual_buffered\n import piader_1_1.game as game\n\n GPIO.setmode(GPIO.BCM)\n\n\n def main():\n \"\"\"set lcds and start game\"\"\"\n lcd_two = buffered.CharLCD(16, 2, I2C(0x20, 1), 0, 0)\n lcd_one = buffered.CharLCD(20, 4, Gpio(), 0, 0)\n\n vlcd_main = virtual_buffered.CharLCD(16, 6)\n vlcd_main.add_display(0, 0, lcd_one, 4, 0)\n vlcd_main.add_display(0, 4, lcd_two)\n vlcd_main.init()\n\n vlcd_support = virtual_buffered.CharLCD(4, 4)\n vlcd_support.add_display(0, 0, lcd_one)\n vlcd_support.init()\n\n my_game = game.Piader([vlcd_main, vlcd_support])\n my_game.game()\n\n\n main()\n\n\nUse 40x4 as game lcd:\n\n drv = I2C(0x3a, 1)\n drv.pins['E2'] = 6\n lcd_three = buffered.CharLCD(40, 4, drv, 0, 0)\n lcd_three.init()\n\n my_game = game.Piader([lcd_three, None])\n\nUse 20x4 as game lcd:\n\n lcd_one.init()\n my_game = game.Piader([lcd_one, None])\n\n\nClass diagram\n===\n\n buffered.CharLCD --> lcd.CharLCD\n --> buffered_interface.Buffered\n\n direct.CharLCD --> lcd.CharLCD\n --> direct_interface.Direct\n\n virtual_buffered.CharLCD --> lcd.CharLCDVirtual --> lcd.CharLCD\n --> buffered_interface.Buffered\n\n virtual_direct.CharLCD --> lcd.CharLCDVirtual --> lcd.CharLCD\n --> direct.Direct\n\n gpio.Gpio --\\\n i2c.I2C ---> base.BaseDriver\n null.Null --/\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/kosci/charlcd.git", "keywords": "charlcd,raspberry pi,hd44780,44780,hitachi,hd 44780,lcd,char lcd", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "CharLCD", "package_url": "https://pypi.org/project/CharLCD/", "platform": "", "project_url": "https://pypi.org/project/CharLCD/", "project_urls": { "Homepage": "https://bitbucket.org/kosci/charlcd.git" }, "release_url": "https://pypi.org/project/CharLCD/0.5.1/", "requires_dist": null, "requires_python": "", "summary": "charlcd is a handler for char lcds Hitachi HD44780 @ Raspberry Pi.", "version": "0.5.1" }, "last_serial": 3009711, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "7ff599e63df57969a93a179dfb461cc4", "sha256": "c3a98aa4695c25ec93596b75f191d7d364ad461446c2d5d159c240af14bd8e4e" }, "downloads": -1, "filename": "CharLCD-0.2.0.tar.gz", "has_sig": false, "md5_digest": "7ff599e63df57969a93a179dfb461cc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20746, "upload_time": "2016-04-14T17:42:10", "url": "https://files.pythonhosted.org/packages/a5/4e/218e16aef1311d91ebd9c9281c07090c960883d152b0b14bc32a415b21cd/CharLCD-0.2.0.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "0d1a5747ada1863eb8c61acae3a85a07", "sha256": "5361c29af9fa6f0e56273f560545f92ce15c312071fcf42b4d84c1548fe9442b" }, "downloads": -1, "filename": "charlcd-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d1a5747ada1863eb8c61acae3a85a07", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 33215, "upload_time": "2016-05-07T08:59:39", "url": "https://files.pythonhosted.org/packages/f6/ab/c035b8d9d12f0a66efd9c76809feefda80386f277f6d80e0feca88bd48f1/charlcd-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e35c630cbcc4f879d68fd38837952c2d", "sha256": "c81a7934072293007bd8caf7149aeb1f18ae682e87a533eef80b56310f80c7e1" }, "downloads": -1, "filename": "charlcd-0.2.3.tar.gz", "has_sig": false, "md5_digest": "e35c630cbcc4f879d68fd38837952c2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22364, "upload_time": "2016-05-07T08:59:27", "url": "https://files.pythonhosted.org/packages/03/fb/f6439aa801ec062a2efccfef9a917484646fafcf8e27f03cfea2ed2a11e6/charlcd-0.2.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b22733fa22538d75724b93831f5a161e", "sha256": "c89115923493d24349a523097794e297f951a7e567de0b2cfd4624fe796025a4" }, "downloads": -1, "filename": "charlcd-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b22733fa22538d75724b93831f5a161e", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 37888, "upload_time": "2017-01-15T19:56:00", "url": "https://files.pythonhosted.org/packages/9c/62/0176d1d20b9a952700a84ff3652e6c409d677a4af288365b205ce739512a/charlcd-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13326a1e21ef94bf302a6bb88f323fe4", "sha256": "acf5774e14304cd8809f629a14d357d057a8923846ce80c9a1519f7e49cbd660" }, "downloads": -1, "filename": "charlcd-0.4.0.tar.gz", "has_sig": false, "md5_digest": "13326a1e21ef94bf302a6bb88f323fe4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24306, "upload_time": "2017-01-15T19:55:20", "url": "https://files.pythonhosted.org/packages/dc/43/6e0f923fbe309ff47c5f0b69e81ef56f959172cfb0560c1ee09c9a31bcfe/charlcd-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d29e3483481faa257ec62a228fcbcf0d", "sha256": "78d46115ebff42272d244a0c3a85b6ccd336a15e59e7fc4d400714ac4ff50825" }, "downloads": -1, "filename": "charlcd-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d29e3483481faa257ec62a228fcbcf0d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39413, "upload_time": "2017-07-03T16:56:17", "url": "https://files.pythonhosted.org/packages/7d/65/3971d5d50a832bc1ca7fc2d8bfc82f3291ef2718a2a27df893544bb01a61/charlcd-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01f022d449b6e3aebd58fe17c0718898", "sha256": "dd65639954192cd6ad6b0646c069bd6da514fa953c1ba15283366fbb8916ed9d" }, "downloads": -1, "filename": "charlcd-0.5.0.tar.gz", "has_sig": false, "md5_digest": "01f022d449b6e3aebd58fe17c0718898", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24997, "upload_time": "2017-07-03T16:56:19", "url": "https://files.pythonhosted.org/packages/c9/9e/2136a2e16b657f626712502fbfb3161a3a2e57a732d523a553722cbfa087/charlcd-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "0623900a707d6270f59f05967e8450fa", "sha256": "592f7074ccc304b7f2cc4c0c1076c80ed5b0643fbf9848c67d3bb92e63b21f56" }, "downloads": -1, "filename": "charlcd-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0623900a707d6270f59f05967e8450fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39472, "upload_time": "2017-07-09T09:22:08", "url": "https://files.pythonhosted.org/packages/99/48/be58f5f50dbf7f7fe88993174b77a2d464812438ae099663ae72754885e4/charlcd-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07b2cf2b94492ce865cfc7f06d820ad4", "sha256": "ec534075b0e89513fef757693db50c21aa6bc18944478afabf2ca05a21d1ca87" }, "downloads": -1, "filename": "charlcd-0.5.1.tar.gz", "has_sig": false, "md5_digest": "07b2cf2b94492ce865cfc7f06d820ad4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24159, "upload_time": "2017-07-09T09:22:09", "url": "https://files.pythonhosted.org/packages/48/d8/398475e6e17e1bf6899656278265c342c1ead17227ed99b77c5ee25b53e6/charlcd-0.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0623900a707d6270f59f05967e8450fa", "sha256": "592f7074ccc304b7f2cc4c0c1076c80ed5b0643fbf9848c67d3bb92e63b21f56" }, "downloads": -1, "filename": "charlcd-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0623900a707d6270f59f05967e8450fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39472, "upload_time": "2017-07-09T09:22:08", "url": "https://files.pythonhosted.org/packages/99/48/be58f5f50dbf7f7fe88993174b77a2d464812438ae099663ae72754885e4/charlcd-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07b2cf2b94492ce865cfc7f06d820ad4", "sha256": "ec534075b0e89513fef757693db50c21aa6bc18944478afabf2ca05a21d1ca87" }, "downloads": -1, "filename": "charlcd-0.5.1.tar.gz", "has_sig": false, "md5_digest": "07b2cf2b94492ce865cfc7f06d820ad4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24159, "upload_time": "2017-07-09T09:22:09", "url": "https://files.pythonhosted.org/packages/48/d8/398475e6e17e1bf6899656278265c342c1ead17227ed99b77c5ee25b53e6/charlcd-0.5.1.tar.gz" } ] }