{ "info": { "author": "Daniel Gon\u00e7alves", "author_email": "daniel@base4.com.br", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Office/Business :: Financial :: Point-Of-Sale", "Topic :: Printing", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "PyESCPOS\n========\n\n.. image:: https://img.shields.io/pypi/status/pyescpos.svg\n :target: https://pypi.python.org/pypi/pyescpos/\n :alt: Development status\n\n.. image:: https://img.shields.io/pypi/pyversions/pyescpos.svg\n :target: https://pypi.python.org/pypi/pyescpos/\n :alt: Supported Python versions\n\n.. image:: https://img.shields.io/pypi/l/pyescpos.svg\n :target: https://pypi.python.org/pypi/pyescpos/\n :alt: License\n\n.. image:: https://img.shields.io/pypi/v/pyescpos.svg\n :target: https://pypi.python.org/pypi/pyescpos/\n :alt: Latest version\n\n-------\n\nA Python support for Epson |copy| ESC/POS |reg| compatible printers. Read more\nat `Epson ESCPOS FAQ`_ (PDF document).\n\nThis project is inspired on Manuel F. Martinez work for `python-escpos`_\nimplementation, among other projects, whose specific bits of work (available\nhere on Github and many other open-source repositories) has helped so much.\n\nThe ESC/POS |reg| is a standard that every manufacturer tend to modify to suit\ntheir (even already implemented) needs. Indeed, there is no standard but\nsomething awkward, an illusion of a standard. On the surface, one can say\nthat it's pretty much the same, but when you look just a little bit more deeper,\nyou quickly realize that they are almost completely different, even between\nmodels belonging to the same manufacturer.\n\nThis project aims to make viable the use, at the *point-of-sale* (POS), of\ndifferent printers (the most common ones, at least) that are minimally based on\nESC/POS |reg| standard, without need to modify the client application code. To\nachieve this, it is necessary to set a lowest common denominator between\nneeded features and provide implementations that seek to meet this minimum.\n\n\nCurrent Implementations\n=======================\n\nCurrent implementations was tested against following hardware:\n\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| Manufacturer | Models | Firmware Versions | Notes |\n+=========================+===================+===================+=========================================+\n| `Bematech S/A`_ | MP-4200 TH | 1.3, 1.6 | |\n| | | | |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Epson`_ | TM-T20 | 1.14 | |\n| | | | |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Elgin`_ | Elgin i9 | 1.03.20, | |\n| | | 1.03.24, | |\n| | | 1.03.31 | |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Elgin`_ | Elgin i7 | 1.00.08 | |\n| | | | |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Elgin`_ | Elgin RM-22 | 1.00.09 | Elgin RM-22 portable thermal mini |\n| | | | printer |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Nitere`_ | NPDV-1020 | - | Multifunction Terminal model TMF-101/IG |\n| | | | (an alias for CB55-C model) |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| Unknown OEM | CB55-C | 1.3.5 | Embedded in `Nitere`_ NPDV-1020 (model |\n| | | | TMF-101/IG) |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Urmet Daruma`_ | DR700 L/H/M and | 02.51.00, | |\n| | DR700 L-e/H-e | 01.20.00, | |\n| | | 01.21.00 | |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n| `Urmet Daruma`_ | DR800 L/H | 03.13.01 | |\n| | | | |\n| | | | |\n+-------------------------+-------------------+-------------------+-----------------------------------------+\n\nYou can get a list of all available implementations with the following snippet:\n\n.. sourcecode:: python\n\n from escpos import helpers\n\n for impl in helpers.find_implementations(sort_by='model.name'):\n print('{:.<25} {}'.format(impl.model.name, impl.fqname))\n\nWhich produces an output similar to::\n\n Bematech MP-4200 TH...... escpos.impl.bematech.MP4200TH\n CB55-C................... escpos.impl.unknown.CB55C\n Daruma DR700............. escpos.impl.daruma.DR700\n Daruma DR800............. escpos.impl.daruma.DR800\n Elgin I7................. escpos.impl.elgin.ElginI7\n Elgin I9................. escpos.impl.elgin.ElginI9\n Elgin RM-22.............. escpos.impl.elgin.ElginRM22\n Epson TM-T20............. escpos.impl.epson.TMT20\n Generic Daruma........... escpos.impl.daruma.DarumaGeneric\n Generic ESC/POS.......... escpos.impl.epson.GenericESCPOS\n Generic Elgin............ escpos.impl.elgin.ElginGeneric\n Nitere NPDV-1020......... escpos.impl.nitere.NitereNPDV1020\n\n\nUsage Examples\n==============\n\nSerial RS232 Example\n--------------------\n\nSerial communications support requires `PySerial`_ version 2.7 or later.\n\n.. sourcecode:: python\n\n from escpos import SerialConnection\n from escpos.impl.epson import GenericESCPOS\n\n # assumes RTS/CTS for 'ttyS5' and infers an instance of RTSCTSConnection\n conn = SerialConnection.create('/dev/ttyS5:9600,8,1,N')\n printer = GenericESCPOS(conn)\n printer.init()\n printer.text('Hello World!')\n\n\nNetwork TCP/IP Example\n----------------------\n\nYou can connect to your printer through network TCP/IP interface.\n\n.. sourcecode:: python\n\n from escpos import NetworkConnection\n from escpos.impl.epson import GenericESCPOS\n\n conn = NetworkConnection.create('10.0.0.101:9100')\n printer = GenericESCPOS(conn)\n printer.init()\n printer.text('Hello World!')\n\n\nBluetooth Example\n-----------------\n\nYou can connect to your printer through a bluetooth interface (only via RFCOMM).\nBluetooth support requires `PyBluez`_ version 0.22.\n\n.. sourcecode:: python\n\n from escpos import BluetoothConnection\n from escpos.impl.epson import GenericESCPOS\n\n # uses SPD (service port discovery) services to find which port to connect to\n conn = BluetoothConnection.create('00:01:02:03:04:05')\n printer = GenericESCPOS(conn)\n printer.init()\n printer.text('Hello World!')\n\nIf you know in which port you can connect beforehand, just pass its number after\ndevice address using a forward slash, for example ``00:01:02:03:04:05/4``, will\nconnect to port ``4`` on ``00:01:02:03:04:05`` address.\n\n\nFile Print Example\n------------------\n\nThis printer \u201cprints\u201d just into a file-handle. Especially on *nix-systems this\ncomes very handy. A common use case is when you hava parallel port printer or\nany other printer that are directly attached to the filesystem. Note that you\nmay want to stay away from using USB-to- Parallel-Adapters since they are\nextremely unreliable and produce many arbitrary errors.\n\n.. sourcecode:: python\n\n from escpos import FileConnection\n from escpos.impl.elgin import ElginI9\n\n conn = FileConnection('/dev/usb/lp1')\n printer = ElginI9(conn)\n printer.init()\n printer.text('Hello World!')\n print(printer.device.output)\n\n\nDummy Print Example\n-------------------\n\nThe Dummy-printer is mainly for testing- and debugging-purposes. It stores all\nof the \u201coutput\u201d as raw ESC/POS in a string and returns that.\n\n.. sourcecode:: python\n\n from escpos import DummyConnection\n from escpos.impl.epson import GenericESCPOS\n\n conn = DummyConnection()\n printer = GenericESCPOS(conn)\n printer.init()\n printer.text('Hello World!')\n print(printer.device.output)\n\n\nPrinting Barcodes\n-----------------\n\nThere is a default set of parameters for printing barcodes. Each ESC/POS\nimplementation will take care of the details and try their best to print your\nbarcode as you asked.\n\n.. sourcecode:: python\n\n from escpos import barcode\n from escpos import SerialConnection\n from escpos.impl.epson import GenericESCPOS\n\n conn = SerialConnection.create('COM1:9600,8,1,N')\n printer = GenericESCPOS(conn)\n printer.init()\n printer.code128('0123456789',\n barcode_height=96, # ~12mm (~1/2\")\n barcode_width=barcode.BARCODE_DOUBLE_WIDTH,\n barcode_hri=barcode.BARCODE_HRI_BOTTOM)\n\n printer.lf()\n\n printer.ean13('4007817525074',\n barcode_height=120, # ~15mm (~9/16\"),\n barcode_width=barcode.BARCODE_NORMAL_WIDTH,\n barcode_hri=barcode.BARCODE_HRI_TOP)\n\n printer.cut()\n\nThe barcode data should be complete including check digits and any other payload\ndata required that makes that data valid for the symbology you're dealing with.\nThus, if you need to print an EAN-13 barcode, for example, you need to provide\nall thirteen digits.\n\n\nConfiguring Resilient Connections\n---------------------------------\n\nNetwork (TCP/IP) and Bluetooth (RFCOMM) connections provided by PyESCPOS both\nuse a simple `exponential backoff`_ algorithm to implement a (more) resilient\nconnection to the device. Your application or your users can configure *backoff*\nretry parameters through a well-known INI-like file format:\n\n.. sourcecode:: ini\n\n [retry]\n max_tries = 3\n delay = 3\n factor = 2\n\nWhose parameters are:\n\n* ``max_tries`` (integer ``> 0``) Number of tries before give up;\n* ``delay`` (integer ``> 0``) Delay between retries (in seconds);\n* ``factor`` (integer ``> 1``) Multiply factor in which delay will be increased\n for the next retry.\n\nNormally that file lives in ``~/.escpos/config.cfg`` but you can determine\nwhere you want to put this file. For that you must call ``config.configure``\nfunction indicating full path to the configuration file, for example:\n\n.. sourcecode:: python\n\n from escpos import config\n config.configure(filename='/path/to/config.cfg')\n\nYour application must call ``config.configure`` before importing anything else.\n\n\nMore Examples\n-------------\n\nEventually you may find more examples in the `PyESCPOS wiki`_ pages.\n\n\nDisclaimer\n==========\n\nIt is important that you read this **disclaimer**.\n\n None of the vendors cited in this project agree or endorse any of the\n patterns or implementations. Its names are used only to maintain context.\n\n..\n Sphinx Documentation: Substitutions at\n http://sphinx-doc.org/rest.html#substitutions\n Codes copied from reStructuredText Standard Definition Files at\n http://docutils.sourceforge.net/docutils/parsers/rst/include/isonum.txt\n\n.. |copy| unicode:: U+00A9 .. COPYRIGHT SIGN\n :ltrim:\n\n.. |reg| unicode:: U+00AE .. REGISTERED SIGN\n :ltrim:\n\n.. _`PyESCPOS wiki`: https://github.com/base4sistemas/pyescpos/wiki\n.. _`Epson ESCPOS FAQ`: http://content.epson.de/fileadmin/content/files/RSD/downloads/escpos.pdf\n.. _`python-escpos`: https://github.com/manpaz/python-escpos\n.. _`PySerial`: http://pyserial.sourceforge.net/\n.. _`PyBluez`: http://karulis.github.io/pybluez/\n.. _`Epson`: http://www.epson.com/\n.. _`Elgin`: http://www.elgin.com.br/\n.. _`Nitere`: http://www.nitere.com.br/\n.. _`Bematech S/A`: http://www.bematechus.com/\n.. _`Urmet Daruma`: http://daruma.com.br/\n.. _`exponential backoff`: https://en.wikipedia.org/wiki/Exponential_backoff\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/base4sistemas/pyescpos/", "keywords": "", "license": "Apache Software License", "maintainer": "", "maintainer_email": "", "name": "PyESCPOS", "package_url": "https://pypi.org/project/PyESCPOS/", "platform": "any", "project_url": "https://pypi.org/project/PyESCPOS/", "project_urls": { "Homepage": "http://github.com/base4sistemas/pyescpos/" }, "release_url": "https://pypi.org/project/PyESCPOS/0.2/", "requires_dist": [ "six (==1.10.0)", "pyserial (==2.7)", "PyBluez (==0.22)" ], "requires_python": "", "summary": "Support for Epson ESC/POS printer command system.", "version": "0.2" }, "last_serial": 4590230, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "612d857affb1e654ce01fa57589d5fe3", "sha256": "1560618c1ef5165941bf5f03a8f0069229fa20ed6d0862c29042744b7e9d4bb2" }, "downloads": -1, "filename": "PyESCPOS-0.0.10.tar.gz", "has_sig": false, "md5_digest": "612d857affb1e654ce01fa57589d5fe3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25074, "upload_time": "2017-01-25T19:40:57", "url": "https://files.pythonhosted.org/packages/cf/4c/fff71ec13ded3a4960406dc8f6c532f73002e66b18725a9ebc6cff41295c/PyESCPOS-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "26fb83ede57847f18462f6913611a4d6", "sha256": "5b342a8c6cb3a4b5643a772ded57b758f0c0580b0d203dbd521eeec3d819dbba" }, "downloads": -1, "filename": "PyESCPOS-0.0.11.tar.gz", "has_sig": false, "md5_digest": "26fb83ede57847f18462f6913611a4d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27620, "upload_time": "2017-02-04T13:04:04", "url": "https://files.pythonhosted.org/packages/c1/3c/682a8ef660226a36acff70d5cd2859814d036e59c1123f2bce17af5922c5/PyESCPOS-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "8c63d1cf176bb2246a46920d122a504d", "sha256": "deb09ca75d19a5b253a0d23c7efe106928cc669059f87fe9d5c71787064325a7" }, "downloads": -1, "filename": "PyESCPOS-0.0.12.tar.gz", "has_sig": false, "md5_digest": "8c63d1cf176bb2246a46920d122a504d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27768, "upload_time": "2017-02-04T13:23:27", "url": "https://files.pythonhosted.org/packages/a4/6e/9d3985a61a390d7bcaa5a941632f19d343043905f2be0942fb31c9d9be32/PyESCPOS-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "9ad71b6f1805f77691ffd0b3d65ae73d", "sha256": "414811947d4a2bee2c38da78a47b9db29eb91dc7e7dcd7b6b550c213d2329945" }, "downloads": -1, "filename": "PyESCPOS-0.0.13-py2-none-any.whl", "has_sig": false, "md5_digest": "9ad71b6f1805f77691ffd0b3d65ae73d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 38227, "upload_time": "2017-12-14T12:51:27", "url": "https://files.pythonhosted.org/packages/db/79/d41ee5c56dee2939d401f5a09058c3edf2d44baec2a61b73f0ad0d5b0bea/PyESCPOS-0.0.13-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "663cebc9d80338899953d68c6cba6abb", "sha256": "98f3ea6dc9b57888a6fc04f4f47b38766a018de9729ee2f5b90a3ca62511f2ad" }, "downloads": -1, "filename": "PyESCPOS-0.0.13.tar.gz", "has_sig": false, "md5_digest": "663cebc9d80338899953d68c6cba6abb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29799, "upload_time": "2017-12-14T12:51:28", "url": "https://files.pythonhosted.org/packages/30/a0/ba646c276fb1e937be45f6d9ad7ef1ecc1ea992c4c3337594b2a831a8648/PyESCPOS-0.0.13.tar.gz" } ], "0.0.3": [], "0.0.4": [ { "comment_text": "", "digests": { "md5": "4dedbf26c5f9a4ef82d270bb417a9b3f", "sha256": "b446b76e5eceb0dd285b954f885bb48566a60b8e72fb98409dc4d8bb3ed3bada" }, "downloads": -1, "filename": "PyESCPOS-0.0.4.tar.gz", "has_sig": false, "md5_digest": "4dedbf26c5f9a4ef82d270bb417a9b3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19875, "upload_time": "2015-05-02T16:34:15", "url": "https://files.pythonhosted.org/packages/ec/5e/8ab634d0a90bf7bdfcdb1d1c6d6deb78bac772944f96f7f63f6c460b7a01/PyESCPOS-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "cdb329c3e95f8f227eb78cb379f5d149", "sha256": "a33cb15aab6485dc217bf3fd0b2988309637c69160dd3e40705ef5b5a111ddbc" }, "downloads": -1, "filename": "PyESCPOS-0.0.5.tar.gz", "has_sig": false, "md5_digest": "cdb329c3e95f8f227eb78cb379f5d149", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20399, "upload_time": "2015-07-18T21:27:01", "url": "https://files.pythonhosted.org/packages/61/72/c80339d53d11efda3a65153b315c20a83637da5e05d9ed62acd7b63e8be7/PyESCPOS-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "18dcdf0f8aafd1ed74bd1c831305b4d1", "sha256": "905a45aff9588ddb27eadf7ff29aa66d1a3a1306825dcf1320a65c35ced6940c" }, "downloads": -1, "filename": "PyESCPOS-0.0.6.tar.gz", "has_sig": false, "md5_digest": "18dcdf0f8aafd1ed74bd1c831305b4d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20324, "upload_time": "2015-07-20T20:13:38", "url": "https://files.pythonhosted.org/packages/b1/6c/10a907c8c361a4edde74bfdaf7004edab476033bc26a3f18cea7c4893bce/PyESCPOS-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "f3ad5fbeef8c012ed624a4ef90885b10", "sha256": "1f2dc642129aedff275a97a574e21082d8388df97f3ecea6a4e14f814e1291fd" }, "downloads": -1, "filename": "PyESCPOS-0.0.7.tar.gz", "has_sig": false, "md5_digest": "f3ad5fbeef8c012ed624a4ef90885b10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23758, "upload_time": "2015-08-19T19:53:55", "url": "https://files.pythonhosted.org/packages/e0/68/92520fb9887dee5010532571ec239592a33abf286f74ad2609c8ba169d3e/PyESCPOS-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "a53703e28d03aa839675097bdd95a729", "sha256": "8e4ff4fe0609168d16c716e060e6066964533fd926d5854737836b06f2b8b3e6" }, "downloads": -1, "filename": "PyESCPOS-0.0.8.tar.gz", "has_sig": false, "md5_digest": "a53703e28d03aa839675097bdd95a729", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24069, "upload_time": "2015-11-11T16:47:09", "url": "https://files.pythonhosted.org/packages/a4/97/d3e60c315097193369a11ed235b5983d7a29c48071651f9eb341829ac645/PyESCPOS-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "5be2deac0db53cec1ea43218087dffa4", "sha256": "d6a369b33d86b0901f812588dbb0a5239e7ef05895b25d9d56add0f5f35acff4" }, "downloads": -1, "filename": "PyESCPOS-0.0.9.tar.gz", "has_sig": false, "md5_digest": "5be2deac0db53cec1ea43218087dffa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23585, "upload_time": "2016-08-22T02:30:42", "url": "https://files.pythonhosted.org/packages/85/47/3798ac07640da32d29efd6d855a1ea01090ff1ae877eb054aaf9ffaa164d/PyESCPOS-0.0.9.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "b77a9a31ec087562d8e72235bc1cd083", "sha256": "650f4b79bf1e51448fa4c0c6344c200365398c0b6137a44f1ad3c37eeab2e9d7" }, "downloads": -1, "filename": "PyESCPOS-0.1.tar.gz", "has_sig": false, "md5_digest": "b77a9a31ec087562d8e72235bc1cd083", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34637, "upload_time": "2018-03-08T18:18:31", "url": "https://files.pythonhosted.org/packages/e9/a0/2cbea3483b502b5ee6f6192ae0289995c99ede6139e9a0efd36a3f3336ab/PyESCPOS-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "db9865430e715bfc6bc6becd08463c5b", "sha256": "b37d0567da8e13f953e34f96a3fb4e06f3182e8c26e88cfbd96c6120ea6744e2" }, "downloads": -1, "filename": "PyESCPOS-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "db9865430e715bfc6bc6becd08463c5b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 45372, "upload_time": "2018-12-12T13:37:46", "url": "https://files.pythonhosted.org/packages/2a/45/e5b3a353b64fd55ab4d32662412b7a82374d7c2300d641102133205d33ce/PyESCPOS-0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26f8c8286a924a2e5c89adc99e266b61", "sha256": "cc80f9c91e2d7a802d39c9f2823ab6a7d12d01f6840c79671a77a422c1efa569" }, "downloads": -1, "filename": "PyESCPOS-0.2.tar.gz", "has_sig": false, "md5_digest": "26f8c8286a924a2e5c89adc99e266b61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34418, "upload_time": "2018-12-12T13:37:48", "url": "https://files.pythonhosted.org/packages/98/d3/f22866a1b15fae624fe4b8d23278359682755ab645d3d87b2b3f24b480ae/PyESCPOS-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "db9865430e715bfc6bc6becd08463c5b", "sha256": "b37d0567da8e13f953e34f96a3fb4e06f3182e8c26e88cfbd96c6120ea6744e2" }, "downloads": -1, "filename": "PyESCPOS-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "db9865430e715bfc6bc6becd08463c5b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 45372, "upload_time": "2018-12-12T13:37:46", "url": "https://files.pythonhosted.org/packages/2a/45/e5b3a353b64fd55ab4d32662412b7a82374d7c2300d641102133205d33ce/PyESCPOS-0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26f8c8286a924a2e5c89adc99e266b61", "sha256": "cc80f9c91e2d7a802d39c9f2823ab6a7d12d01f6840c79671a77a422c1efa569" }, "downloads": -1, "filename": "PyESCPOS-0.2.tar.gz", "has_sig": false, "md5_digest": "26f8c8286a924a2e5c89adc99e266b61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34418, "upload_time": "2018-12-12T13:37:48", "url": "https://files.pythonhosted.org/packages/98/d3/f22866a1b15fae624fe4b8d23278359682755ab645d3d87b2b3f24b480ae/PyESCPOS-0.2.tar.gz" } ] }