{ "info": { "author": "Erik Moqvist", "author_email": "erik.moqvist@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3" ], "description": "|buildstatus|_\n|appveyor|_\n|coverage|_\n|codecov|_\n\nAbout\n=====\n\nBinary `delta encoding`_ in Python 3 and C.\n\nBased on http://www.daemonology.net/bsdiff/, with the following\ndifferences:\n\n- BZ2, LZMA, `Zstandard`_, `heatshrink`_ or CRLE compression.\n\n- Linear patch file access pattern to allow streaming and less RAM\n usage.\n\n- `SA-IS`_ instead of qsufsort.\n\n- Variable length size fields.\n\n- `Incremental apply patch`_ implemented in C, suitable for memory\n constrained embedded devices.\n\n- `Normal`_ or `in-place`_ (resumable) updates.\n\n- Optional experimental data format aware algorithm for potentially\n smaller patches. I don't recommend anyone to use this functionality\n as the gain is small in relation to memory usage and code\n complexity!\n\n There is a risk this functionality uses patent\n https://patents.google.com/patent/EP1988455B1/en. Anyway, this\n patent expires in August 2019 as I understand it.\n\n Supported data formats:\n\n - ARM Cortex-M4\n\n - AArch64\n\nProject homepage: https://github.com/eerimoq/detools\n\nDocumentation: http://detools.readthedocs.org/en/latest\n\nInstallation\n============\n\n.. code-block:: python\n\n pip install detools\n\nStatistics\n==========\n\n\"LZMA ref.\" is the target binary compressed with ``lzma --best``.\n\nThe percentages are calculated as \"patch size\" / \"to size\". Lower is\nbetter.\n\n+---------------------+----------+-----------+---------+------------+---------+\n| Update | To size | LZMA ref. | LZMA | heatshrink | CRLE |\n+=====================+==========+===========+=========+============+=========+\n| upy v1.9.4 -> v1.10 | 615388 | 59.8 % | 11.7 % | 15.7 % | 26.2 % |\n+---------------------+----------+-----------+---------+------------+---------+\n| python 3.5 -> 3.6 | 4568920 | 30.7 % | 31.8 % | \\- | \\- |\n+---------------------+----------+-----------+---------+------------+---------+\n| foo old -> new | 2780 | 69.5 % | 4.5 % | 4.5 % | 6.8 % |\n+---------------------+----------+-----------+---------+------------+---------+\n\nExample usage\n=============\n\nExamples in C are found in `src/c`_.\n\nCommand line tool\n-----------------\n\nThe create patch subcommand\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nCreate a patch ``foo.patch`` from ``tests/files/foo/old`` to\n``tests/files/foo/new``.\n\n.. code-block:: text\n\n $ detools create_patch tests/files/foo/old tests/files/foo/new foo.patch\n Successfully created patch 'foo.patch'!\n $ ls -l foo.patch\n -rw-rw-r-- 1 erik erik 127 Mar 1 19:18 foo.patch\n\nCreate the same patch as above, but without compression.\n\n.. code-block:: text\n\n $ detools create_patch --compression none \\\n tests/files/foo/old tests/files/foo/new foo-no-compression.patch\n Successfully created patch 'foo-no-compression.patch'!\n $ ls -l foo-no-compression.patch\n -rw-rw-r-- 1 erik erik 2792 Mar 1 19:18 foo-no-compression.patch\n\nCreate an in-place patch ``foo-in-place.patch``.\n\n.. code-block:: text\n\n $ detools create_patch --type in-place --memory-size 3000 --segment-size 500 \\\n tests/files/foo/old tests/files/foo/new foo-in-place.patch\n Successfully created patch 'foo-in-place.patch'!\n $ ls -l foo-in-place.patch\n -rw-rw-r-- 1 erik erik 672 Mar 16 08:49 foo-in-place.patch\n\nCreate a bsdiff patch ``foo-bsdiff.patch``, compatible with the\noriginal bsdiff program.\n\n.. code-block:: text\n\n $ detools create_patch --type bsdiff \\\n tests/files/foo/old tests/files/foo/new foo-bsdiff.patch\n Successfully created patch 'foo-bsdiff.patch'!\n $ ls -l foo-bsdiff.patch\n -rw-rw-r-- 1 erik erik 261 Apr 22 18:20 foo-bsdiff.patch\n\nThe apply patch subcommand\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nApply the patch ``foo.patch`` to ``tests/files/foo/old`` to create\n``foo.new``.\n\n.. code-block:: text\n\n $ detools apply_patch tests/files/foo/old foo.patch foo.new\n $ ls -l foo.new\n -rw-rw-r-- 1 erik erik 2780 Mar 1 19:18 foo.new\n\nThe in-place apply patch subcommand\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nApply the in-place patch ``foo-in-place.patch`` to ``foo.mem``.\n\n.. code-block:: text\n\n $ cp tests/files/foo/old foo.mem\n $ detools apply_patch_in_place foo.mem foo-in-place.patch\n $ ls -l foo.mem\n -rwxrwxr-x 1 erik erik 2780 Mar 16 08:51 foo.mem\n\nThe bsdiff apply patch subcommand\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nApply the patch ``foo-bsdiff.patch`` to ``tests/files/foo/old`` to\ncreate ``foo.new``.\n\n.. code-block:: text\n\n $ detools apply_patch_bsdiff tests/files/foo/old foo-bsdiff.patch foo.new\n $ ls -l foo.new\n -rw-rw-r-- 1 erik erik 2780 Mar 1 19:18 foo.new\n\nThe patch info subcommand\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPrint information about the patch ``foo.patch``.\n\n.. code-block:: text\n\n $ detools patch_info foo.patch\n Type: normal\n Patch size: 127 bytes\n To size: 2.71 KiB\n Patch/to ratio: 4.6 % (lower is better)\n Diff/extra ratio: 9828.6 % (higher is better)\n Size/data ratio: 0.3 % (lower is better)\n Compression: lzma\n\n Number of diffs: 2\n Total diff size: 2.69 KiB\n Average diff size: 1.34 KiB\n Median diff size: 1.34 KiB\n\n Number of extras: 2\n Total extra size: 28 bytes\n Average extra size: 14 bytes\n Median extra size: 14 bytes\n\nContributing\n============\n\n#. Fork the repository.\n\n#. Install prerequisites.\n\n .. code-block:: text\n\n pip install -r requirements.txt\n\n#. Implement the new feature or bug fix.\n\n#. Implement test case(s) to ensure that future changes do not break\n legacy.\n\n#. Run the tests.\n\n .. code-block:: text\n\n make test\n\n#. Create a pull request.\n\n.. |buildstatus| image:: https://travis-ci.org/eerimoq/detools.svg?branch=master\n.. _buildstatus: https://travis-ci.org/eerimoq/detools\n\n.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/eerimoq/detools?svg=true\n.. _appveyor: https://ci.appveyor.com/project/eerimoq/detools/branch/master\n\n.. |coverage| image:: https://coveralls.io/repos/github/eerimoq/detools/badge.svg?branch=master\n.. _coverage: https://coveralls.io/github/eerimoq/detools\n\n.. |codecov| image:: https://codecov.io/gh/eerimoq/detools/branch/master/graph/badge.svg\n.. _codecov: https://codecov.io/gh/eerimoq/detools\n\n.. _SA-IS: https://sites.google.com/site/yuta256/sais\n\n.. _Incremental apply patch: https://github.com/eerimoq/detools/tree/master/src/c\n\n.. _delta encoding: https://en.wikipedia.org/wiki/Delta_encoding\n\n.. _heatshrink: https://github.com/atomicobject/heatshrink\n\n.. _Zstandard: https://facebook.github.io/zstd\n\n.. _Normal: https://detools.readthedocs.io/en/latest/#id1\n\n.. _in-place: https://detools.readthedocs.io/en/latest/#id2\n\n.. _src/c: https://github.com/eerimoq/detools/tree/master/src/c", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/eerimoq/detools", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "detools", "package_url": "https://pypi.org/project/detools/", "platform": "", "project_url": "https://pypi.org/project/detools/", "project_urls": { "Homepage": "https://github.com/eerimoq/detools" }, "release_url": "https://pypi.org/project/detools/0.32.0/", "requires_dist": null, "requires_python": "", "summary": "Binary delta encoding tools.", "version": "0.32.0" }, "last_serial": 5496737, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "82dbc9407339a6768820318a7e666bd1", "sha256": "d4499c857cd169b670a9b537f49fb3d46a9a092e3b703292b3f98163adf49afd" }, "downloads": -1, "filename": "detools-0.10.0.tar.gz", "has_sig": false, "md5_digest": "82dbc9407339a6768820318a7e666bd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1990233, "upload_time": "2019-02-24T21:51:33", "url": "https://files.pythonhosted.org/packages/8d/96/36d840e3c6bac790d586b8260d556eb4691c736fabf14d3685c0eff33464/detools-0.10.0.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "dd3911b485a04d3f3c223b48e2303214", "sha256": "34a0cc65015f76bab4a4a78df1f9984eb92d7aff13f490a6ebab7b6ecadc959e" }, "downloads": -1, "filename": "detools-0.11.0.tar.gz", "has_sig": false, "md5_digest": "dd3911b485a04d3f3c223b48e2303214", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1990366, "upload_time": "2019-02-26T08:13:34", "url": "https://files.pythonhosted.org/packages/a2/5a/8791fee96875add81d26611ff50bf7a9fe97ddbfeb601bf4489f4b299e0c/detools-0.11.0.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "baf03065a71334444cc5e7f1f5ab1470", "sha256": "747158cf8a81d5a9f124a3f60d2397f1e43ceca89203057a5ed542cdfb388d62" }, "downloads": -1, "filename": "detools-0.12.0.tar.gz", "has_sig": false, "md5_digest": "baf03065a71334444cc5e7f1f5ab1470", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1990343, "upload_time": "2019-03-01T18:42:30", "url": "https://files.pythonhosted.org/packages/b4/bb/d26a7664b03ecc42b9011b7ec39d364ea2a376db94f4f308bfb37835fdab/detools-0.12.0.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "9ba4ca2aef0ad490565d04ed95e15d60", "sha256": "72a21d9964795f39bf72adde6afe5f34f4c2a93d01003fd1ee49cf024680a9bc" }, "downloads": -1, "filename": "detools-0.13.0.tar.gz", "has_sig": false, "md5_digest": "9ba4ca2aef0ad490565d04ed95e15d60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1991899, "upload_time": "2019-03-11T21:25:43", "url": "https://files.pythonhosted.org/packages/39/54/63c5bccaf2b4d55b24cf61318de72b4d69c0db5c7da521930114fc52677a/detools-0.13.0.tar.gz" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "ed9c9dd9f9c649a77075abf3896aab4c", "sha256": "2eef0dfa3d913ff8d24848d76e2bffe476455492e09feeed3cfefa25aeb2df9a" }, "downloads": -1, "filename": "detools-0.14.0.tar.gz", "has_sig": false, "md5_digest": "ed9c9dd9f9c649a77075abf3896aab4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1994021, "upload_time": "2019-03-13T05:56:09", "url": "https://files.pythonhosted.org/packages/e2/60/0885692a6f6ebf6b8034b6661418f6b8fe6e31e56194d814c5deb47ef117/detools-0.14.0.tar.gz" } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "6ea0ca0a882a3f151e3b7314fcd474d3", "sha256": "601923a3bb685a2476e193aeca85be8adb065ad6b08051d52eab6cc15e1ca32b" }, "downloads": -1, "filename": "detools-0.15.0.tar.gz", "has_sig": false, "md5_digest": "6ea0ca0a882a3f151e3b7314fcd474d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1994718, "upload_time": "2019-03-16T07:18:24", "url": "https://files.pythonhosted.org/packages/96/67/ad27cfe39b358c1f0595944990f24639f020525dd7d0899517d79855234c/detools-0.15.0.tar.gz" } ], "0.16.0": [ { "comment_text": "", "digests": { "md5": "b7da9cc5707ae4bf827af739092d3ad8", "sha256": "048db0f7b82fe6f0eba96f87db6e85a4ace15429db85a7ed0bca53a37500d46c" }, "downloads": -1, "filename": "detools-0.16.0.tar.gz", "has_sig": false, "md5_digest": "b7da9cc5707ae4bf827af739092d3ad8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1996595, "upload_time": "2019-03-17T06:53:20", "url": "https://files.pythonhosted.org/packages/2f/c0/64c284a670d8546056eaa4c5ec6b59bd41c3bde8c15c61a9cf9294d14a3b/detools-0.16.0.tar.gz" } ], "0.17.0": [ { "comment_text": "", "digests": { "md5": "1f6f342af2d55d03d10c121c3769a69c", "sha256": "e710a984e5d82925af2919ef3f0903307f79e4fecdd3722b435e540133413650" }, "downloads": -1, "filename": "detools-0.17.0.tar.gz", "has_sig": false, "md5_digest": "1f6f342af2d55d03d10c121c3769a69c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1996537, "upload_time": "2019-03-19T10:52:55", "url": "https://files.pythonhosted.org/packages/fd/2f/1989681a4332c17c64ecda79ee42eeac6a9416e7b2a5451c8b8c973c3398/detools-0.17.0.tar.gz" } ], "0.18.0": [ { "comment_text": "", "digests": { "md5": "458ba0252d37d4fa755fe8485d7c1dd7", "sha256": "2b6d4589d4d0d888cafdfd0f1787e139aeb87670ec22a68fb9dec3dcd4f10989" }, "downloads": -1, "filename": "detools-0.18.0.tar.gz", "has_sig": false, "md5_digest": "458ba0252d37d4fa755fe8485d7c1dd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3083508, "upload_time": "2019-04-03T19:58:19", "url": "https://files.pythonhosted.org/packages/9b/07/5b305e0a5f203158e7e125a0e6dc647869969169639db2b13ae48e9a2cc4/detools-0.18.0.tar.gz" } ], "0.19.0": [ { "comment_text": "", "digests": { "md5": "35083b2d0e7c788ccffeeff4aadbab2e", "sha256": "e9238e3d0e0ed6355fd69f2c157fc73c07c71071625655943e08323253fd5842" }, "downloads": -1, "filename": "detools-0.19.0.tar.gz", "has_sig": false, "md5_digest": "35083b2d0e7c788ccffeeff4aadbab2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3145758, "upload_time": "2019-04-05T06:27:38", "url": "https://files.pythonhosted.org/packages/6b/d3/ebce133039239ba4cd28d19d969d4a359a0b17dd3c0974c77f3dccc0d876/detools-0.19.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "8ef98e277cd75feffb639ad0f6a1b803", "sha256": "2003b5e30b54ae4ccaf78b80c83f54444cab17e38df5d241c2421e9f73fb214d" }, "downloads": -1, "filename": "detools-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8ef98e277cd75feffb639ad0f6a1b803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12899, "upload_time": "2019-02-20T23:14:39", "url": "https://files.pythonhosted.org/packages/9c/a1/755a15554e3e7be5985a5e33bacac2f49ab39df8c04ff0f07cbc5814a38a/detools-0.2.0.tar.gz" } ], "0.20.0": [ { "comment_text": "", "digests": { "md5": "32dff4b9a99c0715bb7a4c42b450de92", "sha256": "b45a13f2869018403cf2a04be0fcf9b972e0297b993849e315a33dddba786531" }, "downloads": -1, "filename": "detools-0.20.0.tar.gz", "has_sig": false, "md5_digest": "32dff4b9a99c0715bb7a4c42b450de92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8531951, "upload_time": "2019-04-06T16:01:31", "url": "https://files.pythonhosted.org/packages/07/0f/6b4ee7b0fc1e8a88d512dbc2ab96557a152a54a763f0ec246819e1187b86/detools-0.20.0.tar.gz" } ], "0.21.0": [ { "comment_text": "", "digests": { "md5": "3bf79c767ad9e77709ea7248e0aaf7ed", "sha256": "82764c6f2f221f7470454a4eed917960df332f9b66da2560b63485b4eecca75b" }, "downloads": -1, "filename": "detools-0.21.0.tar.gz", "has_sig": false, "md5_digest": "3bf79c767ad9e77709ea7248e0aaf7ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8536007, "upload_time": "2019-04-07T20:12:50", "url": "https://files.pythonhosted.org/packages/b1/d0/0db5f09d6620da1cb203c87847e807131121222817dde88f8edca20edc8c/detools-0.21.0.tar.gz" } ], "0.22.0": [ { "comment_text": "", "digests": { "md5": "67b4aac4dc2f9f841ece1c0d2b68fc4d", "sha256": "63a906f1560050d39cf9420731e95c2205064086ff3fa3aadf4b1f1ce30e6fb8" }, "downloads": -1, "filename": "detools-0.22.0.tar.gz", "has_sig": false, "md5_digest": "67b4aac4dc2f9f841ece1c0d2b68fc4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10561678, "upload_time": "2019-04-18T03:53:20", "url": "https://files.pythonhosted.org/packages/1e/3c/84bec0bd99942dabbb7e9143a2c577a85cd2adc0ea928d042de99193ce26/detools-0.22.0.tar.gz" } ], "0.23.0": [ { "comment_text": "", "digests": { "md5": "315af63ad0e0368b4de2c684a7bbd0be", "sha256": "91b352840617023cb6694d65789dbb9fa43e4ae7e8c4a00ccea249ae3c6a78ca" }, "downloads": -1, "filename": "detools-0.23.0.tar.gz", "has_sig": false, "md5_digest": "315af63ad0e0368b4de2c684a7bbd0be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10561508, "upload_time": "2019-04-18T21:41:30", "url": "https://files.pythonhosted.org/packages/27/43/9531b83dc950cea62bbdb0482f2179a04c49c6c5657b297e2cbe607547d5/detools-0.23.0.tar.gz" } ], "0.24.0": [ { "comment_text": "", "digests": { "md5": "af4bc34c31f804a3dc1bf13a75cd6b2c", "sha256": "a862e13df7b9eaa158cb76dc8f92049ca0bd79f58376b982fd78f38d0d44c655" }, "downloads": -1, "filename": "detools-0.24.0.tar.gz", "has_sig": false, "md5_digest": "af4bc34c31f804a3dc1bf13a75cd6b2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10656141, "upload_time": "2019-04-20T05:30:50", "url": "https://files.pythonhosted.org/packages/43/16/dcaad0f88161bd71edb9467e749b1d0299b99c9c3a8d1b56a04e942433c7/detools-0.24.0.tar.gz" } ], "0.25.0": [ { "comment_text": "", "digests": { "md5": "edafbd5187b9c5a05abe362ebc1b4d21", "sha256": "938379fe87365e90e130c7e4fb5d49241afb9e671e3b7135c09703118f129806" }, "downloads": -1, "filename": "detools-0.25.0.tar.gz", "has_sig": false, "md5_digest": "edafbd5187b9c5a05abe362ebc1b4d21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10656101, "upload_time": "2019-04-21T05:49:56", "url": "https://files.pythonhosted.org/packages/b5/6f/87078e78a9cf5d970382262d81aa79d173e82ba87c22fa3755d44b798cce/detools-0.25.0.tar.gz" } ], "0.26.0": [ { "comment_text": "", "digests": { "md5": "e91b33de4b10e93ef6ecd662af8ac6e5", "sha256": "92555d2a1cd12b3a56629b4581bbb36126106454ff31f11d1016a73d6c46f56c" }, "downloads": -1, "filename": "detools-0.26.0.tar.gz", "has_sig": false, "md5_digest": "e91b33de4b10e93ef6ecd662af8ac6e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10733274, "upload_time": "2019-04-22T16:43:30", "url": "https://files.pythonhosted.org/packages/5e/65/8b8a1b107e7a1cd1058382e076d6d6c0daa60affbbb835c10da35468dfff/detools-0.26.0.tar.gz" } ], "0.27.0": [ { "comment_text": "", "digests": { "md5": "18d6303afd7ef579c71d8a60cc37a4af", "sha256": "3c388fa9eea4527ba79d52c6c34df74729a70a50d3dbb68a92e98bd9ba91ee5f" }, "downloads": -1, "filename": "detools-0.27.0.tar.gz", "has_sig": false, "md5_digest": "18d6303afd7ef579c71d8a60cc37a4af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10738427, "upload_time": "2019-04-23T03:35:23", "url": "https://files.pythonhosted.org/packages/02/83/147f4519dfe906deeac1ceab8daf0bd52b4192fdaf88e47abc6f8a2f1833/detools-0.27.0.tar.gz" } ], "0.28.0": [ { "comment_text": "", "digests": { "md5": "2e84deb756e7d35c01e6597c009cd32a", "sha256": "5aea798305c5075c0a4ddfbdade28799fa5d4ac1d2fddd4d8ff6ee72320d5e04" }, "downloads": -1, "filename": "detools-0.28.0.tar.gz", "has_sig": false, "md5_digest": "2e84deb756e7d35c01e6597c009cd32a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10734750, "upload_time": "2019-04-29T17:28:19", "url": "https://files.pythonhosted.org/packages/4e/1f/76e82a9dce65de34cc5b789556ce6a93d1a57ee7fcc2a8a5bee212038960/detools-0.28.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b6051634b2504a4779a5693b1f05df58", "sha256": "e038ba3707c9a414aea26cad2e2cfcde0c3617d3f41cf57307f13ef753871c16" }, "downloads": -1, "filename": "detools-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b6051634b2504a4779a5693b1f05df58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13686, "upload_time": "2019-02-21T08:00:31", "url": "https://files.pythonhosted.org/packages/1a/f9/0b65d63e1269c503e578ce031d05a59ced73abc6de51f5592a51c61d0907/detools-0.3.0.tar.gz" } ], "0.30.0": [ { "comment_text": "", "digests": { "md5": "02c49ad60611e9d3c3418629d7e7b9dd", "sha256": "3e63ab1edeabb752f92a97a4b15a77b4a47cb7225f2b85317e46d0795c33d2d6" }, "downloads": -1, "filename": "detools-0.30.0.tar.gz", "has_sig": false, "md5_digest": "02c49ad60611e9d3c3418629d7e7b9dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10731729, "upload_time": "2019-07-05T15:48:09", "url": "https://files.pythonhosted.org/packages/99/ef/07bdb460bcd24e59010091e9000e721c45ddffe9fb260c74ad53b7a699e4/detools-0.30.0.tar.gz" } ], "0.31.0": [ { "comment_text": "", "digests": { "md5": "4917253a3387df9b563fcf79de287ba7", "sha256": "d370908f80f5035e62f483a55e8eff93c594aacc13aa9c453f15134ad82182a8" }, "downloads": -1, "filename": "detools-0.31.0.tar.gz", "has_sig": false, "md5_digest": "4917253a3387df9b563fcf79de287ba7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10807977, "upload_time": "2019-07-07T07:34:50", "url": "https://files.pythonhosted.org/packages/86/51/7145ce814c7e7c96382e70883fc1e3aca2f861929a9d432ad8e2d155b4ba/detools-0.31.0.tar.gz" } ], "0.32.0": [ { "comment_text": "", "digests": { "md5": "357cb2c799709c80e09921b2255fde1a", "sha256": "f8b32a06d978b926db1450c838362dd541758d75f3182d7afd95ad08a9f17368" }, "downloads": -1, "filename": "detools-0.32.0.tar.gz", "has_sig": false, "md5_digest": "357cb2c799709c80e09921b2255fde1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10887655, "upload_time": "2019-07-07T09:37:19", "url": "https://files.pythonhosted.org/packages/f5/d6/6bac02926d95542d5aed8d8d634cf669d6091bdeec41258135666399569a/detools-0.32.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "73783d84bb87bb43b53e0cb0a9954993", "sha256": "781563558283d7d5ae171f55eab79babfa1692649fada2a2255f14558cfd55ac" }, "downloads": -1, "filename": "detools-0.4.0.tar.gz", "has_sig": false, "md5_digest": "73783d84bb87bb43b53e0cb0a9954993", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12772, "upload_time": "2019-02-21T18:22:47", "url": "https://files.pythonhosted.org/packages/95/9a/3db262730d6dd421e53174a96d61920fc56da64873b039e05ac75dc5d003/detools-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "a241c5a33242c79a9ab2a72778aea8e0", "sha256": "4e7d3a24c24c3e72d609723cb9b98d0878e75adb0c5864b42c3eb50211e1f799" }, "downloads": -1, "filename": "detools-0.5.0.tar.gz", "has_sig": false, "md5_digest": "a241c5a33242c79a9ab2a72778aea8e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 889029, "upload_time": "2019-02-21T22:45:42", "url": "https://files.pythonhosted.org/packages/3f/e9/57ac053609ee1421857b5fb20fba09ce59d00b1d08afc3a9ce3df529c13c/detools-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2b1e393422853c8032cf3b7283f8e8c1", "sha256": "a337601f25cf35c37827a39d75f055d98b444583d40e85eff9c603c7ca207df2" }, "downloads": -1, "filename": "detools-0.6.0.tar.gz", "has_sig": false, "md5_digest": "2b1e393422853c8032cf3b7283f8e8c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 899444, "upload_time": "2019-02-22T21:23:03", "url": "https://files.pythonhosted.org/packages/c2/70/faf617e2bd62b1ed497690b53b21af66e7a53deebcfe984e96ce03d71a41/detools-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "5fb628d8cc9175392ec2a014893f3e9f", "sha256": "c8d523ceca4dcdcdf972c9ff9765d681613f1939b56b1b31087024d217b53718" }, "downloads": -1, "filename": "detools-0.7.0.tar.gz", "has_sig": false, "md5_digest": "5fb628d8cc9175392ec2a014893f3e9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1736375, "upload_time": "2019-02-23T07:14:00", "url": "https://files.pythonhosted.org/packages/c0/af/395703028f0917e686f9210ea1278633c8053c9f0aa58fd27a8b32471f52/detools-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "9bc3714b9a08ea1b03f570656b4006cb", "sha256": "dd8630c0bbb8534b79731b633694d8d89677b5ba3f3b6598202a82b2d3fe1e5f" }, "downloads": -1, "filename": "detools-0.8.0.tar.gz", "has_sig": false, "md5_digest": "9bc3714b9a08ea1b03f570656b4006cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1819006, "upload_time": "2019-02-23T11:03:29", "url": "https://files.pythonhosted.org/packages/b6/5d/c8905fc580e16489e3d48bc6709dcc780ed4f17efcac30de6d54abb1b8c9/detools-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "442c633d84e63b83f80cc1eb008031ca", "sha256": "a31c37307d280428030a57772e6106187b377ba7f477620ed9731aa904d3bda9" }, "downloads": -1, "filename": "detools-0.9.0.tar.gz", "has_sig": false, "md5_digest": "442c633d84e63b83f80cc1eb008031ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1905312, "upload_time": "2019-02-23T17:39:17", "url": "https://files.pythonhosted.org/packages/50/d8/bff62527e921b2b37985f07424e290c91b545b3f162705678575161ad7fe/detools-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "357cb2c799709c80e09921b2255fde1a", "sha256": "f8b32a06d978b926db1450c838362dd541758d75f3182d7afd95ad08a9f17368" }, "downloads": -1, "filename": "detools-0.32.0.tar.gz", "has_sig": false, "md5_digest": "357cb2c799709c80e09921b2255fde1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10887655, "upload_time": "2019-07-07T09:37:19", "url": "https://files.pythonhosted.org/packages/f5/d6/6bac02926d95542d5aed8d8d634cf669d6091bdeec41258135666399569a/detools-0.32.0.tar.gz" } ] }