{ "info": { "author": "Ilya Lebedev", "author_email": "melevir@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Framework :: Flake8", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Topic :: Software Development :: Documentation", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance" ], "description": "# flake8-expression-complexity\n\n[![Build Status](https://github.com/best-doctor/flake8-expression-complexity/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/best-doctor/flake8-expression-complexity/actions/workflows/build.yml)\n[![Maintainability](https://api.codeclimate.com/v1/badges/f85c1fd2ad4af63d93b6/maintainability)](https://codeclimate.com/github/best-doctor/flake8-expression-complexity/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/f85c1fd2ad4af63d93b6/test_coverage)](https://codeclimate.com/github/best-doctor/flake8-expression-complexity/test_coverage)\n[![PyPI version](https://badge.fury.io/py/flake8-expression-complexity.svg?)](https://badge.fury.io/py/flake8-expression-complexity)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/flake8-expression-complexity)\n\nAn extension for flake8 that validates expression complexity.\n\nSplits code into expression and scores each according to how much one is complicated.\nFires an error on each expression more complex than theshold.\n\nDefault complexity is 7, can be configured via `--max-expression-complexity` option.\n\nSince Django ORM queries can produce long and readable expressions,\nchecker can skip them. To enable this behaviour,\nuse `--ignore-django-orm-queries-complexity` option.\n\n## Installation\n\n```terminal\npip install flake8-expression-complexity\n```\n\n## Example\n\n```python\nif (\n (user and user.is_authorized)\n and user.subscriptions.filter(start_date__lt=today, end_date__gt=today).exists()\n and (\n user.total_credits_added\n - Check.objects.filter(user=user).aggregate(Sum('price'))['check__sum']\n )\n and UserAction.objects.filter(user=user).last().datetime > today - datetime.timedelta(days=10)\n):\n ...\n```\n\nUsage:\n\n```terminal\n$ flake8 --max-expression-complexity=3 test.py\ntext.py:2:5: ECE001 Expression is too complex (7.0 > 3)\n```\n\n## Error codes\n\n| Error code | Description |\n|:----------:|:---------------------------------:|\n| ECE001 | Expression is too complex (X > Y) |\n\n## Contributing\n\nWe would love you to contribute to our project. It's simple:\n\n1. Create an issue with bug you found or proposal you have.\n Wait for approve from maintainer.\n1. Create a pull request. Make sure all checks are green.\n1. Fix review comments if any.\n1. Be awesome.\n\nHere are useful tips:\n\n- You can run all checks and tests with `make check`.\n Please do it before TravisCI does.\n- We use [BestDoctor python styleguide](https://github.com/best-doctor/guides/blob/master/guides/en/python_styleguide.md).\n- We respect [Django CoC](https://www.djangoproject.com/conduct/).\n Make soft, not bullshit.\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/best-doctor/flake8-expression-complexity", "keywords": "flake8", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "flake8-expression-complexity", "package_url": "https://pypi.org/project/flake8-expression-complexity/", "platform": null, "project_url": "https://pypi.org/project/flake8-expression-complexity/", "project_urls": { "Homepage": "https://github.com/best-doctor/flake8-expression-complexity" }, "release_url": "https://pypi.org/project/flake8-expression-complexity/0.0.11/", "requires_dist": [ "astpretty", "flake8" ], "requires_python": ">=3.7", "summary": "A flake8 extension that checks expressions complexity", "version": "0.0.11", "yanked": false, "yanked_reason": null }, "last_serial": 13222783, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "5b6ae3df09c88f4b948a9bb71a479d4b", "sha256": "764b37e7cedc85117cb15d9475c4696c8ebfbe6e3d4f5c4baa0be9828f8ba8ee" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5b6ae3df09c88f4b948a9bb71a479d4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5316, "upload_time": "2019-10-30T06:17:04", "upload_time_iso_8601": "2019-10-30T06:17:04.601311Z", "url": "https://files.pythonhosted.org/packages/1e/77/ae637203a4e498f61540259e5a5a1856e15c972e2429c1cdb73327271658/flake8_expression_complexity-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "2207cbe540fa1eaa3306265efdc30cfb", "sha256": "42daa9f16e982083febafd2eecc2c98090cb50b5e60d3c08e4c0395803d16d32" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "2207cbe540fa1eaa3306265efdc30cfb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 8175, "upload_time": "2022-02-24T11:56:45", "upload_time_iso_8601": "2022-02-24T11:56:45.996662Z", "url": "https://files.pythonhosted.org/packages/de/8c/d9a1473b96f98015649cad2ca62ea4d439dea72fd3e6908e0043c376c7d0/flake8_expression_complexity-0.0.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "38409caf9f14a194b35d1b6275a4125a", "sha256": "2c91a55601077a555dcd3e5998063773585b323b63fec654e2b674867f3e0040" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.10.tar.gz", "has_sig": false, "md5_digest": "38409caf9f14a194b35d1b6275a4125a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 7048, "upload_time": "2022-02-24T11:56:47", "upload_time_iso_8601": "2022-02-24T11:56:47.727283Z", "url": "https://files.pythonhosted.org/packages/4a/03/db7688ca5a8f18eeff4a029c2d2cc55c2c65efb486e2871f10e8ce603abc/flake8_expression_complexity-0.0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "b806a6ba0bb47ad3c44bcf7e96a90eb7", "sha256": "b56bac37f7dd5d3d102a7111c89f6579c2cbd897b868147794c9ed12aadc627c" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "b806a6ba0bb47ad3c44bcf7e96a90eb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 8235, "upload_time": "2022-03-19T07:13:03", "upload_time_iso_8601": "2022-03-19T07:13:03.128527Z", "url": "https://files.pythonhosted.org/packages/bc/20/6707c990610d45a3a961345ad5fdabf096cac5a1ce8571581f5787453574/flake8_expression_complexity-0.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f621be803c47473db0f1cfc0bd6599fe", "sha256": "4dd8909fecbc20f53814cdcef9d0b04f61532764278d9b6e8026686812e96631" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.11.tar.gz", "has_sig": false, "md5_digest": "f621be803c47473db0f1cfc0bd6599fe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 7097, "upload_time": "2022-03-19T07:13:04", "upload_time_iso_8601": "2022-03-19T07:13:04.985206Z", "url": "https://files.pythonhosted.org/packages/19/71/5bfb69acbfd319add958c70b60e68aee8914d4a5e243b87f4fcda249cf7b/flake8_expression_complexity-0.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "e9d3f67e18059244d5b854982e90a2f2", "sha256": "97b0b4f4fbe4f69bd09280a2a1d3175baf8564e255c129254ae5d5fe8aab315f" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e9d3f67e18059244d5b854982e90a2f2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5559, "upload_time": "2019-11-04T04:29:11", "upload_time_iso_8601": "2019-11-04T04:29:11.164061Z", "url": "https://files.pythonhosted.org/packages/9a/54/99599681203caa53beec486e846f48f58ffaad76dedf7afca2ff8abb8d1a/flake8_expression_complexity-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e5c69b926cb1b41aa54c5739159ddf68", "sha256": "2c1a6c1bb169de7ebb13801e22f010635a1f8b4197ab4169a109525b43d7630f" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.3.tar.gz", "has_sig": false, "md5_digest": "e5c69b926cb1b41aa54c5739159ddf68", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5592, "upload_time": "2019-11-05T23:00:32", "upload_time_iso_8601": "2019-11-05T23:00:32.301888Z", "url": "https://files.pythonhosted.org/packages/de/69/30d87f2af4371119f36f7bed9f9babc8c62fa04c159595cdd3fbf0635e82/flake8_expression_complexity-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "517cfafa2b6ad204701965660622d949", "sha256": "750dfc458e8d5424bbd7625aaf54489e6c68d7247fd04d74641f3b8510e79927" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.4.tar.gz", "has_sig": false, "md5_digest": "517cfafa2b6ad204701965660622d949", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5598, "upload_time": "2019-11-13T08:08:19", "upload_time_iso_8601": "2019-11-13T08:08:19.324522Z", "url": "https://files.pythonhosted.org/packages/6f/11/a5316903d3729c24c220dd2c94432b878db0963abc6674b23c7ed05c3797/flake8_expression_complexity-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2a5a8100f7b09473f92e2025a7944e03", "sha256": "3411a3e4c030eba22acc3747ca21759bf00d50e0f0373dbd4b1f238b6a25d7df" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.5.tar.gz", "has_sig": false, "md5_digest": "2a5a8100f7b09473f92e2025a7944e03", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5635, "upload_time": "2020-01-09T20:17:14", "upload_time_iso_8601": "2020-01-09T20:17:14.569785Z", "url": "https://files.pythonhosted.org/packages/9a/07/3b1c4db3138942485ad19db4a18dd3b9360fb70f3d7f32c4881c9f7b129a/flake8_expression_complexity-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "2ef0f3ba568b46742435ce97afbf050d", "sha256": "a4f3a06772dcedd99aa21469fa6a5b1533cfe390c3218bdc4838ec01bd8374c5" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.6.tar.gz", "has_sig": false, "md5_digest": "2ef0f3ba568b46742435ce97afbf050d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6662, "upload_time": "2020-01-12T08:39:20", "upload_time_iso_8601": "2020-01-12T08:39:20.481121Z", "url": "https://files.pythonhosted.org/packages/9d/1c/282fe80ea1c3f0b7c8fd0cca7ff0e6307e47909560d9e978f4298a3783a6/flake8_expression_complexity-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "9316a9ba67859856ca3a1cc700f4c1c8", "sha256": "2378e0235a87c00b4ad7a9759dde1f9c71aebf344f53c9ffa0c2e2c4ee8cd142" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.7.tar.gz", "has_sig": false, "md5_digest": "9316a9ba67859856ca3a1cc700f4c1c8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5657, "upload_time": "2020-03-15T06:26:06", "upload_time_iso_8601": "2020-03-15T06:26:06.911494Z", "url": "https://files.pythonhosted.org/packages/94/02/2699e1205f1f5e7b13b43e65211b3e4fe157a6ce8668a048a99ff6ef954d/flake8_expression_complexity-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "3f4639c3e50391658ef33e30ed9ee579", "sha256": "c23f8ae677eb13b073be9bafa2cf443a87d3e2594817ba82c1f3e184e2de4afa" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.8.tar.gz", "has_sig": false, "md5_digest": "3f4639c3e50391658ef33e30ed9ee579", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6779, "upload_time": "2020-06-22T17:27:02", "upload_time_iso_8601": "2020-06-22T17:27:02.786780Z", "url": "https://files.pythonhosted.org/packages/43/17/e3caa3ba4fc1b2055c57b8882f4198c3b6b6865a7af152d26c2c0bf3a741/flake8_expression_complexity-0.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "62119dc798619577b867b48793edcf28", "sha256": "1ae325880a5dbfef60a35eaa8bb5351d5c5102774a41d4ed7059bc093a95955b" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.9.tar.gz", "has_sig": false, "md5_digest": "62119dc798619577b867b48793edcf28", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6752, "upload_time": "2021-01-14T14:36:01", "upload_time_iso_8601": "2021-01-14T14:36:01.038278Z", "url": "https://files.pythonhosted.org/packages/86/2d/251fa3ecfe33e391d96104b2c2c0ad2ad3ddaa6e76705fa52dafde263ff0/flake8_expression_complexity-0.0.9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b806a6ba0bb47ad3c44bcf7e96a90eb7", "sha256": "b56bac37f7dd5d3d102a7111c89f6579c2cbd897b868147794c9ed12aadc627c" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "b806a6ba0bb47ad3c44bcf7e96a90eb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 8235, "upload_time": "2022-03-19T07:13:03", "upload_time_iso_8601": "2022-03-19T07:13:03.128527Z", "url": "https://files.pythonhosted.org/packages/bc/20/6707c990610d45a3a961345ad5fdabf096cac5a1ce8571581f5787453574/flake8_expression_complexity-0.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f621be803c47473db0f1cfc0bd6599fe", "sha256": "4dd8909fecbc20f53814cdcef9d0b04f61532764278d9b6e8026686812e96631" }, "downloads": -1, "filename": "flake8_expression_complexity-0.0.11.tar.gz", "has_sig": false, "md5_digest": "f621be803c47473db0f1cfc0bd6599fe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 7097, "upload_time": "2022-03-19T07:13:04", "upload_time_iso_8601": "2022-03-19T07:13:04.985206Z", "url": "https://files.pythonhosted.org/packages/19/71/5bfb69acbfd319add958c70b60e68aee8914d4a5e243b87f4fcda249cf7b/flake8_expression_complexity-0.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }