{ "info": { "author": "David Seddon", "author_email": "david@seddonym.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Utilities" ], "description": "=====\nGrimp\n=====\n\n.. image:: https://img.shields.io/pypi/v/grimp.svg\n :target: https://pypi.org/project/grimp\n\n.. image:: https://img.shields.io/pypi/pyversions/grimp.svg\n :alt: Python versions\n :target: https://pypi.org/project/grimp/\n\n.. image:: https://api.travis-ci.com/seddonym/grimp.svg?branch=master\n :target: https://travis-ci.com/seddonym/grimp\n\n\nBuilds a queryable graph of the imports within one or more Python packages.\n\n* Free software: BSD license\n\nQuick start\n-----------\n\nInstall grimp::\n\n pip install grimp\n\nInstall the Python package you wish to analyse::\n\n pip install somepackage\n\nIn Python, build the import graph for the package::\n\n >>> import grimp\n >>> graph = grimp.build_graph('somepackage')\n\nYou may now use the graph object to analyse the package. Some examples::\n\n >>> graph.find_children('somepackage.foo')\n {\n 'somepackage.foo.one',\n 'somepackage.foo.two',\n }\n\n >>> graph.find_descendants('somepackage.foo')\n {\n 'somepackage.foo.one',\n 'somepackage.foo.two',\n 'somepackage.foo.two.blue',\n 'somepackage.foo.two.green',\n }\n\n >>> graph.find_modules_directly_imported_by('somepackage.foo')\n {\n 'somepackage.bar.one',\n }\n\n >>> graph.find_upstream_modules('somepackage.foo')\n {\n 'somepackage.bar.one',\n 'somepackage.baz',\n 'somepackage.foobar',\n }\n\n >>> graph.find_shortest_chain(importer='somepackage.foobar', imported='somepackage.foo')\n (\n 'somepackage.foobar',\n 'somepackage.baz',\n 'somepackage.foo',\n )\n\n >>> graph.get_import_details(importer='somepackage.foobar', imported='somepackage.baz'))\n [\n {\n 'importer': 'somepackage.foobar',\n 'imported': 'somepackage.baz',\n 'line_number': 5,\n 'line_contents': 'from . import baz',\n },\n ]\n\nExternal packages\n-----------------\n\nBy default, external dependencies will not be included. This can be overridden like so::\n\n >>> graph = grimp.build_graph('somepackage', include_external_packages=True)\n >>> graph.find_modules_directly_imported_by('somepackage.foo')\n {\n 'somepackage.bar.one',\n 'os',\n 'decimal',\n 'sqlalchemy',\n }\n\nMultiple packages\n-----------------\n\nYou may analyse multiple root packages. To do this, pass each package name as a positional argument::\n\n >>> graph = grimp.build_graph('somepackage', 'anotherpackage')\n >>> graph.find_modules_directly_imported_by('somepackage.foo')\n {\n 'somepackage.bar.one',\n 'anotherpackage.baz',\n }", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "BSD 2-Clause License", "maintainer": "", "maintainer_email": "", "name": "grimp", "package_url": "https://pypi.org/project/grimp/", "platform": "", "project_url": "https://pypi.org/project/grimp/", "project_urls": { "Documentation": "https://grimp.readthedocs.io/", "Source code": "https://github.com/seddonym/grimp/" }, "release_url": "https://pypi.org/project/grimp/1.0/", "requires_dist": null, "requires_python": "", "summary": "Builds a queryable graph of the imports within one or more Python packages.", "version": "1.0" }, "last_serial": 5988134, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "e0d783f6d0edebfc7d4892d6f2f56580", "sha256": "37cb4291a84410c490c60e0e725c709ab9da222a6e92015f8f741dcf01535489" }, "downloads": -1, "filename": "grimp-1.0.tar.gz", "has_sig": false, "md5_digest": "e0d783f6d0edebfc7d4892d6f2f56580", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29276, "upload_time": "2019-10-17T07:26:01", "url": "https://files.pythonhosted.org/packages/f5/77/10c314a2efb9418fa0023e8e30adee18cd5dbdb975740f6d96d9d0757be1/grimp-1.0.tar.gz" } ], "1.0b1": [ { "comment_text": "", "digests": { "md5": "eecd248bd1430c9415b706e559c42e28", "sha256": "160a26e05128f03553c3b01eb51715d9a3da7b9ffdff394acda2200d8900bd35" }, "downloads": -1, "filename": "grimp-1.0b1.tar.gz", "has_sig": false, "md5_digest": "eecd248bd1430c9415b706e559c42e28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21536, "upload_time": "2018-12-10T14:58:21", "url": "https://files.pythonhosted.org/packages/8c/94/b26f450c7a98abcc696d853599fcce70d31f91fa33f767706decca4da7d0/grimp-1.0b1.tar.gz" } ], "1.0b10": [ { "comment_text": "", "digests": { "md5": "d1d073e86cf13549a41ca462026b8da5", "sha256": "d452ce8ab969cb096dfbdf66f7f3f8d16559acc82a8d9508d905719a9c0e6532" }, "downloads": -1, "filename": "grimp-1.0b10.tar.gz", "has_sig": false, "md5_digest": "d1d073e86cf13549a41ca462026b8da5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26309, "upload_time": "2019-05-15T11:48:22", "url": "https://files.pythonhosted.org/packages/7c/ec/bc43462e66d062094b77353680746da48c92822f1746f0825d55eac7accc/grimp-1.0b10.tar.gz" } ], "1.0b11": [ { "comment_text": "", "digests": { "md5": "71871cc56a417e3f0afc6195557bbbe6", "sha256": "cc1546623d05ad5a68fa77d972a5233b86b252eaebcef0eaaacdbfd5d7a38fa3" }, "downloads": -1, "filename": "grimp-1.0b11.tar.gz", "has_sig": false, "md5_digest": "71871cc56a417e3f0afc6195557bbbe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26482, "upload_time": "2019-05-18T12:50:32", "url": "https://files.pythonhosted.org/packages/dc/0b/eb2a3f88bc333513b0c0fe91786c3ff2bda053257bd378035ebbb03fb7c8/grimp-1.0b11.tar.gz" } ], "1.0b12": [ { "comment_text": "", "digests": { "md5": "dba727b6c19483e0e0ce64db7d3f7dc2", "sha256": "e8a5e004362b70d37a154e9daba5b1232ed58201e04630fe5d3e8839d72acefd" }, "downloads": -1, "filename": "grimp-1.0b12.tar.gz", "has_sig": false, "md5_digest": "dba727b6c19483e0e0ce64db7d3f7dc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28288, "upload_time": "2019-06-12T12:15:43", "url": "https://files.pythonhosted.org/packages/65/7b/a7e0c35e94bb56d6ce7e92ff74055f0d998a6ec7d6d4e7487ae406fd065d/grimp-1.0b12.tar.gz" } ], "1.0b13": [ { "comment_text": "", "digests": { "md5": "fda0ee0187ebcc1e26b8a8873dc905c9", "sha256": "b7e4caf348b7ab9fbc24642484dc8041472e2e04fdcac1b214ced289de346b6b" }, "downloads": -1, "filename": "grimp-1.0b13.tar.gz", "has_sig": false, "md5_digest": "fda0ee0187ebcc1e26b8a8873dc905c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29445, "upload_time": "2019-09-25T20:16:11", "url": "https://files.pythonhosted.org/packages/dd/f3/03a3d66a647621da673c590e9c5544e070de6e4784bbeb2870b3703da73a/grimp-1.0b13.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "3e38de0d83f08af6cede12cf4c3059ec", "sha256": "bbd1aa27c3d12e7dcd492a4e7478a898bd781bcf051ea141677541c7a8af9300" }, "downloads": -1, "filename": "grimp-1.0b2.tar.gz", "has_sig": false, "md5_digest": "3e38de0d83f08af6cede12cf4c3059ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21576, "upload_time": "2018-12-12T11:58:27", "url": "https://files.pythonhosted.org/packages/39/91/4bb22ddcd1963fa626fb83ae74c08a747ea4b652fd44f40e59fba6b3a4ba/grimp-1.0b2.tar.gz" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "f175b78b89d6ac666059dfe4cebf593f", "sha256": "392e849d4f66457389724234725024b48faf171f7367e186b7721e1f4c2015f7" }, "downloads": -1, "filename": "grimp-1.0b3.tar.gz", "has_sig": false, "md5_digest": "f175b78b89d6ac666059dfe4cebf593f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22070, "upload_time": "2018-12-16T12:43:20", "url": "https://files.pythonhosted.org/packages/cb/3f/8635f909d570f6cbd14171ef7f7929567c7d44919eb3f56f0f8b60092725/grimp-1.0b3.tar.gz" } ], "1.0b4": [ { "comment_text": "", "digests": { "md5": "f02cd410e891c3629e141f128023ee3d", "sha256": "9787bb2394f9353566fb8b26744bc336dee015580049cb56e35d95537195e037" }, "downloads": -1, "filename": "grimp-1.0b4.tar.gz", "has_sig": false, "md5_digest": "f02cd410e891c3629e141f128023ee3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22629, "upload_time": "2019-01-07T20:55:38", "url": "https://files.pythonhosted.org/packages/2e/6b/3e0fa575613a686d47c9c538f09c288b710ba86bcb06caf08d8a13fc21a3/grimp-1.0b4.tar.gz" } ], "1.0b5": [ { "comment_text": "", "digests": { "md5": "5fd8349d4b16850df075fe05f23d872e", "sha256": "94b537eac7efdffc968bbc71149eb4812a58514808026987ceba7995163432a6" }, "downloads": -1, "filename": "grimp-1.0b5.tar.gz", "has_sig": false, "md5_digest": "5fd8349d4b16850df075fe05f23d872e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22936, "upload_time": "2019-01-12T12:24:02", "url": "https://files.pythonhosted.org/packages/a4/fc/5c9f1c78f90002bd4e00b67b56e48a8646b8333c45c4c9787b8705b6df92/grimp-1.0b5.tar.gz" } ], "1.0b6": [ { "comment_text": "", "digests": { "md5": "6c33e3a62b3c643fc0950430bdff5c31", "sha256": "552fc530203a937e6464dd8461e1d26b9556e5ef16ed04a5c775a29894ce92fd" }, "downloads": -1, "filename": "grimp-1.0b6.tar.gz", "has_sig": false, "md5_digest": "6c33e3a62b3c643fc0950430bdff5c31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25481, "upload_time": "2019-01-20T13:01:16", "url": "https://files.pythonhosted.org/packages/c6/9d/be7ef765d6ed82e8a8ae01ecb24b98166e0a4f9cfd32fd5e82c46e94e2fe/grimp-1.0b6.tar.gz" } ], "1.0b7": [ { "comment_text": "", "digests": { "md5": "0c80187598dd5323d8a6714f0f207e52", "sha256": "b584975712f49650909fc07691a3c2aabe3576bf62882772fde7834c1ad2064e" }, "downloads": -1, "filename": "grimp-1.0b7.tar.gz", "has_sig": false, "md5_digest": "0c80187598dd5323d8a6714f0f207e52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25657, "upload_time": "2019-01-21T17:06:17", "url": "https://files.pythonhosted.org/packages/fd/ad/551bd54cc91500b608824b324ee01e868e055da0ba95c8a581107e3b791a/grimp-1.0b7.tar.gz" } ], "1.0b8": [ { "comment_text": "", "digests": { "md5": "36797a01b4057ac91fdf2d0bc847a635", "sha256": "ccc69117a9f40224a2d22a6850e92921727ffd9f011612612e1a981e94505ed1" }, "downloads": -1, "filename": "grimp-1.0b8.tar.gz", "has_sig": false, "md5_digest": "36797a01b4057ac91fdf2d0bc847a635", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26242, "upload_time": "2019-02-01T15:42:14", "url": "https://files.pythonhosted.org/packages/9f/32/cb204918ced6b775e9116bfc63cb42f578c8d4d6a585e78b19f9637da013/grimp-1.0b8.tar.gz" } ], "1.0b9": [ { "comment_text": "", "digests": { "md5": "cc094ead0cf21ff7bf19b257107081ac", "sha256": "d6a63fc76d34ca14fe71502825458a192fe479ffcde5e37efba5ceaaceee9aa6" }, "downloads": -1, "filename": "grimp-1.0b9.tar.gz", "has_sig": false, "md5_digest": "cc094ead0cf21ff7bf19b257107081ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26290, "upload_time": "2019-04-16T16:40:03", "url": "https://files.pythonhosted.org/packages/07/7e/d328d3136b4c58b2078e645c1682728b2d8351b21e79d65dc42cef4a4e74/grimp-1.0b9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e0d783f6d0edebfc7d4892d6f2f56580", "sha256": "37cb4291a84410c490c60e0e725c709ab9da222a6e92015f8f741dcf01535489" }, "downloads": -1, "filename": "grimp-1.0.tar.gz", "has_sig": false, "md5_digest": "e0d783f6d0edebfc7d4892d6f2f56580", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29276, "upload_time": "2019-10-17T07:26:01", "url": "https://files.pythonhosted.org/packages/f5/77/10c314a2efb9418fa0023e8e30adee18cd5dbdb975740f6d96d9d0757be1/grimp-1.0.tar.gz" } ] }