{ "info": { "author": "Rohan McGovern", "author_email": "rohan@mcgovern.id.au", "bugtrack_url": null, "classifiers": [], "description": "# pidiff\n\n`pidiff` - the Python interface diff tool\n\n[![Build Status](https://circleci.com/gh/rohanpm/pidiff/tree/master.svg?style=svg)](https://circleci.com/gh/rohanpm/pidiff/tree/master)\n[![Coverage Status](https://coveralls.io/repos/github/rohanpm/pidiff/badge.svg?branch=master)](https://coveralls.io/github/rohanpm/pidiff?branch=master)\n[![Maintainability](https://api.codeclimate.com/v1/badges/64347682bb124ea1e1fb/maintainability)](https://codeclimate.com/github/rohanpm/pidiff/maintainability)\n\n- [Documentation](https://pidiff.dev/)\n- [Source](https://github.com/rohanpm/pidiff)\n- [PyPI](https://pypi.python.org/pypi/pidiff)\n\n`pidiff` is a tool to detect and report on API changes between multiple versions\nof a Python module. It can be used as a testing tool to help a project follow\nthe [Semantic Versioning](https://semver.org/) spec.\n\n## Examples\n\nThe `pidiff` command can install old and new package versions from PyPI and diff a\nmodule between versions, failing if SemVer is not used appropriately.\n\nHere's an example of a diff finding some problems:\n\n````\n$ pidiff more-executors==1.15.0 more-executors==1.16.0\nmore_executors/_wrap.py:6: N220 function added: flat_bind\nmore_executors/retry.py:46: N450 ExceptionRetryPolicy now accepts unlimited keyword arguments\nmore_executors/retry.py:46: B330 argument in ExceptionRetryPolicy can no longer be passed positionally: max_attempts (was position 0)\nmore_executors/retry.py:133: N450 RetryExecutor now accepts unlimited keyword arguments\nmore_executors/retry.py:133: B130 method removed: new_default\n\n---------------------------------------------------------------------\nMajor API changes were found; inappropriate for 1.15.0 => 1.16.0\nNew version should be equal or greater than 2.0.0\n````\n\nPublic API was removed without a major bump of the package version;\npidiff considers this an error and suggests the new minimum version\nnumber which should be set to accept these changes.\n\nHere's an example of a diff reporting a successful result:\n\n````\n$ pidiff more-executors==1.11.0 more-executors==1.12.0\nmore_executors/flat_map.py:0: N210 module added: flat_map\nmore_executors/_executors.py:84: N230 method added: with_flat_map\n\n---------------------------------------------------------------------\nMinor API changes were found; appropriate for 1.11.0 => 1.12.0\n````\n\nPublic API was added; since there was a minor bump of the package version,\nthis is OK.\n\n## License\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\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/rohanpm/pidiff", "keywords": "", "license": "GNU General Public License", "maintainer": "", "maintainer_email": "", "name": "pidiff", "package_url": "https://pypi.org/project/pidiff/", "platform": "", "project_url": "https://pypi.org/project/pidiff/", "project_urls": { "Changelog": "https://github.com/rohanpm/pidiff/blob/master/CHANGELOG.md", "Documentation": "https://pidiff.dev/", "Homepage": "https://github.com/rohanpm/pidiff" }, "release_url": "https://pypi.org/project/pidiff/1.4.0/", "requires_dist": [ "jsonschema", "virtualenv-api", "semver", "astroid" ], "requires_python": "", "summary": "The Python interface diff tool", "version": "1.4.0" }, "last_serial": 5696665, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cd16fe11d54787ccc24a4764eb15f2cb", "sha256": "34e20ae7175c9a528dd7b0410566c90343c4fcf0b500c31af2a8cf9be0bfa1eb" }, "downloads": -1, "filename": "pidiff-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cd16fe11d54787ccc24a4764eb15f2cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25986, "upload_time": "2019-03-10T05:41:46", "url": "https://files.pythonhosted.org/packages/f7/9e/3eb0682f771ad9d58cb09758a6f3b40b5c1497f7bc411eed3b9f1cadef42/pidiff-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "305d640b58f86eb0a1152253e3d5cf8e", "sha256": "67166255c036ade3b5c7609dbb2c599619bb89a65736a33704695b148676d3d5" }, "downloads": -1, "filename": "pidiff-0.1.0.tar.gz", "has_sig": false, "md5_digest": "305d640b58f86eb0a1152253e3d5cf8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24060, "upload_time": "2019-03-10T05:41:47", "url": "https://files.pythonhosted.org/packages/db/61/40ce09d7a05ca5819a06c695c39fa37b4a9b465db0e36763ccbbd6be6e74/pidiff-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "bf05ab775fd582c15980cf15e3d579ed", "sha256": "d3ab43e277048cc89b6e9c1b5b9133fdf72ba6adbec7410831270837667aca43" }, "downloads": -1, "filename": "pidiff-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bf05ab775fd582c15980cf15e3d579ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27570, "upload_time": "2019-03-11T09:26:50", "url": "https://files.pythonhosted.org/packages/83/bc/da26b3fda1c9bebc6ce63b8a05260ec69829edb7c024241507b366117cdc/pidiff-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "93bdc3174b86eb9bed93ad74ae4b31e1", "sha256": "52d452dc2a93a19b912a6bd12e737d1dceb1e7ebc8dc15727249529518311666" }, "downloads": -1, "filename": "pidiff-0.2.0.tar.gz", "has_sig": false, "md5_digest": "93bdc3174b86eb9bed93ad74ae4b31e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25341, "upload_time": "2019-03-11T09:26:51", "url": "https://files.pythonhosted.org/packages/91/ed/cd4f29efa8f90d90b3098d42294d9ec9691ac9ec026b19496624df73adad/pidiff-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "06759b0ea7fc6b2e92dc13a74ca3dea8", "sha256": "3bde79e4c9e1757a682622f171bb77fb297cf857e916140f59b14199e0208762" }, "downloads": -1, "filename": "pidiff-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "06759b0ea7fc6b2e92dc13a74ca3dea8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28277, "upload_time": "2019-03-12T10:02:11", "url": "https://files.pythonhosted.org/packages/27/82/fc41bc59d00c7601e57d87fd607b9fb417d500a7ab8ffe6444ee41652078/pidiff-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dac4724044b17dc34f744a72760cf5e8", "sha256": "db7b4284bbf592fc3068e7a8bdba1c6997d19990a623a5bcd190b98ef85304b2" }, "downloads": -1, "filename": "pidiff-0.3.0.tar.gz", "has_sig": false, "md5_digest": "dac4724044b17dc34f744a72760cf5e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25000, "upload_time": "2019-03-12T10:02:13", "url": "https://files.pythonhosted.org/packages/4e/c9/e19c1561d2d760cbc7f188e077748c02e6cfcec21c78cda5f859a32e728a/pidiff-0.3.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "5e4f56fde9641c8dd4696737a477aa02", "sha256": "cce8d521405b96ea40db55dff500e56267b8fcb19d3673bc72942249a1d9342b" }, "downloads": -1, "filename": "pidiff-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5e4f56fde9641c8dd4696737a477aa02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30790, "upload_time": "2019-03-17T03:42:11", "url": "https://files.pythonhosted.org/packages/0c/c5/5bce288b96fbc7f8d4008bb74de63e05103e27d2155760b393808eb72dee/pidiff-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21f80733e7eb72640e3752aa93c921b2", "sha256": "1f11225f043b53eddda867d944affc052acdfba34b07a429f02217a6ff56cffd" }, "downloads": -1, "filename": "pidiff-1.0.0.tar.gz", "has_sig": false, "md5_digest": "21f80733e7eb72640e3752aa93c921b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28979, "upload_time": "2019-03-17T03:42:12", "url": "https://files.pythonhosted.org/packages/fd/00/8446e0c614b9759fae0b34980fb9ce055b6f4b7244e6e4200823786fdc39/pidiff-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ccb422dd5fdf2c8f096cd86b61c9f01d", "sha256": "25c5a5cb5e7d0f38dad68018da243aaca063757331bff8c3fbf772977e1956a6" }, "downloads": -1, "filename": "pidiff-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ccb422dd5fdf2c8f096cd86b61c9f01d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32151, "upload_time": "2019-05-19T04:32:43", "url": "https://files.pythonhosted.org/packages/18/a5/4c6ec13a9c3e0f3a4b4560db9a80e00519384df69ec4880c363eabcafaa0/pidiff-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b0a28a4badfd2f7978704c024c1404d", "sha256": "beca3b6a6960a17f6783e1526288c3eeac414ccdd41d180e6d26f4044de60dee" }, "downloads": -1, "filename": "pidiff-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5b0a28a4badfd2f7978704c024c1404d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29034, "upload_time": "2019-05-19T04:32:44", "url": "https://files.pythonhosted.org/packages/e5/52/a187d260371f866ff1fa538b729edc7ec064d234e630ae18513dd8065dd5/pidiff-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "9ac10e904d142e802faf51222de45292", "sha256": "99e80fa5506622b50cf97034e9d30c29be2f069676dd9d11655c3a9c477e348c" }, "downloads": -1, "filename": "pidiff-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9ac10e904d142e802faf51222de45292", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32182, "upload_time": "2019-05-25T05:00:28", "url": "https://files.pythonhosted.org/packages/41/33/a51cac410545ef74ae0690db1317be9c2e649e6456b8b4723a23bde7cadc/pidiff-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88b1b1d701d96dcbf29322c1ec496260", "sha256": "c55f3f3daacaa86351b64e1191f4177735ea0c8776fe943619d79cc199c35d89" }, "downloads": -1, "filename": "pidiff-1.2.0.tar.gz", "has_sig": false, "md5_digest": "88b1b1d701d96dcbf29322c1ec496260", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29219, "upload_time": "2019-05-25T05:00:29", "url": "https://files.pythonhosted.org/packages/27/ae/4d71453b077ca7af33ac813d9ff67e15944367f2eed673a02f64e0f14582/pidiff-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "5374ea5d278d8d953964159f1387a456", "sha256": "17ce18b67af1cc8f8fd3dd1db197ee4c2158e566ef5c795384b53396d1190055" }, "downloads": -1, "filename": "pidiff-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5374ea5d278d8d953964159f1387a456", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32242, "upload_time": "2019-06-05T09:16:17", "url": "https://files.pythonhosted.org/packages/38/35/2ea031290d004afdcb6213b630948774b8732cc5ab7ef0cd734607e06441/pidiff-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "757596333552a4ba5bc96ec681996fc2", "sha256": "1c466771c97e2561f850293d283287fdd8edc9fe89df03d24b52526b6010561f" }, "downloads": -1, "filename": "pidiff-1.3.0.tar.gz", "has_sig": false, "md5_digest": "757596333552a4ba5bc96ec681996fc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29338, "upload_time": "2019-06-05T09:16:19", "url": "https://files.pythonhosted.org/packages/9c/45/df343d20ecdc35f12cf14882d2ce666b370de02c76f5cfc6d66bcdf237d1/pidiff-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "c7bb413bfe9b48e46086fc9d5d244c35", "sha256": "4d2fd5333af44e9b0a8774bb100c30d086ea947753fa9391024968af19b13d68" }, "downloads": -1, "filename": "pidiff-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c7bb413bfe9b48e46086fc9d5d244c35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32705, "upload_time": "2019-08-19T04:38:26", "url": "https://files.pythonhosted.org/packages/29/41/9260ec7a9952d4caec81a6b477c17cea6fb01b934767c38945cdc7a0b6e3/pidiff-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "555b9dcbb427758ddf738f888201c208", "sha256": "a213181caeadec847631e7a55b04e485f5de6e4eea3eeda706bdc89d9b36c7bd" }, "downloads": -1, "filename": "pidiff-1.4.0.tar.gz", "has_sig": false, "md5_digest": "555b9dcbb427758ddf738f888201c208", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29776, "upload_time": "2019-08-19T04:38:28", "url": "https://files.pythonhosted.org/packages/16/ab/afead0aca8246284ed5885a38971c5097760eceba69543d8e611257685aa/pidiff-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7bb413bfe9b48e46086fc9d5d244c35", "sha256": "4d2fd5333af44e9b0a8774bb100c30d086ea947753fa9391024968af19b13d68" }, "downloads": -1, "filename": "pidiff-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c7bb413bfe9b48e46086fc9d5d244c35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32705, "upload_time": "2019-08-19T04:38:26", "url": "https://files.pythonhosted.org/packages/29/41/9260ec7a9952d4caec81a6b477c17cea6fb01b934767c38945cdc7a0b6e3/pidiff-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "555b9dcbb427758ddf738f888201c208", "sha256": "a213181caeadec847631e7a55b04e485f5de6e4eea3eeda706bdc89d9b36c7bd" }, "downloads": -1, "filename": "pidiff-1.4.0.tar.gz", "has_sig": false, "md5_digest": "555b9dcbb427758ddf738f888201c208", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29776, "upload_time": "2019-08-19T04:38:28", "url": "https://files.pythonhosted.org/packages/16/ab/afead0aca8246284ed5885a38971c5097760eceba69543d8e611257685aa/pidiff-1.4.0.tar.gz" } ] }