-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
flake8 should enforce complexity checks #34
Comments
2 tasks
Here's a demo of what it'd mean for setuptools: pypa/setuptools#2518. |
Yes. Sounds good. |
jaraco
added a commit
that referenced
this issue
Jan 9, 2021
jaraco
added a commit
that referenced
this issue
Jan 9, 2021
* Use `extend-ignore` in flake8 config This option allows to add extra ignored rules to the default list instead of replacing it. The default exclusions are: E121, E123, E126, E226, E24, E704, W503 and W504. Fixes #28. Refs: * https://github.com/pypa/setuptools/pull/2486/files#r541943356 * https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-extend-ignore * https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-ignore * Enable complexity limit. Fixes #34. * Replace pep517.build with build (#37) * Replace pep517.build with build Resolves #30 * Prefer simple usage Co-authored-by: Jason R. Coombs <jaraco@jaraco.com> * Use license_files instead of license_file in meta (#35) Singular `license_file` is deprecated since wheel v0.32.0. Refs: * https://wheel.readthedocs.io/en/stable/news.html * https://wheel.readthedocs.io/en/stable/user_guide.html#including-license-files-in-the-generated-wheel-file Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
clrpackages
pushed a commit
to clearlinux-pkgs/setuptools
that referenced
this issue
Jan 19, 2021
…on 51.3.3 Daniel Moore (1): Clarify Development Mode first paragraph Drew (1): docs (build_meta): fix spelling mistake Dustin Ingram (3): Move helper method out of class Add failing test Correctly handle normalized tags Henry Schreiner (1): fix: suggest PyPA build instead of pep517.build Jason R. Coombs (22): pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Avoid hitting network during test_easy_install Point changelog at 2534 for more info Bump version: 51.1.2 → 51.2.0 Point changelog at 2534 for more info Disable PIP_NO_INDEX for tests that override the index. Ref #2534. Exclude _distutils from flake8 also. Rely on tuple argument to endswith Remove unused variable Quick fix for #1390. Now description cannot contain a newline. Bump version: 51.2.0 → 51.3.0 Revert "Merge pull request #2533 from pypa/fix/2529" Bump version: 51.3.0 → 51.3.1 Repair Descriptions with newlines and emit a warning that the value will be disallowed in the future. Bump version: 51.3.1 → 51.3.2 Fix AttributeError in Description validation. Fixes #2539. Bump version: 51.3.2 → 51.3.3 Jonathan E (1): Fix code typo in entry_point.rst Miro Hrončok (1): Define create_module()/exec_module() in VendorImporter Petr Viktorin (1): Avoid deprecated load_module() in pkg_resources namespace delaration Sviatoslav Sydorenko (23): Migrate to `extend-exclude` in flake8 config Exclude `build/lib/` artifacts in flake8 config Fix misplaced/mistyped per-file-ignores in flake8 Drop non-existing site-patch.py from flake8 Drop unmached py*compat.py ignore rule from flake8 Use `extend-ignore` in flake8 config Use license_files instead of license_file in meta Simplify `setuptools.archive_util.unpack_tarfile` Simplify `easy_install.install_eggs` Simplify `easy_install.update_pth` Simplify `command.easy_install.get_site_dirs` Simplify `command.easy_install.expand_paths` Simplify `egg_info.FileList.process_template_line` Simplify `dist.Distribution._parse_config_files` Simplify `setuptools.glob._iglob` Simplify `setuptools.installer.fetch_build_egg` Simplify `msvc.SystemInfo.find_reg_vs_vers` Simplify `PackageIndex.process_index` Apply noqa C901 comments to overly complex code Enable McCabe complexity check in flake8 Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33) Tim Hatch (2): Failing test for #2489 Find .egg-info in zipimport too YuanPei Li (3): fix typo Create 2525.doc.rst Update 2525.doc.rst
clrpackages
pushed a commit
to clearlinux-pkgs/keyring
that referenced
this issue
Jan 26, 2021
…22.0.0 Jason R. Coombs (9): Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Remove legacy __metaclass__ Enable complexity limit. Fixes jaraco/skeleton#34. Refactor cli.CommandLineTool.run for simplicity. Switch to argparse Remove output_password, no longer used for its intended purpose. Rename macOS backend to reflect the modern name inclusive of macOS 11. Sviatoslav Sydorenko (3): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33)
clrpackages
pushed a commit
to clearlinux-pkgs/portend
that referenced
this issue
Feb 16, 2021
….7.1 Jason R. Coombs (14): Honor TOX_WORK_DIR if set. Workaround for tox-dev/tox#20. Collapse skeleton history from archive/2020-12 Update skeleton description to describe the periodic collapse. Fixes #27. Enable automerge Automatically inject project name in docs heading. pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Normalize indentation ⚫ Fade to black. Update changelog. Sviatoslav Sydorenko (3): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33) vasyl_lukashuk (1): Fix error message
clrpackages
pushed a commit
to clearlinux-pkgs/pytest-runner
that referenced
this issue
Feb 16, 2021
…on 5.3.0 Diego Elio Pettenò (1): Fix README (and thus long_description). Hugo (1): Fix AppVeyor typo Hugo van Kemenade (2): Spelling and capitalisation (#8) Link badge to PyPI rather than static image Jason R. Coombs (75): Add Tidelift template Rely on alabaster theme to support sidebar rendering. Use nicer, simpler phrasing Add support for automatic publishing of release notes Use technique for environment passing matching that found in jaraco/skeleton Move Tidelift token into Travis configuration Update badge URL Add funding reference to project List sidebars to avoid errors looking for template 't' Python 3 only Test/release on Python 3.8 Apply black to docs/conf.py Update black version and links Expect flake8 3.6 or later and remove suppression of warnings from Flake8 prior to 3.6. Rely on pytest-checkdocs 1.2.3, eliminating workaround for docutils warning. Remove workaround for gitlab.com/PyCQA/flake8/issues/275, apparently no longer necessary. Normalize indentation Include keyring support from twine Rename 'build-docs' to simply 'docs' (matching more popular convention). Prefer 'path' to 'path.py' Cover Python 3.8 in Windows tests Update black in pre-commit and add blacken-docs. Test and release using Azure Pipelines Correct guidance on project creation. Rely on setuptools_scm 3.4 and setuptools 42. Now setup.py is optional. Remove setuptools from test environment. Finish dropping support for Python 2 (I hope). Normalize whitespace Revert "setup.cfg: let python-tag mirror python_requires" Update to bionic for Travis. Correct comment about IPv6 workaround. Suppress warnings in pytest-flake8, pytest-black, and pytest-checkdocs. Prefer pytest-black to pytest-black-multipy Test against Windows and Mac Define a default pool_vm_image Remove tox-venv and tox-pip-version. Tox-venv is discouraged (tox-dev/tox-venv#48 (comment)) and tox-pip-version was only there to support tox-venv. venv is dead; long live virtualenv. Remove more references to tox-venv Add workaround for warning emitted when junitxml is used. Ref pytest-dev/pytest#6178. Include mypy for type checking during tests. Ensure virtualenv is upgraded when installing tox. Fixes jaraco/path#188. Run tests on prereleases of Python on Windows. Fixes jaraco/skeleton#17. Add workaround for python/mypy#8627. Fixes jaraco/skeleton#18. Add 'refresh.svg' demonstrating an example of refreshing a project with the latest skeleton. Ref #7. Move workaround for python/mypy#8627 to tox.ini, as adding it to setup.cfg prevents releases to PyPI. Fixes jaraco/skeleton#19. Remove workaround for python/mypy#8627. Ref jaraco/skeleton#18. Create Github releases when releasing the package. Fixes jaraco/skeleton#23. Moved refresh.svg to another branch. Reference the animation from the docs. Ref jaraco/skeleton#7. Add the env var mapping too. Disable pytest-black and pytest-mypy on PyPy. Fixes jaraco/skeleton#22. Ref pytest-dev/pytest#7675. Bump black and blacken-docs to latest stable versions. Use enabled plugin configuration to enable mypy and black when the plugin is present. Ref jaraco/skeleton#22. Also enable flake8 and cov when the plugins are present. Add workflows for running tests. Ref jaraco/skeleton#24. Cut releases from Github Actions instead of Azure Pipelines. Ref jaraco/skeleton#24. Refresh docs to prefer Github Actions to Azure Pipelines. Ref jaraco/skeleton#24. Use RTD v2 config Test on Python 3.9. Skip 3.7 to avoid creating too many builds. Release on 3.9. Drop tests on Travis, Appveyor, and Azure Pipelines. use add-github-secrets, which infers the secrets needed from the github workflow. Use inline flags with local scope. Honor TOX_WORK_DIR if set. Workaround for tox-dev/tox#20. Collapse skeleton history from archive/2020-12 Update skeleton description to describe the periodic collapse. Fixes #27. Enable automerge Automatically inject project name in docs heading. pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Normalize indentation ⚫ Fade to black. Update changelog. Suppress test failures on Windows Use short link for issue Replace rwt with pip-run Sviatoslav Sydorenko (3): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33) Vincent Fazio (1): setup.cfg: let python-tag mirror python_requires johnthagen (1): Line wrap LICENSE file layday (1): Require toml extra for setuptools_scm (#12)
clrpackages
pushed a commit
to clearlinux-pkgs/jaraco.functools
that referenced
this issue
Feb 16, 2021
…version 3.2.0 Jason R. Coombs (9): Automatically inject project name in docs heading. pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Switch to PEP 420 namespace package Disable doctests as workaround for pytest-dev/pytest#3396. Sviatoslav Sydorenko (3): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33)
clrpackages
pushed a commit
to clearlinux-pkgs/zipp
that referenced
this issue
Mar 9, 2021
Jason R. Coombs (18): Use inline flags with local scope. Honor TOX_WORK_DIR if set. Workaround for tox-dev/tox#20. Collapse skeleton history from archive/2020-12 Update skeleton description to describe the periodic collapse. Fixes #27. Enable automerge Automatically inject project name in docs heading. pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Disable 2020-resolver. Workaround for pypa/pip#9143. Normalize indentation Exclude dist from discovered packages. Fixes jaraco/skeleton#46. It's no longer necessary to filter this warning and it's not a warning anymore. Bump minimum pytest Update changelog. KOLANICH (1): Added an .editorconfig. Pull request jaraco/skeleton#43. Sviatoslav Sydorenko (3): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33)
clrpackages
pushed a commit
to clearlinux-pkgs/tempora
that referenced
this issue
Apr 6, 2021
….0.2 Jason R. Coombs (16): Honor TOX_WORK_DIR if set. Workaround for tox-dev/tox#20. Collapse skeleton history from archive/2020-12 Update skeleton description to describe the periodic collapse. Fixes #27. Enable automerge Automatically inject project name in docs heading. pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Use pytest.mark to selectively skip test. Normalize indentation Exclude dist from discovered packages. Fixes jaraco/skeleton#46. Update changelog. Revert "Use pytest.mark to selectively skip test." KOLANICH (1): Added an .editorconfig. Pull request jaraco/skeleton#43. Sviatoslav Sydorenko (3): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33)
clrpackages
pushed a commit
to clearlinux-pkgs/jaraco.text
that referenced
this issue
Aug 19, 2021
…on 3.5.1 Brian Rutledge (1): Use shutil for rmtree Hugo (1): Fix AppVeyor typo Hugo van Kemenade (2): Spelling and capitalisation (#8) Link badge to PyPI rather than static image Jason R. Coombs (74): Python 3 only Cover Python 3.8 in Windows tests Update black in pre-commit and add blacken-docs. Test and release using Azure Pipelines Correct guidance on project creation. Rely on setuptools_scm 3.4 and setuptools 42. Now setup.py is optional. Remove setuptools from test environment. Finish dropping support for Python 2 (I hope). Normalize whitespace Revert "setup.cfg: let python-tag mirror python_requires" Update to bionic for Travis. Correct comment about IPv6 workaround. Suppress warnings in pytest-flake8, pytest-black, and pytest-checkdocs. Prefer pytest-black to pytest-black-multipy Test against Windows and Mac Define a default pool_vm_image Remove tox-venv and tox-pip-version. Tox-venv is discouraged (tox-dev/tox-venv#48 (comment)) and tox-pip-version was only there to support tox-venv. venv is dead; long live virtualenv. Remove more references to tox-venv Add workaround for warning emitted when junitxml is used. Ref pytest-dev/pytest#6178. Include mypy for type checking during tests. Ensure virtualenv is upgraded when installing tox. Fixes jaraco/path#188. Run tests on prereleases of Python on Windows. Fixes jaraco/skeleton#17. Add workaround for python/mypy#8627. Fixes jaraco/skeleton#18. Add 'refresh.svg' demonstrating an example of refreshing a project with the latest skeleton. Ref #7. Move workaround for python/mypy#8627 to tox.ini, as adding it to setup.cfg prevents releases to PyPI. Fixes jaraco/skeleton#19. Remove workaround for python/mypy#8627. Ref jaraco/skeleton#18. Create Github releases when releasing the package. Fixes jaraco/skeleton#23. Moved refresh.svg to another branch. Reference the animation from the docs. Ref jaraco/skeleton#7. Add the env var mapping too. Disable pytest-black and pytest-mypy on PyPy. Fixes jaraco/skeleton#22. Ref pytest-dev/pytest#7675. Bump black and blacken-docs to latest stable versions. Use enabled plugin configuration to enable mypy and black when the plugin is present. Ref jaraco/skeleton#22. Also enable flake8 and cov when the plugins are present. Add workflows for running tests. Ref jaraco/skeleton#24. Cut releases from Github Actions instead of Azure Pipelines. Ref jaraco/skeleton#24. Refresh docs to prefer Github Actions to Azure Pipelines. Ref jaraco/skeleton#24. Use RTD v2 config 🧎♀️ Genuflect to the types. Remove compatibility code. Update changelog. Test on Python 3.9. Skip 3.7 to avoid creating too many builds. Release on 3.9. Drop tests on Travis, Appveyor, and Azure Pipelines. use add-github-secrets, which infers the secrets needed from the github workflow. Use inline flags with local scope. Honor TOX_WORK_DIR if set. Workaround for tox-dev/tox#20. Collapse skeleton history from archive/2020-12 Update skeleton description to describe the periodic collapse. Fixes #27. Enable automerge Add trim methods to WordSet 🧎♀️ Genuflect to the types. Automatically inject project name in docs heading. pre-commit autoupdate Rename 'Automated Tests' to simply 'tests' Add note about automatic merging of PRs and the requirements and limitations. Prefer pytest-enabler to jaraco.test Enable complexity limit. Fixes jaraco/skeleton#34. Add support for namespace packages. Closes jaraco/skeleton#40. Normalize indentation Rely on PEP 420 for namespace package Update changelog. Exclude dist from discovered packages. Fixes jaraco/skeleton#46. It's no longer necessary to filter this warning and it's not a warning anymore. Bump minimum pytest Require twine 3 with keyring unconditionally required. Add comments indicating why the exclusions are present Exclude mypy on Python 3.10 as workaround for python/typed_ast#156. Bump minimums on pytest-checkdocs and pytest-enabler as found on Setuptools. Also deny black on Python 3.10 as workaround for python/typed_ast#156. Add leading */ to coverage.run.omit. Workaround for pytest-dev/pytest-cov#456. Remove automerge. Fixes jaraco/skeleton#49. Enable dependabot (#50) Replace md file with badge linking to documentation site. Fixes jaraco/skeleton#47. Test on Python 3.10 Remove setup_requires, obviated by build-requires in pyproject.toml. Suppress deprecation warnings in flake8 and packaging.tags. Ref pypa/packaging#433. Fix syntax for in_. Closes #5. KOLANICH (1): Added an .editorconfig. Pull request jaraco/skeleton#43. Sviatoslav Sydorenko (4): Replace pep517.build with build (#37) Use license_files instead of license_file in meta (#35) Use `extend-ignore` in flake8 config (#33) Make sphinx fail on any warnings (#36) Vincent Fazio (1): setup.cfg: let python-tag mirror python_requires johnthagen (1): Line wrap LICENSE file layday (1): Require toml extra for setuptools_scm (#12)
jaraco
added a commit
to jaraco/jaraco.vcs
that referenced
this issue
Jun 20, 2023
* Use `extend-ignore` in flake8 config This option allows to add extra ignored rules to the default list instead of replacing it. The default exclusions are: E121, E123, E126, E226, E24, E704, W503 and W504. Fixes #28. Refs: * https://github.com/pypa/setuptools/pull/2486/files#r541943356 * https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-extend-ignore * https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-ignore * Enable complexity limit. Fixes jaraco/skeleton#34. * Replace pep517.build with build (#37) * Replace pep517.build with build Resolves #30 * Prefer simple usage Co-authored-by: Jason R. Coombs <jaraco@jaraco.com> * Use license_files instead of license_file in meta (#35) Singular `license_file` is deprecated since wheel v0.32.0. Refs: * https://wheel.readthedocs.io/en/stable/news.html * https://wheel.readthedocs.io/en/stable/user_guide.html#including-license-files-in-the-generated-wheel-file Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
flake8 supports checking the McCabe complexity metric but it's historically disabled by default.
https://flake8.pycqa.org/en/2.5.5/#quickstart and https://en.wikipedia.org/wiki/Cyclomatic_complexity suggest that it's recommended to set
max-complexity=10
in the config.I use it in many projects and I like how it helps to keep the code simple. Of course, it's harder to apply this against a legacy codebase but it's worth it. In case, when there's many violations, the strategy I normally use is applying it gradually: you can use
per-file-ignores
for temporary module-global exclusions andnoqa
markers when it makes sense to be more granular, and then I eliminate each of those over time.P.S. There's other complexity checks that are provided via third-party plugins but cyclomatic complexity is a good start. See https://sobolevn.me/2019/10/complexity-waterfall.
The text was updated successfully, but these errors were encountered: