{ "info": { "author": "Vadim Kravcenko", "author_email": "vadim.kravcenko@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "Pycycle: Find and fix circular imports in python projects\n=========================================================\n\n.. image:: https://img.shields.io/pypi/v/pycycle.svg\n :target: https://pypi.python.org/pypi/pycycle\n\n.. image:: https://img.shields.io/pypi/l/pycycle.svg\n :target: https://pypi.python.org/pypi/pycycle\n\n.. image:: https://img.shields.io/pypi/wheel/pycycle.svg\n :target: https://pypi.python.org/pypi/pycycle\n\n.. image:: https://img.shields.io/pypi/pyversions/pipenv.svg\n :target: https://pypi.python.org/pypi/pycycle\n\n.. image:: https://api.travis-ci.org/bndr/pycycle.svg?branch=master\n :target: https://travis-ci.org/bndr/pycycle\n\n---------------\n\n\n**Pycycle** is an experimental project that aims to help python developers fix their circular dependencies problems.\n\n*ImportError: Cannot import name X* is a python exception that is related to the circular imports, but the exception tells nothing about where or what.\n\nThis tool automatically analyzes the imports of your projects, and looks for imports that may cause a circular dependency problem.\n\n.. image:: https://i.imgur.com/8JeLQxu.gif\n\nFeatures\n--------\n\n- **Shows you the whole chain of the circular imports.**\n- Gives you lines of code where each import is, for you to easily find and fix the problem.\n- Visualizes your imports in a graph **(Not Yet Implemented)**\n\n\n\nUsage\n-----\n\n::\n\n $ pycycle\n Usage: pycycle [OPTIONS] COMMAND [ARGS]...\n\n\n Examples:\n Get the circular imports in current project:\n $ pycycle --here\n Look for circular imports in another project\n $ pycycle --source /home/user/workspace/awesome_project\n Ignore specific directories when looking for circular import\n $ pycycle --source /home/user/workspace/awesome_project --ignore some_dir,some_dir2\n Get verbose output\n $ pycycle --source /home/user/workspace/awesome_project --verbose\n\n Options:\n --verbose Verbose output.\n --here Try to find cycles in the current project.\n --source TEXT Try to find cycles in the path provided.\n --ignore TEXT Comma separated directories that will be ignored during\n analysis.\n --encoding TEXT Change enconding with which the project is read.\n --help Show this message then exit.\n --version Show the version and exit.\n\n::\n\n $ pycycle --here\n Project successfully transformed to AST, checking imports for cycles..\n Cycle Found :(\n a_module.a_file: Line 1 -> a_module.b_module.b_file: Line 1 -> c_module.c_file: Line 1 -> d_module.d_file: Line 1 =>> a_module.a_file\n Finished.\n\n::\n\n $ pycycle --source /Users/vkravcenko/workspace/awesome_project\n Target source provided:/Users/vkravcenko/workspace/awesome_project\n Project successfully transformed to AST, checking imports for cycles..\n No worries, no cycles here!\n If you think some cycle was missed, please open an Issue on Github.\n Finished.\n\n\nInstallation\n------------\n\n::\n\n $ pip install pycycle", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bndr/pycycle", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pycycle", "package_url": "https://pypi.org/project/pycycle/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pycycle/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/bndr/pycycle" }, "release_url": "https://pypi.org/project/pycycle/0.0.8/", "requires_dist": null, "requires_python": null, "summary": "Find and repair your import cycles in any project", "version": "0.0.8" }, "last_serial": 2639108, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a45338d1a0a0929fb7012bc788f47416", "sha256": "e8e98df82a817e6a223ccf5c951d0a6848d2f23d4d081e8456570741b65ca8d1" }, "downloads": -1, "filename": "pycycle-0.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "a45338d1a0a0929fb7012bc788f47416", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6831, "upload_time": "2017-01-28T18:44:01", "url": "https://files.pythonhosted.org/packages/7d/17/851e8e29dc17cc54451c7a40a9852e1f5992720b556dfbefa1c8572e47c3/pycycle-0.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b58272c8dde671f92ddd566609dfeb4", "sha256": "5577170233959ea29a6db95b307ae96698c0559899977bb20fb8b6631e851dd8" }, "downloads": -1, "filename": "pycycle-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8b58272c8dde671f92ddd566609dfeb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4226, "upload_time": "2017-01-28T18:43:58", "url": "https://files.pythonhosted.org/packages/9c/d6/6b60b141a3535ab2b7da8706cfc816d56f336b4514546b6690f3e52654d9/pycycle-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "664778dcf415d7d043cfcb827f693024", "sha256": "ac19a2c2ca7f7268b85ea03282c0a386779ec6e9b38c66b77e5b9516f003a877" }, "downloads": -1, "filename": "pycycle-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "664778dcf415d7d043cfcb827f693024", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6935, "upload_time": "2017-01-28T18:59:45", "url": "https://files.pythonhosted.org/packages/3b/0e/788df7d8b50e297e0fb52092239a2d9ba0ffbcda8c4773c697ed75e6c9f1/pycycle-0.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fed26671917b9d892cf115887a6a0c8b", "sha256": "aac36c892b68bd82b1aa85ba7b73f7d9ab576f71af204d8dde112fdddeb208cb" }, "downloads": -1, "filename": "pycycle-0.0.2.tar.gz", "has_sig": false, "md5_digest": "fed26671917b9d892cf115887a6a0c8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4353, "upload_time": "2017-01-28T18:59:42", "url": "https://files.pythonhosted.org/packages/15/59/0a2e6f598f13d7c9cf03eaa53ff93792c65533a521be82d27e690c2194f4/pycycle-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "b253556f3ffb647ca2bdc8cdbc7d14e9", "sha256": "9a7dc1773f0c1e63744f3c90975deae69b8627a8cb7aa409ff7345ea79529e6c" }, "downloads": -1, "filename": "pycycle-0.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "b253556f3ffb647ca2bdc8cdbc7d14e9", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7608, "upload_time": "2017-01-29T10:13:09", "url": "https://files.pythonhosted.org/packages/8f/ee/c5092b13bcdd9a7f84b271ede60e0372b3a49ea196b9546e647dec5929f1/pycycle-0.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "608969d05ac4ce3c38351f33ca5c705c", "sha256": "19d369f435c355e358ad1ed52a7cbe49aa476df9ac07e17af12bfa139c0ccd77" }, "downloads": -1, "filename": "pycycle-0.0.3.tar.gz", "has_sig": false, "md5_digest": "608969d05ac4ce3c38351f33ca5c705c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4868, "upload_time": "2017-01-29T10:13:07", "url": "https://files.pythonhosted.org/packages/d8/c2/9ae25b5a65952a656b44659f39af99788a3d404a8606e6ecdc910b7ac0d6/pycycle-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "974fdd8f551ad2773e51d7cbfd2b1669", "sha256": "84f7b3877ac7dfb4baafd307ce0122ad0413cdf84e1b607e5c138d05bb384d88" }, "downloads": -1, "filename": "pycycle-0.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "974fdd8f551ad2773e51d7cbfd2b1669", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7751, "upload_time": "2017-01-29T10:30:31", "url": "https://files.pythonhosted.org/packages/0f/c4/e176ad823babb395d857b6048071a8322bc7821f3247a9401e15ca220fd6/pycycle-0.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7e6403b0a57b957a6a0a2d636cefb553", "sha256": "5d02e346eddd9e9f1bcb8f02164debc9415ed79082b6ccebee6e17dc69fdaf76" }, "downloads": -1, "filename": "pycycle-0.0.4.tar.gz", "has_sig": false, "md5_digest": "7e6403b0a57b957a6a0a2d636cefb553", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4941, "upload_time": "2017-01-29T10:30:28", "url": "https://files.pythonhosted.org/packages/f1/9b/9835b580c4c7fc84862523d0893f57aeb1a1d1e200ce21c2ae036463578f/pycycle-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "16697ff3966170848d0b83fea8960fc3", "sha256": "b756235a2d831b6647d84e2c39e85dffe2860acc2a77d32e967f7417cf8ee469" }, "downloads": -1, "filename": "pycycle-0.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "16697ff3966170848d0b83fea8960fc3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7869, "upload_time": "2017-02-02T19:40:47", "url": "https://files.pythonhosted.org/packages/20/48/16c9a2482bab99f2292529b393a7beafbf0d13caca3586b60b3f050136a7/pycycle-0.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "267e460831bb67efa68e7445edb763f1", "sha256": "7cce1429111f55d0a18dd818ee43f0b175c258dc1d5c6da9edab736309475389" }, "downloads": -1, "filename": "pycycle-0.0.5.tar.gz", "has_sig": false, "md5_digest": "267e460831bb67efa68e7445edb763f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5055, "upload_time": "2017-02-02T19:40:45", "url": "https://files.pythonhosted.org/packages/22/57/74d2fedee60724f60295cc0fda902fac691e74b54a8a4831b347decebc3c/pycycle-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "da9d3afe05a0473d8c674dfbd31e6283", "sha256": "4987f1bdeb2eff1ea7ce427b5a8b6466d7050f6dd0e91a74e92c5d4b0a940da8" }, "downloads": -1, "filename": "pycycle-0.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "da9d3afe05a0473d8c674dfbd31e6283", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7887, "upload_time": "2017-02-02T19:47:52", "url": "https://files.pythonhosted.org/packages/fa/90/5d0fa1f222ed7af58d77c4465a376a73d24a2924f8dacb4b99595b4f884c/pycycle-0.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "deb7007cc2970ca28cc64f0183875ea8", "sha256": "61060b176034e1f9d176f7304fda3287504e6fadd3b379763c88b8463985bf53" }, "downloads": -1, "filename": "pycycle-0.0.6.tar.gz", "has_sig": false, "md5_digest": "deb7007cc2970ca28cc64f0183875ea8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5071, "upload_time": "2017-02-02T19:47:50", "url": "https://files.pythonhosted.org/packages/e9/3f/2a582fd50c962ca09ee40e209b6c48608d3188f8c874f5a856252ef1ed6b/pycycle-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "6a7d5823bd348f47757acf31c536f13f", "sha256": "1d423e105972fdb080dda24b4b8e5af35ba5d756e8210d92ddc2a58cba7ced31" }, "downloads": -1, "filename": "pycycle-0.0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "6a7d5823bd348f47757acf31c536f13f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8137, "upload_time": "2017-02-05T10:31:34", "url": "https://files.pythonhosted.org/packages/f6/2d/c4c0dcd304e7046b1629ad86b9fbfa315812f9dadf97d569d40a919d133a/pycycle-0.0.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dcdcd339f29f04c55a8f8679292dc2e", "sha256": "13fde3759ce6bbc582c36dd1d81dc2e69c21245bb8c838e591cf1bb386a78520" }, "downloads": -1, "filename": "pycycle-0.0.7.tar.gz", "has_sig": false, "md5_digest": "3dcdcd339f29f04c55a8f8679292dc2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5306, "upload_time": "2017-02-05T10:31:32", "url": "https://files.pythonhosted.org/packages/a7/a1/fe9f84815b6e4943ecd6ef812720f3f2426c996ddcf603c5ff2611c50758/pycycle-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d3f1da622db635924fd35fa4953f1f99", "sha256": "37af51d31861449ad05db4d0f79de26e9fdf2519aca8866b57d03af3a8fccf36" }, "downloads": -1, "filename": "pycycle-0.0.8-py2-none-any.whl", "has_sig": false, "md5_digest": "d3f1da622db635924fd35fa4953f1f99", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8683, "upload_time": "2017-02-13T18:07:58", "url": "https://files.pythonhosted.org/packages/27/f9/2dbaf7797277db3901086babde14d7a9673ed6b1925193ce4d2a15699ff8/pycycle-0.0.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48c1f4b1429f806a7bf039ccdb4eff23", "sha256": "fdcde6eef1fded7113f211255971dcc93a740cc6fa57a24ab7c9c3c681bf4351" }, "downloads": -1, "filename": "pycycle-0.0.8.tar.gz", "has_sig": false, "md5_digest": "48c1f4b1429f806a7bf039ccdb4eff23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5848, "upload_time": "2017-02-13T18:07:56", "url": "https://files.pythonhosted.org/packages/99/c9/0a6e09b0d7d0fbc339191b3b37bfab92be84513700418c61a2adbfd3ae2d/pycycle-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d3f1da622db635924fd35fa4953f1f99", "sha256": "37af51d31861449ad05db4d0f79de26e9fdf2519aca8866b57d03af3a8fccf36" }, "downloads": -1, "filename": "pycycle-0.0.8-py2-none-any.whl", "has_sig": false, "md5_digest": "d3f1da622db635924fd35fa4953f1f99", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8683, "upload_time": "2017-02-13T18:07:58", "url": "https://files.pythonhosted.org/packages/27/f9/2dbaf7797277db3901086babde14d7a9673ed6b1925193ce4d2a15699ff8/pycycle-0.0.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48c1f4b1429f806a7bf039ccdb4eff23", "sha256": "fdcde6eef1fded7113f211255971dcc93a740cc6fa57a24ab7c9c3c681bf4351" }, "downloads": -1, "filename": "pycycle-0.0.8.tar.gz", "has_sig": false, "md5_digest": "48c1f4b1429f806a7bf039ccdb4eff23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5848, "upload_time": "2017-02-13T18:07:56", "url": "https://files.pythonhosted.org/packages/99/c9/0a6e09b0d7d0fbc339191b3b37bfab92be84513700418c61a2adbfd3ae2d/pycycle-0.0.8.tar.gz" } ] }