{ "info": { "author": "Anthony Sottile", "author_email": "asottile@umich.edu", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only" ], "description": "[![Build Status](https://travis-ci.org/asottile/dead.svg?branch=master)](https://travis-ci.org/asottile/dead)\n\ndead\n====\n\ndead simple python dead code detection\n\n## installation\n\n`pip install dead`\n\n\n## cli\n\nConsult the help for the latest usage:\n\n```console\n$ dead --help\nusage: dead [-h] [--files FILES] [--exclude EXCLUDE] [--tests TESTS]\n\noptional arguments:\n -h, --help show this help message and exit\n --files FILES regex for file inclusion, default: ''\n --exclude EXCLUDE regex for file exclusion, default '^$'\n --tests TESTS regex to mark files as tests, default\n '(^|/)(tests?|testing)/'\n```\n\nrun the `dead` utility from the root of a git repository.\n\n## as a pre-commit hook\n\nSee [pre-commit](https://github.com/pre-commit/pre-commit) for instructions\n\nSample `.pre-commit-config.yaml`:\n\n```yaml\n- repo: https://github.com/asottile/dead\n rev: v0.0.8\n hooks:\n - id: dead\n```\n\n### how it works\n\n1. find all files in a repository using `git ls-files` and filtering:\n - only include files matched by the `--files` regex\n - exclude files matched by the `--exclude` regex\n - only include files identified as `python` by\n [`identify`](https://github.com/chriskuehl/identify)\n - classify test files by the `--tests` regex\n1. ast parse each file\n - search for definitions and references\n1. report things which do not have references\n\n### false positives\n\nI wrote this in ~15 minutes on an airplane, it's far from perfect but often\nfinds things. Here's a few things it's not good at:\n\n- functions which implement an interface are often marked as unused\n- metaclass magic is often marked as unused (enums, model classes, etc.)\n\n### suppressing `dead`\n\nThe `# dead: disable` comment will tell `dead` to ignore\nany line which has reportedly dead code.\n\n### is this project dead?\n\n_maybe._\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/asottile/dead", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dead", "package_url": "https://pypi.org/project/dead/", "platform": "", "project_url": "https://pypi.org/project/dead/", "project_urls": { "Homepage": "https://github.com/asottile/dead" }, "release_url": "https://pypi.org/project/dead/0.0.8/", "requires_dist": [ "identify" ], "requires_python": ">=3.6", "summary": "dead simple python dead code detection", "version": "0.0.8" }, "last_serial": 5832742, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "3a24405ee4d31a417a4741d0aaf25e42", "sha256": "6dbe2a0d976989255677ac6062f82da54b6b982debca4c26de0e20c8a6cc8f01" }, "downloads": -1, "filename": "dead-0.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a24405ee4d31a417a4741d0aaf25e42", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3990, "upload_time": "2019-01-08T04:15:01", "url": "https://files.pythonhosted.org/packages/d5/3d/b810a937952836ae21e8d549ae9311de7dfab7dec942347e8ca96c9ce4c4/dead-0.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "931be86277a8b63ce3f1fa854cb740b3", "sha256": "8aaf162e2123da582b3290d525d73e89b664a7734ca46c08a1e48835d2b4eccd" }, "downloads": -1, "filename": "dead-0.0.0.tar.gz", "has_sig": false, "md5_digest": "931be86277a8b63ce3f1fa854cb740b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3321, "upload_time": "2019-01-08T04:15:03", "url": "https://files.pythonhosted.org/packages/9f/a2/09cc9e6ca4993a53d740350a16c371e5d56991ebdf96770758f7e9cf8149/dead-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "bff8841e0e2b331e325778120b66f0dd", "sha256": "4006ca345353dcf04a0b028d5ec64c66e0e01fe1fd928eee1b55a18912a3d8e6" }, "downloads": -1, "filename": "dead-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bff8841e0e2b331e325778120b66f0dd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3237, "upload_time": "2019-01-09T23:28:03", "url": "https://files.pythonhosted.org/packages/43/7c/79f2719b56d9c25cd0ed6ea9c24bd9eff137aba23511c141f65c18c2f4d8/dead-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b85d3bec0ac59be885bf6bd6cb13e0aa", "sha256": "31d7e76b558f695d8f07d086e59bd52399e4b21ccdd57e0abbd72f6c50167011" }, "downloads": -1, "filename": "dead-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b85d3bec0ac59be885bf6bd6cb13e0aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3363, "upload_time": "2019-01-09T23:28:05", "url": "https://files.pythonhosted.org/packages/0c/06/62609700d11666ff8c14d244e74c7e778b1b99a6657f0ada4ab6109d86c0/dead-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d46390b990e18012f24f203b9f2670dc", "sha256": "00b4e664e607282e586d58ef48a87fdb491bc9ff96508cc3e9d383f18e491182" }, "downloads": -1, "filename": "dead-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d46390b990e18012f24f203b9f2670dc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4500, "upload_time": "2019-01-20T02:03:26", "url": "https://files.pythonhosted.org/packages/b7/98/f959b50b528560054d49717730c7598f16b3c13adff67b07df2d60788a76/dead-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b77164c9059659f082810ffce39e345d", "sha256": "4bc649a83f619ae213e3201650607c5728865ed8aaf4b95fad341b52f15cd03b" }, "downloads": -1, "filename": "dead-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b77164c9059659f082810ffce39e345d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3830, "upload_time": "2019-01-20T02:03:27", "url": "https://files.pythonhosted.org/packages/1f/2f/e483a0139ae62f06d9d90f8b8a1a99d1af1cefab73911caf9df2ae370cbc/dead-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "0030a1883ecf7a73f13ed3a77e1a612d", "sha256": "66ed5e6788749b007df698045c4ce4b7652bd552c2089bf0ab92c9517bdad270" }, "downloads": -1, "filename": "dead-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0030a1883ecf7a73f13ed3a77e1a612d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4515, "upload_time": "2019-01-29T17:54:14", "url": "https://files.pythonhosted.org/packages/36/a7/32fd431349587e6240c9402b777e8a70da9ddcecf104ed3375dea830e92f/dead-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4837fe08a797916d504e7975f70970aa", "sha256": "5d9824143806bdc3c2917abb034bab7153b11bf9a447d5b0b7ca0f62945aef09" }, "downloads": -1, "filename": "dead-0.0.3.tar.gz", "has_sig": false, "md5_digest": "4837fe08a797916d504e7975f70970aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3843, "upload_time": "2019-01-29T17:54:16", "url": "https://files.pythonhosted.org/packages/c9/80/af1cbfa1c17980e730aaa552274ff01a8d250b2d9bb1590bf9519ccd7d8c/dead-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5e9d1353c3f963115273a6c162eae52f", "sha256": "39567f41dfb2bd28768128d275ebf0f579c4285c99ece80eb9a4bdb7ce011b6d" }, "downloads": -1, "filename": "dead-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e9d1353c3f963115273a6c162eae52f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4805, "upload_time": "2019-02-24T20:47:29", "url": "https://files.pythonhosted.org/packages/d8/09/b6cf8e3d337a3a4dbc666c66934ba558e51e882b2957f30dda38dfe9ed9d/dead-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4771f6d610843fc18bba2f04f3b5145e", "sha256": "fd77e9280f582a6ce8127ed0678cc5868622f9516d44c746a23a596b3dd70cf3" }, "downloads": -1, "filename": "dead-0.0.4.tar.gz", "has_sig": false, "md5_digest": "4771f6d610843fc18bba2f04f3b5145e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4171, "upload_time": "2019-02-24T20:47:30", "url": "https://files.pythonhosted.org/packages/5c/93/f73f278f0152546718f34ae21a4a231f3dda47199fee14b2ab5405decacc/dead-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "c221f2011da7757369489c0d7836519f", "sha256": "e95f39ebf1b42cc6b39466b30035433da1fc06b1c48e339974d7eb3d0971fd51" }, "downloads": -1, "filename": "dead-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c221f2011da7757369489c0d7836519f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4806, "upload_time": "2019-02-25T01:51:07", "url": "https://files.pythonhosted.org/packages/d3/3c/ad4228f9dc3bc9304c9bd036c25919b7ae14fed5bacc405f0de10688310a/dead-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74ad222bd2ac05b79c7db414bd62fd2a", "sha256": "8761041ea3ddc1962492826c2d50cbfebccfa0f94e6a73bfe4fec63d144b5127" }, "downloads": -1, "filename": "dead-0.0.5.tar.gz", "has_sig": false, "md5_digest": "74ad222bd2ac05b79c7db414bd62fd2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4273, "upload_time": "2019-02-25T01:51:08", "url": "https://files.pythonhosted.org/packages/8c/66/a60342319f558bc449c93275fed3d1df3f24dc10bf066045995b6101485d/dead-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "beded7f32df7af8b062194d3ade4a1e3", "sha256": "cd08f04b8144540a41a276947ead37f418960712ab9812af73fc01c737cd2406" }, "downloads": -1, "filename": "dead-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "beded7f32df7af8b062194d3ade4a1e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 5694, "upload_time": "2019-02-28T06:38:10", "url": "https://files.pythonhosted.org/packages/87/f3/389d966b7363e541d7829f6610337f19247fe1f1c0c90a041988d4a2cb9d/dead-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e0a0b182f1e165c095ae6e194688cba", "sha256": "5fb202baf51b93c14f7634c81b95ad4436e7397e192c6811157a9a0127733d36" }, "downloads": -1, "filename": "dead-0.0.6.tar.gz", "has_sig": false, "md5_digest": "5e0a0b182f1e165c095ae6e194688cba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5245, "upload_time": "2019-02-28T06:38:11", "url": "https://files.pythonhosted.org/packages/19/96/34c8c6b350d0c94373732b44acd3c03a7c736004c17aca74105dcbb1c6b3/dead-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "e9a5e1236f843b9fd0f102e214ab4086", "sha256": "6151b27bfc7aaaae0b4a6927bfcfa03bec66cc3d4416cb83d9d4903ed3f152b2" }, "downloads": -1, "filename": "dead-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9a5e1236f843b9fd0f102e214ab4086", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 5791, "upload_time": "2019-06-26T04:40:29", "url": "https://files.pythonhosted.org/packages/a1/01/8cd371fdcb0926c0d9017287ac2d2223fc648c32ed8cfb2548a7d293b11a/dead-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99c84b3022d58a4fc2e1f1b4be00820e", "sha256": "2b1057c9a20d6425076f2aa0fe7371588513ec01acfb2fe6ddf70ca9d2f4c443" }, "downloads": -1, "filename": "dead-0.0.7.tar.gz", "has_sig": false, "md5_digest": "99c84b3022d58a4fc2e1f1b4be00820e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5471, "upload_time": "2019-06-26T04:40:31", "url": "https://files.pythonhosted.org/packages/c5/86/3394732340f0699a83658136f3f688390f33a137750969e9fda02e155475/dead-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "9424b4498da7d76b330384f19b795144", "sha256": "206656067b05abf2f8e697ceead3e5e6ac1ad7f1de971354f71282566831d4d5" }, "downloads": -1, "filename": "dead-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9424b4498da7d76b330384f19b795144", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 6307, "upload_time": "2019-09-15T18:27:25", "url": "https://files.pythonhosted.org/packages/66/16/e9664b61e4c9f2ec18d3cd4de2b58fbd42be14657909a9dd8baf6caa7e74/dead-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "474188a38a6c2303b0a60e6ffd7d3c32", "sha256": "ee0eca5bc46953f9b2cca7245f1daa140385d6a06ac7abf15fdb349050a4eab7" }, "downloads": -1, "filename": "dead-0.0.8.tar.gz", "has_sig": false, "md5_digest": "474188a38a6c2303b0a60e6ffd7d3c32", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5973, "upload_time": "2019-09-15T18:27:26", "url": "https://files.pythonhosted.org/packages/14/1e/dec50602239276de0ccf51211c9e3d2763462027c33603cdc72147c94a0f/dead-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9424b4498da7d76b330384f19b795144", "sha256": "206656067b05abf2f8e697ceead3e5e6ac1ad7f1de971354f71282566831d4d5" }, "downloads": -1, "filename": "dead-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9424b4498da7d76b330384f19b795144", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6", "size": 6307, "upload_time": "2019-09-15T18:27:25", "url": "https://files.pythonhosted.org/packages/66/16/e9664b61e4c9f2ec18d3cd4de2b58fbd42be14657909a9dd8baf6caa7e74/dead-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "474188a38a6c2303b0a60e6ffd7d3c32", "sha256": "ee0eca5bc46953f9b2cca7245f1daa140385d6a06ac7abf15fdb349050a4eab7" }, "downloads": -1, "filename": "dead-0.0.8.tar.gz", "has_sig": false, "md5_digest": "474188a38a6c2303b0a60e6ffd7d3c32", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5973, "upload_time": "2019-09-15T18:27:26", "url": "https://files.pythonhosted.org/packages/14/1e/dec50602239276de0ccf51211c9e3d2763462027c33603cdc72147c94a0f/dead-0.0.8.tar.gz" } ] }