commit python-flake8-comprehensions for openSUSE:Factory
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-flake8-comprehensions for openSUSE:Factory checked in at 2024-07-01 11:22:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-flake8-comprehensions (Old) and /work/SRC/openSUSE:Factory/.python-flake8-comprehensions.new.18349 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-flake8-comprehensions" Mon Jul 1 11:22:14 2024 rev:15 rq:1184214 version:3.15.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-flake8-comprehensions/python-flake8-comprehensions.changes 2024-02-29 21:50:37.278575809 +0100 +++ /work/SRC/openSUSE:Factory/.python-flake8-comprehensions.new.18349/python-flake8-comprehensions.changes 2024-07-01 11:23:05.448994367 +0200 @@ -1,0 +2,7 @@ +Mon Jul 1 07:37:44 UTC 2024 - Dirk Müller <dmueller@suse.com> + +- update to 3.15.0: + * Add rule C420 to check for dict comprehensions with constant + values, encouraging replacement with dict.fromkeys(). + +------------------------------------------------------------------- Old: ---- flake8-comprehensions-3.14.0-gh.tar.gz New: ---- flake8-comprehensions-3.15.0-gh.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-flake8-comprehensions.spec ++++++ --- /var/tmp/diff_new_pack.OUf7wb/_old 2024-07-01 11:23:05.957012753 +0200 +++ /var/tmp/diff_new_pack.OUf7wb/_new 2024-07-01 11:23:05.957012753 +0200 @@ -17,7 +17,7 @@ Name: python-flake8-comprehensions -Version: 3.14.0 +Version: 3.15.0 Release: 0 Summary: A flake8 plugin to help you write better list/set/dict comprehensions License: ISC ++++++ flake8-comprehensions-3.14.0-gh.tar.gz -> flake8-comprehensions-3.15.0-gh.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/.github/FUNDING.yml new/flake8-comprehensions-3.15.0/.github/FUNDING.yml --- old/flake8-comprehensions-3.14.0/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/flake8-comprehensions-3.15.0/.github/FUNDING.yml 2024-06-30 00:29:44.000000000 +0200 @@ -0,0 +1,3 @@ +tidelift: pypi/flake8-comprehensions +custom: +- "https://adamj.eu/books/" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/.github/dependabot.yml new/flake8-comprehensions-3.15.0/.github/dependabot.yml --- old/flake8-comprehensions-3.14.0/.github/dependabot.yml 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/.github/dependabot.yml 2024-06-30 00:29:44.000000000 +0200 @@ -2,5 +2,9 @@ updates: - package-ecosystem: github-actions directory: "/" + groups: + "GitHub Actions": + patterns: + - "*" schedule: interval: weekly diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/.github/workflows/main.yml new/flake8-comprehensions-3.15.0/.github/workflows/main.yml --- old/flake8-comprehensions-3.14.0/.github/workflows/main.yml 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/.github/workflows/main.yml 2024-06-30 00:29:44.000000000 +0200 @@ -25,9 +25,9 @@ - '3.12' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} allow-prereleases: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/.pre-commit-config.yaml new/flake8-comprehensions-3.15.0/.pre-commit-config.yaml --- old/flake8-comprehensions-3.14.0/.pre-commit-config.yaml 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/.pre-commit-config.yaml 2024-06-30 00:29:44.000000000 +0200 @@ -1,9 +1,9 @@ default_language_version: - python: python3.11 + python: python3.12 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.6.0 hooks: - id: check-added-large-files - id: check-case-conflict @@ -14,62 +14,49 @@ - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/tox-dev/pyproject-fmt - rev: 0.12.1 + rev: 2.1.3 hooks: - id: pyproject-fmt -- repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.4.0 - hooks: - - id: setup-cfg-fmt - args: - - --include-version-classifiers - - --max-py-version - - '3.12' - repo: https://github.com/tox-dev/tox-ini-fmt rev: 1.3.1 hooks: - id: tox-ini-fmt - repo: https://github.com/rstcheck/rstcheck - rev: v6.1.2 + rev: v6.2.0 hooks: - id: rstcheck additional_dependencies: - tomli==2.0.1 - repo: https://github.com/asottile/pyupgrade - rev: v3.8.0 + rev: v3.16.0 hooks: - id: pyupgrade args: [--py38-plus] -- repo: https://github.com/psf/black - rev: 23.3.0 +- repo: https://github.com/psf/black-pre-commit-mirror + rev: 24.4.2 hooks: - id: black - repo: https://github.com/adamchainz/blacken-docs - rev: 1.14.0 + rev: 1.16.0 hooks: - id: blacken-docs additional_dependencies: - black==23.1.0 -- repo: https://github.com/asottile/reorder-python-imports - rev: v3.10.0 +- repo: https://github.com/pycqa/isort + rev: 5.13.2 hooks: - - id: reorder-python-imports - args: - - --py38-plus - - --application-directories - - .:example:src - - --add-import - - 'from __future__ import annotations' + - id: isort + name: isort (python) - repo: https://github.com/PyCQA/flake8 - rev: 6.0.0 + rev: 7.1.0 hooks: - id: flake8 additional_dependencies: - flake8-bugbear - flake8-comprehensions + - flake8-logging - flake8-tidy-imports - - flake8-typing-imports - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.4.1 + rev: v1.10.0 hooks: - id: mypy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/CHANGELOG.rst new/flake8-comprehensions-3.15.0/CHANGELOG.rst --- old/flake8-comprehensions-3.14.0/CHANGELOG.rst 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/CHANGELOG.rst 2024-06-30 00:29:44.000000000 +0200 @@ -2,6 +2,13 @@ Changelog ========= +3.15.0 (2024-06-29) +------------------- + +* Add rule C420 to check for dict comprehensions with constant values, encouraging replacement with ``dict.fromkeys()``. + + Thanks to Tom Kuson in `PR #553 <https://github.com/adamchainz/flake8-comprehensions/pull/553>`__. + 3.14.0 (2023-07-10) ------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/README.rst new/flake8-comprehensions-3.15.0/README.rst --- old/flake8-comprehensions-3.14.0/README.rst 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/README.rst 2024-06-30 00:29:44.000000000 +0200 @@ -2,7 +2,7 @@ flake8-comprehensions ===================== -.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/flake8-comprehensions/main.yml?branch=main&style=for-the-badge +.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/flake8-comprehensions/main.yml.svg?branch=main&style=for-the-badge :target: https://github.com/adamchainz/flake8-comprehensions/actions?workflow=CI .. image:: https://img.shields.io/pypi/v/flake8-comprehensions.svg?style=for-the-badge @@ -15,7 +15,14 @@ :target: https://github.com/pre-commit/pre-commit :alt: pre-commit -A `flake8 <https://flake8.readthedocs.io/en/latest/index.html>`_ plugin that helps you write better list/set/dict comprehensions. +A `flake8 <https://flake8.readthedocs.io/en/latest/>`_ plugin that helps you write better list/set/dict comprehensions. + +---- + +**Linting a Django project?** +Check out my book `Boost Your Django DX <https://adamchainz.gumroad.com/l/byddx>`__ which covers Flake8 and many other code quality tools. + +---- Requirements ============ @@ -34,13 +41,6 @@ Second, if you define Flake8’s ``select`` setting, add the ``C4`` prefix to it. Otherwise, the plugin should be active by default. ----- - -**Linting a Django project?** -Check out my book `Boost Your Django DX <https://adamchainz.gumroad.com/l/byddx>`__ which covers Flake8 and many other code quality tools. - ----- - Rules ===== @@ -227,3 +227,13 @@ * Rewrite ``all([condition(x) for x in iterable])`` as ``all(condition(x) for x in iterable)`` * Rewrite ``any([condition(x) for x in iterable])`` as ``any(condition(x) for x in iterable)`` + +C420: Unnecessary dict comprehension - rewrite using dict.fromkeys(). +---------------------------------------------------------------------- + +It's unnecessary to use a dict comprehension to build a dict with all values set to the same constant. +Use ``dict.fromkeys()`` instead, which is faster. +For example: + +* Rewrite ``{x: 1 for x in iterable}`` as ``dict.fromkeys(iterable, 1)`` +* Rewrite ``{x: None for x in iterable}`` as ``dict.fromkeys(iterable)`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/pyproject.toml new/flake8-comprehensions-3.15.0/pyproject.toml --- old/flake8-comprehensions-3.14.0/pyproject.toml 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/pyproject.toml 2024-06-30 00:29:44.000000000 +0200 @@ -4,8 +4,48 @@ "setuptools", ] -[tool.black] -target-version = ['py38'] +[project] +name = "flake8-comprehensions" +version = "3.15.0" +description = "A flake8 plugin to help you write better list/set/dict comprehensions." +readme = "README.rst" +keywords = [ + "comprehensions", + "dict comprehension", + "flake8", + "list comprehension", + "set comprehension", +] +authors = [ + { name = "Adam Johnson", email = "me@adamj.eu" }, +] +requires-python = ">=3.8" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Framework :: Flake8", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Typing :: Typed", +] +dependencies = [ + "flake8!=3.2,>=3", +] +urls = { Changelog = "https://github.com/adamchainz/flake8-comprehensions/blob/main/CHANGELOG.rst", Funding = "https://adamj.eu/books/", Repository = "https://github.com/adamchainz/flake8-comprehensions" } +entry-points."flake8.extension".C4 = "flake8_comprehensions:ComprehensionChecker" + +[tool.isort] +add_imports = [ + "from __future__ import annotations", +] +force_single_line = true +profile = "black" [tool.pytest.ini_options] addopts = """\ @@ -14,9 +54,13 @@ """ [tool.mypy] +enable_error_code = [ + "ignore-without-code", + "redundant-expr", + "truthy-bool", +] mypy_path = "src/" namespace_packages = false -show_error_codes = true strict = true warn_unreachable = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/compile.py new/flake8-comprehensions-3.15.0/requirements/compile.py --- old/flake8-comprehensions-3.14.0/requirements/compile.py 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/compile.py 2024-06-30 00:29:44.000000000 +0200 @@ -4,41 +4,23 @@ import os import subprocess import sys +from functools import partial from pathlib import Path if __name__ == "__main__": os.chdir(Path(__file__).parent) - os.environ["CUSTOM_COMPILE_COMMAND"] = "requirements/compile.py" - os.environ["PIP_REQUIRE_VIRTUALENV"] = "0" common_args = [ - "-m", - "piptools", + "uv", + "pip", "compile", + "--quiet", "--generate-hashes", - "--allow-unsafe", - ] + sys.argv[1:] - subprocess.run( - ["python3.8", *common_args, "-o", "py38.txt"], - check=True, - capture_output=True, - ) - subprocess.run( - ["python3.9", *common_args, "-o", "py39.txt"], - check=True, - capture_output=True, - ) - subprocess.run( - ["python3.10", *common_args, "-o", "py310.txt"], - check=True, - capture_output=True, - ) - subprocess.run( - ["python3.11", *common_args, "-o", "py311.txt"], - check=True, - capture_output=True, - ) - subprocess.run( - ["python3.12", *common_args, "-o", "py312.txt"], - check=True, - capture_output=True, - ) + "requirements.in", + *sys.argv[1:], + ] + run = partial(subprocess.run, check=True) + run([*common_args, "--python", "3.8", "--output-file", "py38.txt"]) + run([*common_args, "--python", "3.9", "--output-file", "py39.txt"]) + run([*common_args, "--python", "3.10", "--output-file", "py310.txt"]) + run([*common_args, "--python", "3.11", "--output-file", "py311.txt"]) + run([*common_args, "--python", "3.12", "--output-file", "py312.txt"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/py310.txt new/flake8-comprehensions-3.15.0/requirements/py310.txt --- old/flake8-comprehensions-3.14.0/requirements/py310.txt 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/py310.txt 2024-06-30 00:29:44.000000000 +0200 @@ -1,16 +1,12 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# requirements/compile.py -# -exceptiongroup==1.1.1 \ - --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ - --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 +# This file was autogenerated by uv via the following command: +# uv pip compile --generate-hashes requirements.in --python 3.10 --output-file py310.txt +exceptiongroup==1.2.1 \ + --hash=sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad \ + --hash=sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16 # via pytest -flake8==6.0.0 \ - --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ - --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 +flake8==7.0.0 \ + --hash=sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132 \ + --hash=sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3 # via pytest-flake8-path iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ @@ -20,36 +16,36 @@ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e # via flake8 -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 # via pytest -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 # via pytest -pycodestyle==2.10.0 \ - --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ - --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 +pycodestyle==2.11.1 \ + --hash=sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f \ + --hash=sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67 # via flake8 -pyflakes==3.0.1 \ - --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ - --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd +pyflakes==3.2.0 \ + --hash=sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f \ + --hash=sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a # via flake8 -pytest==7.3.2 \ - --hash=sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295 \ - --hash=sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b +pytest==8.2.2 \ + --hash=sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343 \ + --hash=sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977 # via # -r requirements.in # pytest-flake8-path # pytest-randomly -pytest-flake8-path==1.4.0 \ - --hash=sha256:b1c21f599158c90b68a16d301d1ffa19d25c297ef22f0ca4560160065a852e8b \ - --hash=sha256:c873d169e4ea5ab889413212bc33eb13d653c0e7f6c630fce6dc982076a228b7 +pytest-flake8-path==1.5.0 \ + --hash=sha256:2c144a3127995d34e82df397350dbef7780c9920c5b7e9ebc81f63299011381e \ + --hash=sha256:8766879344883e67762fc3f4f8f0d624a0d143de71f6488788599b3583e279a9 # via -r requirements.in -pytest-randomly==3.12.0 \ - --hash=sha256:d60c2db71ac319aee0fc6c4110a7597d611a8b94a5590918bfa8583f00caccb2 \ - --hash=sha256:f4f2e803daf5d1ba036cc22bf4fe9dbbf99389ec56b00e5cba732fb5c1d07fdd +pytest-randomly==3.15.0 \ + --hash=sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6 \ + --hash=sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047 # via -r requirements.in tomli==2.0.1 \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/py311.txt new/flake8-comprehensions-3.15.0/requirements/py311.txt --- old/flake8-comprehensions-3.14.0/requirements/py311.txt 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/py311.txt 2024-06-30 00:29:44.000000000 +0200 @@ -1,12 +1,8 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# requirements/compile.py -# -flake8==6.0.0 \ - --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ - --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 +# This file was autogenerated by uv via the following command: +# uv pip compile --generate-hashes requirements.in --python 3.11 --output-file py311.txt +flake8==7.0.0 \ + --hash=sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132 \ + --hash=sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3 # via pytest-flake8-path iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ @@ -16,34 +12,34 @@ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e # via flake8 -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 # via pytest -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 # via pytest -pycodestyle==2.10.0 \ - --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ - --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 +pycodestyle==2.11.1 \ + --hash=sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f \ + --hash=sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67 # via flake8 -pyflakes==3.0.1 \ - --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ - --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd +pyflakes==3.2.0 \ + --hash=sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f \ + --hash=sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a # via flake8 -pytest==7.3.2 \ - --hash=sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295 \ - --hash=sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b +pytest==8.2.2 \ + --hash=sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343 \ + --hash=sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977 # via # -r requirements.in # pytest-flake8-path # pytest-randomly -pytest-flake8-path==1.4.0 \ - --hash=sha256:b1c21f599158c90b68a16d301d1ffa19d25c297ef22f0ca4560160065a852e8b \ - --hash=sha256:c873d169e4ea5ab889413212bc33eb13d653c0e7f6c630fce6dc982076a228b7 +pytest-flake8-path==1.5.0 \ + --hash=sha256:2c144a3127995d34e82df397350dbef7780c9920c5b7e9ebc81f63299011381e \ + --hash=sha256:8766879344883e67762fc3f4f8f0d624a0d143de71f6488788599b3583e279a9 # via -r requirements.in -pytest-randomly==3.12.0 \ - --hash=sha256:d60c2db71ac319aee0fc6c4110a7597d611a8b94a5590918bfa8583f00caccb2 \ - --hash=sha256:f4f2e803daf5d1ba036cc22bf4fe9dbbf99389ec56b00e5cba732fb5c1d07fdd +pytest-randomly==3.15.0 \ + --hash=sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6 \ + --hash=sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047 # via -r requirements.in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/py312.txt new/flake8-comprehensions-3.15.0/requirements/py312.txt --- old/flake8-comprehensions-3.14.0/requirements/py312.txt 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/py312.txt 2024-06-30 00:29:44.000000000 +0200 @@ -1,12 +1,8 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# requirements/compile.py -# -flake8==6.0.0 \ - --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ - --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 +# This file was autogenerated by uv via the following command: +# uv pip compile --generate-hashes requirements.in --python 3.12 --output-file py312.txt +flake8==7.0.0 \ + --hash=sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132 \ + --hash=sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3 # via pytest-flake8-path iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ @@ -16,34 +12,34 @@ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e # via flake8 -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 # via pytest -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 # via pytest -pycodestyle==2.10.0 \ - --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ - --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 +pycodestyle==2.11.1 \ + --hash=sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f \ + --hash=sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67 # via flake8 -pyflakes==3.0.1 \ - --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ - --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd +pyflakes==3.2.0 \ + --hash=sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f \ + --hash=sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a # via flake8 -pytest==7.3.2 \ - --hash=sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295 \ - --hash=sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b +pytest==8.2.2 \ + --hash=sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343 \ + --hash=sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977 # via # -r requirements.in # pytest-flake8-path # pytest-randomly -pytest-flake8-path==1.4.0 \ - --hash=sha256:b1c21f599158c90b68a16d301d1ffa19d25c297ef22f0ca4560160065a852e8b \ - --hash=sha256:c873d169e4ea5ab889413212bc33eb13d653c0e7f6c630fce6dc982076a228b7 +pytest-flake8-path==1.5.0 \ + --hash=sha256:2c144a3127995d34e82df397350dbef7780c9920c5b7e9ebc81f63299011381e \ + --hash=sha256:8766879344883e67762fc3f4f8f0d624a0d143de71f6488788599b3583e279a9 # via -r requirements.in -pytest-randomly==3.12.0 \ - --hash=sha256:d60c2db71ac319aee0fc6c4110a7597d611a8b94a5590918bfa8583f00caccb2 \ - --hash=sha256:f4f2e803daf5d1ba036cc22bf4fe9dbbf99389ec56b00e5cba732fb5c1d07fdd +pytest-randomly==3.15.0 \ + --hash=sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6 \ + --hash=sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047 # via -r requirements.in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/py38.txt new/flake8-comprehensions-3.15.0/requirements/py38.txt --- old/flake8-comprehensions-3.14.0/requirements/py38.txt 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/py38.txt 2024-06-30 00:29:44.000000000 +0200 @@ -1,20 +1,16 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# requirements/compile.py -# -exceptiongroup==1.1.1 \ - --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ - --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 +# This file was autogenerated by uv via the following command: +# uv pip compile --generate-hashes requirements.in --python 3.8 --output-file py38.txt +exceptiongroup==1.2.1 \ + --hash=sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad \ + --hash=sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16 # via pytest -flake8==6.0.0 \ - --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ - --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 +flake8==7.0.0 \ + --hash=sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132 \ + --hash=sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3 # via pytest-flake8-path -importlib-metadata==6.6.0 \ - --hash=sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed \ - --hash=sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705 +importlib-metadata==7.1.0 \ + --hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \ + --hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2 # via pytest-randomly iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ @@ -24,42 +20,42 @@ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e # via flake8 -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 # via pytest -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 # via pytest -pycodestyle==2.10.0 \ - --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ - --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 +pycodestyle==2.11.1 \ + --hash=sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f \ + --hash=sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67 # via flake8 -pyflakes==3.0.1 \ - --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ - --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd +pyflakes==3.2.0 \ + --hash=sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f \ + --hash=sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a # via flake8 -pytest==7.3.2 \ - --hash=sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295 \ - --hash=sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b +pytest==8.2.2 \ + --hash=sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343 \ + --hash=sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977 # via # -r requirements.in # pytest-flake8-path # pytest-randomly -pytest-flake8-path==1.4.0 \ - --hash=sha256:b1c21f599158c90b68a16d301d1ffa19d25c297ef22f0ca4560160065a852e8b \ - --hash=sha256:c873d169e4ea5ab889413212bc33eb13d653c0e7f6c630fce6dc982076a228b7 +pytest-flake8-path==1.5.0 \ + --hash=sha256:2c144a3127995d34e82df397350dbef7780c9920c5b7e9ebc81f63299011381e \ + --hash=sha256:8766879344883e67762fc3f4f8f0d624a0d143de71f6488788599b3583e279a9 # via -r requirements.in -pytest-randomly==3.12.0 \ - --hash=sha256:d60c2db71ac319aee0fc6c4110a7597d611a8b94a5590918bfa8583f00caccb2 \ - --hash=sha256:f4f2e803daf5d1ba036cc22bf4fe9dbbf99389ec56b00e5cba732fb5c1d07fdd +pytest-randomly==3.15.0 \ + --hash=sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6 \ + --hash=sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047 # via -r requirements.in tomli==2.0.1 \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f # via pytest -zipp==3.15.0 \ - --hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \ - --hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556 +zipp==3.19.2 \ + --hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \ + --hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c # via importlib-metadata diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/py39.txt new/flake8-comprehensions-3.15.0/requirements/py39.txt --- old/flake8-comprehensions-3.14.0/requirements/py39.txt 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/py39.txt 2024-06-30 00:29:44.000000000 +0200 @@ -1,20 +1,16 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# requirements/compile.py -# -exceptiongroup==1.1.1 \ - --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ - --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 +# This file was autogenerated by uv via the following command: +# uv pip compile --generate-hashes requirements.in --python 3.9 --output-file py39.txt +exceptiongroup==1.2.1 \ + --hash=sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad \ + --hash=sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16 # via pytest -flake8==6.0.0 \ - --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ - --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 +flake8==7.0.0 \ + --hash=sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132 \ + --hash=sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3 # via pytest-flake8-path -importlib-metadata==6.6.0 \ - --hash=sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed \ - --hash=sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705 +importlib-metadata==7.1.0 \ + --hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \ + --hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2 # via pytest-randomly iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ @@ -24,42 +20,42 @@ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e # via flake8 -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 # via pytest -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 # via pytest -pycodestyle==2.10.0 \ - --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ - --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 +pycodestyle==2.11.1 \ + --hash=sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f \ + --hash=sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67 # via flake8 -pyflakes==3.0.1 \ - --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ - --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd +pyflakes==3.2.0 \ + --hash=sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f \ + --hash=sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a # via flake8 -pytest==7.3.2 \ - --hash=sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295 \ - --hash=sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b +pytest==8.2.2 \ + --hash=sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343 \ + --hash=sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977 # via # -r requirements.in # pytest-flake8-path # pytest-randomly -pytest-flake8-path==1.4.0 \ - --hash=sha256:b1c21f599158c90b68a16d301d1ffa19d25c297ef22f0ca4560160065a852e8b \ - --hash=sha256:c873d169e4ea5ab889413212bc33eb13d653c0e7f6c630fce6dc982076a228b7 +pytest-flake8-path==1.5.0 \ + --hash=sha256:2c144a3127995d34e82df397350dbef7780c9920c5b7e9ebc81f63299011381e \ + --hash=sha256:8766879344883e67762fc3f4f8f0d624a0d143de71f6488788599b3583e279a9 # via -r requirements.in -pytest-randomly==3.12.0 \ - --hash=sha256:d60c2db71ac319aee0fc6c4110a7597d611a8b94a5590918bfa8583f00caccb2 \ - --hash=sha256:f4f2e803daf5d1ba036cc22bf4fe9dbbf99389ec56b00e5cba732fb5c1d07fdd +pytest-randomly==3.15.0 \ + --hash=sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6 \ + --hash=sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047 # via -r requirements.in tomli==2.0.1 \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f # via pytest -zipp==3.15.0 \ - --hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \ - --hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556 +zipp==3.19.2 \ + --hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \ + --hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c # via importlib-metadata diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/requirements/requirements.in new/flake8-comprehensions-3.15.0/requirements/requirements.in --- old/flake8-comprehensions-3.14.0/requirements/requirements.in 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/requirements/requirements.in 2024-06-30 00:29:44.000000000 +0200 @@ -1,4 +1,3 @@ -importlib-metadata ; python_version < "3.8" pytest pytest-flake8-path pytest-randomly diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/setup.cfg new/flake8-comprehensions-3.15.0/setup.cfg --- old/flake8-comprehensions-3.14.0/setup.cfg 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/setup.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,51 +0,0 @@ -[metadata] -name = flake8_comprehensions -version = 3.14.0 -description = A flake8 plugin to help you write better list/set/dict comprehensions. -long_description = file: README.rst -long_description_content_type = text/x-rst -url = https://github.com/adamchainz/flake8-comprehensions -author = Adam Johnson -author_email = me@adamj.eu -license = MIT -license_files = LICENSE -classifiers = - Development Status :: 5 - Production/Stable - Framework :: Flake8 - Intended Audience :: Developers - License :: OSI Approved :: MIT License - Natural Language :: English - Programming Language :: Python :: 3 - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3.12 - Typing :: Typed -keywords = flake8, comprehensions, list comprehension, set comprehension, dict comprehension -project_urls = - Changelog = https://github.com/adamchainz/flake8-comprehensions/blob/main/CHANGELOG.rst - Mastodon = https://fosstodon.org/@adamchainz - Twitter = https://twitter.com/adamchainz - -[options] -packages = find: -install_requires = - flake8!=3.2.0,>=3.0 -python_requires = >=3.8 -include_package_data = True -package_dir = - =src -zip_safe = False - -[options.packages.find] -where = src - -[options.entry_points] -flake8.extension = - C4 = flake8_comprehensions:ComprehensionChecker - -[flake8] -max-line-length = 88 -extend-ignore = E203 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/src/flake8_comprehensions/__init__.py new/flake8-comprehensions-3.15.0/src/flake8_comprehensions/__init__.py --- old/flake8-comprehensions-3.14.0/src/flake8_comprehensions/__init__.py 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/src/flake8_comprehensions/__init__.py 2024-06-30 00:29:44.000000000 +0200 @@ -46,6 +46,9 @@ "C419 Unnecessary list comprehension passed to {func}() prevents " + "short-circuiting - rewrite as a generator." ), + "C420": ( + "C420 Unnecessary {type} comprehension - rewrite using dict.fromkeys()." + ), } def run(self) -> Generator[tuple[int, int, str, type[Any]], None, None]: @@ -335,32 +338,47 @@ len(node.generators) == 1 and not node.generators[0].ifs and not node.generators[0].is_async - and ( - ( - isinstance(node, (ast.ListComp, ast.SetComp)) - and isinstance(node.elt, ast.Name) - and isinstance(node.generators[0].target, ast.Name) - and node.elt.id == node.generators[0].target.id + ): + if ( + isinstance(node, (ast.ListComp, ast.SetComp)) + and isinstance(node.elt, ast.Name) + and isinstance(node.generators[0].target, ast.Name) + and node.elt.id == node.generators[0].target.id + ) or ( + isinstance(node, ast.DictComp) + and isinstance(node.key, ast.Name) + and isinstance(node.value, ast.Name) + and isinstance(node.generators[0].target, ast.Tuple) + and len(node.generators[0].target.elts) == 2 + and isinstance(node.generators[0].target.elts[0], ast.Name) + and node.generators[0].target.elts[0].id == node.key.id + and isinstance(node.generators[0].target.elts[1], ast.Name) + and node.generators[0].target.elts[1].id == node.value.id + ): + yield ( + node.lineno, + node.col_offset, + self.messages["C416"].format( + type=comp_type[node.__class__] + ), + type(self), ) - or ( - isinstance(node, ast.DictComp) - and isinstance(node.key, ast.Name) - and isinstance(node.value, ast.Name) - and isinstance(node.generators[0].target, ast.Tuple) - and len(node.generators[0].target.elts) == 2 - and isinstance(node.generators[0].target.elts[0], ast.Name) - and node.generators[0].target.elts[0].id == node.key.id - and isinstance(node.generators[0].target.elts[1], ast.Name) - and node.generators[0].target.elts[1].id == node.value.id + + elif ( + isinstance(node, ast.DictComp) + and isinstance(node.key, ast.Name) + and isinstance(node.value, ast.Constant) + and isinstance(node.generators[0].target, ast.Name) + and node.key.id == node.generators[0].target.id + ): + yield ( + node.lineno, + node.col_offset, + self.messages["C420"].format( + type=comp_type[node.__class__] + ), + type(self), ) - ) - ): - yield ( - node.lineno, - node.col_offset, - self.messages["C416"].format(type=comp_type[node.__class__]), - type(self), - ) def has_star_args(call_node: ast.Call) -> bool: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/tests/test_flake8_comprehensions.py new/flake8-comprehensions-3.15.0/tests/test_flake8_comprehensions.py --- old/flake8-comprehensions-3.14.0/tests/test_flake8_comprehensions.py 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/tests/test_flake8_comprehensions.py 2024-06-30 00:29:44.000000000 +0200 @@ -886,7 +886,7 @@ "code", [ "dict({}, a=1)", - "dict({x: 1 for x in range(1)}, a=1)", + "dict({x: [] for x in range(1)}, a=1)", ], ) def test_C418_pass(code, flake8_path): @@ -963,3 +963,58 @@ (flake8_path / "example.py").write_text(dedent(code)) result = flake8_path.run_flake8() assert result.out_lines == failures + + +@pytest.mark.parametrize( + "code", + [ + "{elt: elt * 2 for elt in range(5)}", + "{elt: [] for elt in foo}", + "{elt: {1, 2, 3} for elt in ['a', 'b', 'c']}", + "{elt: some_func() for elt in ['a', 'b', 'c']}", + "{elt: SomeClass() for elt in ['a', 'b', 'c']}", + ], +) +def test_C420_pass(code, flake8_path): + (flake8_path / "example.py").write_text(dedent(code)) + result = flake8_path.run_flake8() + assert result.out_lines == [] + + +@pytest.mark.parametrize( + "code,failures", + [ + ( + "{elt: None for elt in range(5)}", + [ + "./example.py:1:1: C420 Unnecessary dict comprehension - " + + "rewrite using dict.fromkeys()." + ], + ), + ( + "{elt: 1 for elt in foo}", + [ + "./example.py:1:1: C420 Unnecessary dict comprehension - " + + "rewrite using dict.fromkeys()." + ], + ), + ( + "{elt: 'value' for elt in ['a', 'b', 'c']}", + [ + "./example.py:1:1: C420 Unnecessary dict comprehension - " + + "rewrite using dict.fromkeys()." + ], + ), + ( + "{elt: True for elt in some_func()}", + [ + "./example.py:1:1: C420 Unnecessary dict comprehension - " + + "rewrite using dict.fromkeys()." + ], + ), + ], +) +def test_C420_fail(code, failures, flake8_path): + (flake8_path / "example.py").write_text(dedent(code)) + result = flake8_path.run_flake8() + assert result.out_lines == failures diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-comprehensions-3.14.0/tox.ini new/flake8-comprehensions-3.15.0/tox.ini --- old/flake8-comprehensions-3.14.0/tox.ini 2023-07-10 14:46:03.000000000 +0200 +++ new/flake8-comprehensions-3.15.0/tox.ini 2024-06-30 00:29:44.000000000 +0200 @@ -6,6 +6,7 @@ [testenv] package = wheel +wheel_build_env = .pkg deps = -r requirements/{envname}.txt set_env = @@ -16,3 +17,7 @@ -W error::DeprecationWarning \ -W error::PendingDeprecationWarning \ -m pytest {posargs:tests} + +[flake8] +max-line-length = 88 +extend-ignore = E203,E501
participants (1)
-
Source-Sync