{ "info": { "author": "Wijnand Modderman, Jeff Quast, Kris Hardy", "author_email": "maze@pyth0n.org", "bugtrack_url": null, "classifiers": [], "description": ".. image:: https://travis-ci.org/tehmaze/xmodem.png?branch=master\n :target: https://travis-ci.org/tehmaze/xmodem\n\n.. image:: https://coveralls.io/repos/tehmaze/xmodem/badge.png\n :target: https://coveralls.io/r/tehmaze/xmodem\n\n================================\n XMODEM protocol implementation\n================================\n\nDocumentation available at http://packages.python.org/xmodem/\n\nPython Package Index (PyPI) page is available at https://pypi.python.org/pypi/xmodem\n\nUsage\n=====\n\nCreate a function to get and put character data (to a serial line for\nexample)::\n\n >>> import serial\n >>> from xmodem import XMODEM\n >>> ser = serial.Serial('/dev/ttyUSB0', timeout=0) # or whatever port you need\n >>> def getc(size, timeout=1):\n ... return ser.read(size) or None\n ...\n >>> def putc(data, timeout=1):\n ... return ser.write(data) # note that this ignores the timeout\n ...\n >>> modem = XMODEM(getc, putc)\n\nNow, to upload a file, use the ``send`` method::\n\n >>> stream = open('/etc/fstab', 'rb')\n >>> modem.send(stream)\n\nTo download a file, use the ``recv`` method::\n\n >>> stream = open('output', 'wb')\n >>> modem.recv(stream)\n\nFor more information, take a look at the documentation_.\n\n.. _documentation: http://packages.python.org/xmodem/xmodem.html\n\nChanges\n=======\n\n0.4.5:\n * bugfix: Remove bogus `assert False` code in ``recv()`` that resulted in\n `AssertionError` introduced in version 0.4.0 commit-id `9b03fc20`, `PR #29\n `_.\n0.4.4:\n * bugfix: Large file transfers in ``send()`` were more likely to fail for\n small values of ``retry``: This value should be the maximum failures per\n block transfer as documented, but was improperly implemented as the number\n of failures allowed for the total duration of the transfer, `PR #21\n `_.\n * bugfix: ``send(retry=n)`` and ``recv(retry=n)`` should retry ``n`` times\n as documented, was retrying ``n - 1``.\n\n0.4.3:\n * bugfix: ``putc()`` callback was called in series, 3 times for each part of\n xmodem block header, data, and checksum during block transfer. Now all\n three data blocks are sent by single ``putc()`` call. This resolves issues\n when integrating with microcontrollers or equipment sensitive to timing\n issues at stream boundaries, `PR #19\n `_.\n\n0.4.2:\n * bugfix: documentation files missing from the release tarball\n `Issue #16 `_.\n\n0.4.1\n * bugfix: re-transmit in ``send()`` on ``NAK`` or timeout, previously\n re-transmissions (wrongly) occurred only on garbage bytes.\n `PR #12 `_.\n\n0.4.0\n * enhancement: support for python 3\n `PR #8 `_.\n * bugfix: CRC failures in XMODEM.recv() were not renegotiated correctly\n `PR #11 `_.\n", "description_content_type": null, "docs_url": "https://pythonhosted.org/xmodem/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tehmaze/xmodem", "keywords": "xmodem protocol", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "xmodem", "package_url": "https://pypi.org/project/xmodem/", "platform": "", "project_url": "https://pypi.org/project/xmodem/", "project_urls": { "Homepage": "https://github.com/tehmaze/xmodem" }, "release_url": "https://pypi.org/project/xmodem/0.4.5/", "requires_dist": null, "requires_python": "", "summary": "XMODEM protocol implementation.", "version": "0.4.5" }, "last_serial": 2893535, "releases": { "0.1": [ { "comment_text": "built for Linux-2.6.32-14-generic-pae-i686-with-glibc2.4", "digests": { "md5": "cdfbc0e61fdb94fc7030c556ee1e9470", "sha256": "f4b8ed21b077d55d8b061260385069b373afc4dde41e31d66e17b6074590bf9f" }, "downloads": -1, "filename": "xmodem-0.1.linux-i686.tar.gz", "has_sig": false, "md5_digest": "cdfbc0e61fdb94fc7030c556ee1e9470", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 8270, "upload_time": "2010-04-21T11:19:39", "url": "https://files.pythonhosted.org/packages/bb/c3/7a9955b30baa4a9a327d9cdd3bd89101ea35687f39902218a3f68d020b8b/xmodem-0.1.linux-i686.tar.gz" }, { "comment_text": "", "digests": { "md5": "474cf74e68c2feafe1b46b8897fa500e", "sha256": "06193347f7c2bd4842eb87263a9dd49ac5f9ab74d447488a449cf693868ea425" }, "downloads": -1, "filename": "xmodem-0.1-py2.6.egg", "has_sig": false, "md5_digest": "474cf74e68c2feafe1b46b8897fa500e", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 10079, "upload_time": "2010-04-21T11:19:42", "url": "https://files.pythonhosted.org/packages/8f/c8/780b0c277e10af62b4279ff08f936d616ff2b6afa10c62cb7caf9569ee8c/xmodem-0.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "60cdc9a7e4f950289e202eefc75098bc", "sha256": "b967113f493ef3f9ce0bf47ee04049ac455dd0f53e964c8fbacf0aaa049a8e93" }, "downloads": -1, "filename": "xmodem-0.1.tar.gz", "has_sig": false, "md5_digest": "60cdc9a7e4f950289e202eefc75098bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5665, "upload_time": "2010-04-21T11:20:34", "url": "https://files.pythonhosted.org/packages/07/01/cc25b10d9ab4bc8370c7da522bad126b95462fef9419bf3b342642d5d586/xmodem-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "cf673b88fe98fec8a040110ff689f3e1", "sha256": "fd8408fcc29e46dfcaf02fcb48795b6d7d6c9fbd62d9c6412771e43ec6a4d473" }, "downloads": -1, "filename": "xmodem-0.2.tar.gz", "has_sig": false, "md5_digest": "cf673b88fe98fec8a040110ff689f3e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6071, "upload_time": "2010-04-22T16:59:25", "url": "https://files.pythonhosted.org/packages/b1/01/c3ece2c563148e3ffd94c588d2f5ad578110e7c2d92c291038a1e547b9bd/xmodem-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "29bdfece603a490d601665bb233fd8f4", "sha256": "a8637cbba5e4934941b3cf66c93c024061c23e8e8172a909bdbd7e7f1a0a546c" }, "downloads": -1, "filename": "xmodem-0.2.1-py2.6.egg", "has_sig": false, "md5_digest": "29bdfece603a490d601665bb233fd8f4", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 10511, "upload_time": "2010-06-24T09:36:56", "url": "https://files.pythonhosted.org/packages/71/8f/d0ff7483e064b595f4ef465d83fd27edd301fb02c6918c0f4c0b5a94c1e8/xmodem-0.2.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "c2701be7ae4266b1dd66f077c773bbb3", "sha256": "7199678b93765e1d2d9154229be1745d6861c9fc40b71bc4b424fb0e664506d3" }, "downloads": -1, "filename": "xmodem-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c2701be7ae4266b1dd66f077c773bbb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6102, "upload_time": "2010-06-24T09:36:09", "url": "https://files.pythonhosted.org/packages/e7/1b/40d615b1cd5e32acefdbc464bd945e2ef8077e267acfd6685d29e90beca6/xmodem-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3403130bd7505ee4a13837152f24d7c9", "sha256": "fbd14c57dd870de7e23fe55195e5a326c977d7ecbef0b8767c8a90c54beef458" }, "downloads": -1, "filename": "xmodem-0.2.2-py2.6.egg", "has_sig": false, "md5_digest": "3403130bd7505ee4a13837152f24d7c9", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 10512, "upload_time": "2010-06-24T10:02:45", "url": "https://files.pythonhosted.org/packages/7d/ca/d66bbf3f22d30dfeaedce639e31b3965ac69c6b04e471340338198278894/xmodem-0.2.2-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "af25915ca4edccd0159892acb405be13", "sha256": "a04d4dac5f87f9ec1928764bb67c61d51a9df38e9b4c512609a79bee216a3726" }, "downloads": -1, "filename": "xmodem-0.2.2.tar.gz", "has_sig": false, "md5_digest": "af25915ca4edccd0159892acb405be13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6090, "upload_time": "2010-06-24T10:02:38", "url": "https://files.pythonhosted.org/packages/d5/7e/580549efc72f0137d0cb4cd583e1c3be3bc1cdadb0eb29f855381a5f900b/xmodem-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ee6b8fd925fc916b68e9ec59c38cd546", "sha256": "8a58a7f108c4005b5e07fd61205950f42f1fae0ce5c3a94de46cd465eebee2b0" }, "downloads": -1, "filename": "xmodem-0.2.3-py2.6.egg", "has_sig": false, "md5_digest": "ee6b8fd925fc916b68e9ec59c38cd546", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 10516, "upload_time": "2010-07-21T08:31:31", "url": "https://files.pythonhosted.org/packages/7c/87/9009da5f4124a16796a198286d836a258d7da5c6d951cec6b228f8fee117/xmodem-0.2.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "effd0018ebc2fe7a7aba24ca1a4f3a87", "sha256": "bc347708d501048943f7150e7710b6d3aa7c9ad951c38f6084dda109449ce564" }, "downloads": -1, "filename": "xmodem-0.2.3.tar.gz", "has_sig": false, "md5_digest": "effd0018ebc2fe7a7aba24ca1a4f3a87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6090, "upload_time": "2010-07-21T08:31:30", "url": "https://files.pythonhosted.org/packages/b2/cd/1b35cfd0d2e23ec8a666f5f7107dae6d37ee26be448bd7f2401a882eb25c/xmodem-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d29577289e7b69002107ad0e2c5f2e16", "sha256": "41c112da85b591f6f1542ddc4670b984fd80c740fb0af097e19898c163074b29" }, "downloads": -1, "filename": "xmodem-0.2.4-py2.6.egg", "has_sig": false, "md5_digest": "d29577289e7b69002107ad0e2c5f2e16", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 10522, "upload_time": "2011-06-02T11:29:23", "url": "https://files.pythonhosted.org/packages/93/a9/d004bc0cddc62fd2cd3252059252798a08220f5e5873fee314abdd2ce575/xmodem-0.2.4-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "8bdc82e8b76bea8d6690376a8223e8b7", "sha256": "7c574184fe5f217a1696703b93659475a2f0d64dc15fb82f935cc81f93f34f09" }, "downloads": -1, "filename": "xmodem-0.2.4.tar.gz", "has_sig": false, "md5_digest": "8bdc82e8b76bea8d6690376a8223e8b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6055, "upload_time": "2011-06-02T11:29:23", "url": "https://files.pythonhosted.org/packages/be/b8/b3f345e88b8549c60f4b98afdae5e6d4587d56f020cc6fd2b441d1ceb5e0/xmodem-0.2.4.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "c909451b05a0fd62bab94a8d5ae32370", "sha256": "6732b8d53e524de6ca79b7ee62720cdb9fcb060388c85f105c8b5b7d62918799" }, "downloads": -1, "filename": "xmodem-0.3.2-py2.7.egg", "has_sig": false, "md5_digest": "c909451b05a0fd62bab94a8d5ae32370", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 13800, "upload_time": "2014-01-06T13:40:16", "url": "https://files.pythonhosted.org/packages/a6/06/44465d4cc9b4984d60dd8ca63debda7c6378dae6d7b4f5953010e6be2912/xmodem-0.3.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "2740520dd087b89172d5d04f4c4158e5", "sha256": "4e57f3fadd1f3f043a23f1a87e9d36f944a21b552aabebcdb802154667396567" }, "downloads": -1, "filename": "xmodem-0.3.2.tar.gz", "has_sig": false, "md5_digest": "2740520dd087b89172d5d04f4c4158e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32583, "upload_time": "2014-01-06T13:37:08", "url": "https://files.pythonhosted.org/packages/b3/38/f9268f8bfb1e5c0dcb51f6159d64f0466b379942c0a2802deea608f81b2a/xmodem-0.3.2.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "8310f3238e8010cbb843cef1d0016f5c", "sha256": "270d25329158fe3598d775f57b2c4db77bca214de19f0b40bad0b05751eca3cf" }, "downloads": -1, "filename": "xmodem-0.4.1-py2-none-any.whl", "has_sig": false, "md5_digest": "8310f3238e8010cbb843cef1d0016f5c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 34055, "upload_time": "2015-11-19T06:08:34", "url": "https://files.pythonhosted.org/packages/dd/59/831232beffe1855e458d6eed312a93201f5291a1a85574fdbd5b60f480f9/xmodem-0.4.1-py2-none-any.whl" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "90d01ce256b1fd33b2a83f2880cf0b8e", "sha256": "760318a5692e1471a3c87e2bc129af9dc0ef624f71be0bfc534372d794d84141" }, "downloads": -1, "filename": "xmodem-0.4.2-py2-none-any.whl", "has_sig": false, "md5_digest": "90d01ce256b1fd33b2a83f2880cf0b8e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 34399, "upload_time": "2015-11-23T10:00:59", "url": "https://files.pythonhosted.org/packages/9a/4b/ed83a0214555fa17cbc328a0afb89d40cb42c38e5784b4be8b7f047e908e/xmodem-0.4.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "481cfcd6512eec4a4b993e5b729e2adc", "sha256": "12c7a7b21e227ee5d5a7da7e79eb2e9929b8bffbb97a552b5b610e967a541f2c" }, "downloads": -1, "filename": "xmodem-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "481cfcd6512eec4a4b993e5b729e2adc", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 34172, "upload_time": "2015-11-23T10:00:29", "url": "https://files.pythonhosted.org/packages/32/8e/6954c415b94d4198f13f3c8b85ad5ef842dd62300971213c6f4a187d69be/xmodem-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "987d4ee4f0b89d449e97079c5cc28fcb", "sha256": "aee735aac28f23bdf9c43a31004a2ce2c59384f0a227b9d49e1e6f65f96894af" }, "downloads": -1, "filename": "xmodem-0.4.2.tar.gz", "has_sig": false, "md5_digest": "987d4ee4f0b89d449e97079c5cc28fcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29578, "upload_time": "2015-11-23T10:00:19", "url": "https://files.pythonhosted.org/packages/3e/9d/2f00f1dedbdaf85a79e5546a1aebf81a251f58eb4563697ec0770a6c2090/xmodem-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "fd79f9fabc2e3bd5bda11bc4e3017317", "sha256": "75d48d9be7636fa9fda8cf1873a09756272a3d5f5a53b0b92d8feea2c34a8bb3" }, "downloads": -1, "filename": "xmodem-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fd79f9fabc2e3bd5bda11bc4e3017317", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 34779, "upload_time": "2016-03-11T06:56:51", "url": "https://files.pythonhosted.org/packages/0b/93/432cde2336a97a2aaa5db9dc8f93e09a29b7fb90681442cd9b95ae3e8704/xmodem-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6f6de41a6e60e664d569fd5e5f9b6ef", "sha256": "6ba0a5833d50adb701f045e4e4522bcb0785d2200e9a00fe4c74c226ec1e26fd" }, "downloads": -1, "filename": "xmodem-0.4.3.tar.gz", "has_sig": false, "md5_digest": "a6f6de41a6e60e664d569fd5e5f9b6ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30079, "upload_time": "2016-03-11T06:56:41", "url": "https://files.pythonhosted.org/packages/ac/0b/93b6449f0ead398af195907e434edc6f0bb145b8f2731dfe8225717bd279/xmodem-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "6552eecf0d2b3cbe75b2242b3b2a7fc2", "sha256": "b0edd36fb62faebbb2b990a350ea9fd134c506debef89ca1e2e780b19ea1ea4a" }, "downloads": -1, "filename": "xmodem-0.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6552eecf0d2b3cbe75b2242b3b2a7fc2", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 34996, "upload_time": "2016-04-14T16:37:29", "url": "https://files.pythonhosted.org/packages/23/ab/cfa79b8eaff649f18f4f17b83fea07321eac6ef84bd09b13424ffe045ba8/xmodem-0.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "570772c676cb346bde827960a465ef38", "sha256": "bbbacfd8a72ede2479bd87cce748d092a3e5142ce90c8c7c2106ddf4c91f68a1" }, "downloads": -1, "filename": "xmodem-0.4.4.tar.gz", "has_sig": false, "md5_digest": "570772c676cb346bde827960a465ef38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30448, "upload_time": "2016-04-14T16:37:21", "url": "https://files.pythonhosted.org/packages/bd/cc/c6748df0948bcc272f4bc66e468cbd15290df8df3e51f9d660af3eb4352f/xmodem-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "bf2a1a46f560bf654785ce08bdec5519", "sha256": "99fc276d36dd5ce526889c3fe3e011de30275c675913540983d96979f152fed1" }, "downloads": -1, "filename": "xmodem-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "bf2a1a46f560bf654785ce08bdec5519", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 35600, "upload_time": "2017-05-23T15:31:30", "url": "https://files.pythonhosted.org/packages/7a/aa/3c57438250d7649af63a1ad70a790ebe353aa4c3c056e72f52a9cd75a6c9/xmodem-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af8d14e7c0219a62b9f5d413176bd00a", "sha256": "8b7ca0f45cdf0f5e7212a60931c98b333da5ef2fc6702a5d10c51b9fc52ce91c" }, "downloads": -1, "filename": "xmodem-0.4.5.tar.gz", "has_sig": false, "md5_digest": "af8d14e7c0219a62b9f5d413176bd00a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30904, "upload_time": "2017-05-23T15:31:27", "url": "https://files.pythonhosted.org/packages/de/30/13c7b6c34d858da1c479b8ff36b946a230261183c4e7a76d1978e80c7578/xmodem-0.4.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bf2a1a46f560bf654785ce08bdec5519", "sha256": "99fc276d36dd5ce526889c3fe3e011de30275c675913540983d96979f152fed1" }, "downloads": -1, "filename": "xmodem-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "bf2a1a46f560bf654785ce08bdec5519", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 35600, "upload_time": "2017-05-23T15:31:30", "url": "https://files.pythonhosted.org/packages/7a/aa/3c57438250d7649af63a1ad70a790ebe353aa4c3c056e72f52a9cd75a6c9/xmodem-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af8d14e7c0219a62b9f5d413176bd00a", "sha256": "8b7ca0f45cdf0f5e7212a60931c98b333da5ef2fc6702a5d10c51b9fc52ce91c" }, "downloads": -1, "filename": "xmodem-0.4.5.tar.gz", "has_sig": false, "md5_digest": "af8d14e7c0219a62b9f5d413176bd00a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30904, "upload_time": "2017-05-23T15:31:27", "url": "https://files.pythonhosted.org/packages/de/30/13c7b6c34d858da1c479b8ff36b946a230261183c4e7a76d1978e80c7578/xmodem-0.4.5.tar.gz" } ] }