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 <[email protected]>
+
+- 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 = "[email protected]" },
+]
+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 = [email protected]
-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
+
+
[email protected](
+ "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 == []
+
+
[email protected](
+ "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