Bump `ruff` to latest and fix code
diff --git a/isort/identify.py b/isort/identify.py index 077993d..57b6aa4 100644 --- a/isort/identify.py +++ b/isort/identify.py
@@ -159,7 +159,7 @@ from_import = parts[0].split(" ") import_string = (" cimport " if cimports else " import ").join( - [from_import[0] + " " + "".join(from_import[1:])] + parts[1:] + [from_import[0] + " " + "".join(from_import[1:]), *parts[1:]] ) just_imports = [
diff --git a/isort/main.py b/isort/main.py index af76630..caac71f 100644 --- a/isort/main.py +++ b/isort/main.py
@@ -1193,7 +1193,7 @@ print(ASCII_ART) if jobs: - import multiprocessing + import multiprocessing # noqa: PLC0415 executor = multiprocessing.Pool(jobs if jobs > 0 else multiprocessing.cpu_count()) attempt_iterator = executor.imap(
diff --git a/isort/parse.py b/isort/parse.py index fc462ac..ef284ea 100644 --- a/isort/parse.py +++ b/isort/parse.py
@@ -151,7 +151,7 @@ out_lines = [] original_line_count = len(in_lines) if config.old_finders: - from .deprecated.finders import FindersManager + from .deprecated.finders import FindersManager # noqa: PLC0415 finder = FindersManager(config=config).find else: @@ -372,7 +372,7 @@ from_import = parts[0].split(" ") import_string = (" cimport " if cimports else " import ").join( - [from_import[0] + " " + "".join(from_import[1:])] + parts[1:] + [from_import[0] + " " + "".join(from_import[1:]), *parts[1:]] ) just_imports = [
diff --git a/isort/settings.py b/isort/settings.py index d63016d..3fb1ff2 100644 --- a/isort/settings.py +++ b/isort/settings.py
@@ -931,9 +931,9 @@ TODO: The reason for lazy loading here are unknown. """ if sys.version_info < (3, 10): # pragma: no cover - from importlib_metadata import entry_points as ep + from importlib_metadata import entry_points as ep # noqa: PLC0415 else: - from importlib.metadata import entry_points as ep + from importlib.metadata import entry_points as ep # noqa: PLC0415 return ep(group=group)
diff --git a/pyproject.toml b/pyproject.toml index 6de2676..460e4ab 100644 --- a/pyproject.toml +++ b/pyproject.toml
@@ -138,7 +138,7 @@ "portray>=1.8.0", "pytest>=8.4.2", "pytest-benchmark>=5.1.0", - "ruff>=0.9.6", + "ruff>=0.13.3", "setuptools>=75.8.0", "stdlibs>=2024.10.21.16", "toml>=0.10.2", @@ -203,6 +203,7 @@ "B904", "E501", "PERF203", + "PT030", # Too much work to turn on for now "RUF100", ] lint.exclude = [ "isort/_vendored/*" ]
diff --git a/tests/unit/test_importable.py b/tests/unit/test_importable.py index 7b36d6e..279f8a2 100644 --- a/tests/unit/test_importable.py +++ b/tests/unit/test_importable.py
@@ -1,5 +1,7 @@ """Basic set of tests to ensure entire code base is importable""" +# ruff: noqa: PLC0415 + import pytest
diff --git a/tests/unit/test_isort.py b/tests/unit/test_isort.py index 5a1985a..b420e47 100644 --- a/tests/unit/test_isort.py +++ b/tests/unit/test_isort.py
@@ -20,6 +20,8 @@ from isort.exceptions import ExistingSyntaxErrors, FileSkipped, MissingSection from isort.settings import Config from isort.utils import exists_case_sensitive +from isort.main import parse_args +from isort.main import main from .utils import UnreadableStream, as_stream @@ -3762,12 +3764,10 @@ with pytest.raises(ImportError): # Previous versions of isort monkey patched urllib which caused unusual # importing for other projects. - from urllib import quote # type: ignore # noqa: F401 + from urllib import quote # type: ignore # noqa: F401, PLC0415 def test_argument_parsing() -> None: - from isort.main import parse_args - args = parse_args(["--dt", "-t", "foo", "--skip=bar", "baz.py", "--os"]) assert args["order_by_type"] is False assert args["force_to_top"] == ["foo"] @@ -3778,8 +3778,6 @@ @pytest.mark.parametrize("multiprocess", [False, True]) def test_command_line(tmpdir, capfd, multiprocess: bool) -> None: - from isort.main import main - tmpdir.join("file1.py").write("import re\nimport os\n\nimport contextlib\n\n\nimport isort") tmpdir.join("file2.py").write( "import collections\nimport time\n\nimport abc" "\n\n\nimport isort" @@ -3808,7 +3806,6 @@ def test_quiet(tmpdir, capfd, quiet: bool) -> None: if sys.platform.startswith("win"): return - from isort.main import main tmpdir.join("file1.py").write("import re\nimport os") tmpdir.join("file2.py").write("") @@ -4602,8 +4599,6 @@ def test_python_version() -> None: - from isort.main import parse_args - # test that the py_version can be added as flag args = parse_args(["--py=27"]) assert args["py_version"] == "27"
diff --git a/tests/unit/test_literal.py b/tests/unit/test_literal.py index 0fbd3ac..8fa5761 100644 --- a/tests/unit/test_literal.py +++ b/tests/unit/test_literal.py
@@ -15,7 +15,7 @@ def test_invalid_sort_type(): - with pytest.raises(ValueError, match="Trying to sort using an undefined sort_type. Defined"): + with pytest.raises(ValueError, match=r"Trying to sort using an undefined sort_type. Defined"): isort.literal.assignment("x = [1, 2, 3", "tuple-list-not-exist", "py")
diff --git a/tests/unit/test_main.py b/tests/unit/test_main.py index db37e81..8689ca3 100644 --- a/tests/unit/test_main.py +++ b/tests/unit/test_main.py
@@ -66,7 +66,7 @@ ): main.sort_imports(str(tmp_file), DEFAULT_CONFIG, check=True).incorrectly_sorted # type: ignore # noqa - out, error = capsys.readouterr() + _, error = capsys.readouterr() assert "Unrecoverable exception thrown when parsing" in error @@ -189,16 +189,19 @@ assert returned_config["virtual_env"] == str(tmpdir) # This should work even if settings path is not provided - main.main(base_args[2:] + ["--show-config"]) + main.main([*base_args[2:], "--show-config"]) out, error = capsys.readouterr() assert json.loads(out)["virtual_env"] == str(tmpdir) # This should raise an error if an invalid settings path is provided with pytest.raises(InvalidSettingsPath): main.main( - base_args[2:] - + ["--show-config"] - + ["--settings-path", "/random-root-folder-that-cant-exist-right?"] + [ + *base_args[2:], + "--show-config", + "--settings-path", + "/random-root-folder-that-cant-exist-right?", + ] ) # Should be able to set settings path to a file @@ -894,7 +897,7 @@ # should throw an error if only unsupported encoding provided with pytest.raises(SystemExit): main.main([str(tmp_file)]) - out, error = capsys.readouterr() + _, error = capsys.readouterr() assert "No valid encodings." in error @@ -903,7 +906,7 @@ normal_file.write("import os\nimport sys") main.main([str(tmp_file), str(normal_file), "--verbose"]) - out, error = capsys.readouterr() + _, error = capsys.readouterr() def test_stream_skip_file(tmpdir, capsys): @@ -914,13 +917,13 @@ """ stream_with_skip = as_stream(input_with_skip) main.main(["-"], stdin=stream_with_skip) - out, error = capsys.readouterr() + out, _ = capsys.readouterr() assert out == input_with_skip input_without_skip = input_with_skip.replace("isort: skip_file", "generic comment") stream_without_skip = as_stream(input_without_skip) main.main(["-"], stdin=stream_without_skip) - out, error = capsys.readouterr() + out, _ = capsys.readouterr() assert ( out == """ @@ -933,7 +936,7 @@ atomic_input_without_skip = input_with_skip.replace("isort: skip_file", "generic comment") stream_without_skip = as_stream(atomic_input_without_skip) main.main(["-", "--atomic"], stdin=stream_without_skip) - out, error = capsys.readouterr() + out, _ = capsys.readouterr() assert ( out == """
diff --git a/tests/unit/test_settings.py b/tests/unit/test_settings.py index d1711f1..2aacfc2 100644 --- a/tests/unit/test_settings.py +++ b/tests/unit/test_settings.py
@@ -34,7 +34,7 @@ Config(settings_path="this_couldnt_possibly_actually_exists/could_it") def test_invalid_pyversion(self): - with pytest.raises(ValueError, match="The python version 10 is not supported."): + with pytest.raises(ValueError, match=r"The python version 10 is not supported."): Config(py_version=10) def test_invalid_profile(self):
diff --git a/tests/unit/test_setuptools_command.py b/tests/unit/test_setuptools_command.py index cc2b945..33be2d2 100644 --- a/tests/unit/test_setuptools_command.py +++ b/tests/unit/test_setuptools_command.py
@@ -1,9 +1,9 @@ from isort import setuptools_commands +from setuptools.dist import Distribution def test_isort_command_smoke(src_dir): """A basic smoke test for the setuptools_commands command""" - from setuptools.dist import Distribution command = setuptools_commands.ISortCommand(Distribution()) command.distribution.packages = ["isort"]
diff --git a/uv.lock b/uv.lock index c190973..1cdf588 100644 --- a/uv.lock +++ b/uv.lock
@@ -1004,7 +1004,7 @@ { name = "portray", specifier = ">=1.8.0" }, { name = "pytest", specifier = ">=8.4.2" }, { name = "pytest-benchmark", specifier = ">=5.1.0" }, - { name = "ruff", specifier = ">=0.9.6" }, + { name = "ruff", specifier = ">=0.13.3" }, { name = "setuptools", specifier = ">=75.8.0" }, { name = "stdlibs", specifier = ">=2024.10.21.16" }, { name = "toml", specifier = ">=0.10.2" }, @@ -2356,27 +2356,28 @@ [[package]] name = "ruff" -version = "0.9.6" +version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/e1/e265aba384343dd8ddd3083f5e33536cd17e1566c41453a5517b5dd443be/ruff-0.9.6.tar.gz", hash = "sha256:81761592f72b620ec8fa1068a6fd00e98a5ebee342a3642efd84454f3031dca9", size = 3639454, upload-time = "2025-02-10T12:59:45.434Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/8e/f9f9ca747fea8e3ac954e3690d4698c9737c23b51731d02df999c150b1c9/ruff-0.13.3.tar.gz", hash = "sha256:5b0ba0db740eefdfbcce4299f49e9eaefc643d4d007749d77d047c2bab19908e", size = 5438533, upload-time = "2025-10-02T19:29:31.582Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/e3/3d2c022e687e18cf5d93d6bfa2722d46afc64eaa438c7fbbdd603b3597be/ruff-0.9.6-py3-none-linux_armv6l.whl", hash = "sha256:2f218f356dd2d995839f1941322ff021c72a492c470f0b26a34f844c29cdf5ba", size = 11714128, upload-time = "2025-02-10T12:58:44.418Z" }, - { url = "https://files.pythonhosted.org/packages/e1/22/aff073b70f95c052e5c58153cba735748c9e70107a77d03420d7850710a0/ruff-0.9.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b908ff4df65dad7b251c9968a2e4560836d8f5487c2f0cc238321ed951ea0504", size = 11682539, upload-time = "2025-02-10T12:58:49.157Z" }, - { url = "https://files.pythonhosted.org/packages/75/a7/f5b7390afd98a7918582a3d256cd3e78ba0a26165a467c1820084587cbf9/ruff-0.9.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b109c0ad2ececf42e75fa99dc4043ff72a357436bb171900714a9ea581ddef83", size = 11132512, upload-time = "2025-02-10T12:58:54.093Z" }, - { url = "https://files.pythonhosted.org/packages/a6/e3/45de13ef65047fea2e33f7e573d848206e15c715e5cd56095589a7733d04/ruff-0.9.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1de4367cca3dac99bcbd15c161404e849bb0bfd543664db39232648dc00112dc", size = 11929275, upload-time = "2025-02-10T12:58:57.909Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f2/23d04cd6c43b2e641ab961ade8d0b5edb212ecebd112506188c91f2a6e6c/ruff-0.9.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3ee4d7c2c92ddfdaedf0bf31b2b176fa7aa8950efc454628d477394d35638b", size = 11466502, upload-time = "2025-02-10T12:59:01.515Z" }, - { url = "https://files.pythonhosted.org/packages/b5/6f/3a8cf166f2d7f1627dd2201e6cbc4cb81f8b7d58099348f0c1ff7b733792/ruff-0.9.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dc1edd1775270e6aa2386119aea692039781429f0be1e0949ea5884e011aa8e", size = 12676364, upload-time = "2025-02-10T12:59:04.431Z" }, - { url = "https://files.pythonhosted.org/packages/f5/c4/db52e2189983c70114ff2b7e3997e48c8318af44fe83e1ce9517570a50c6/ruff-0.9.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4a091729086dffa4bd070aa5dab7e39cc6b9d62eb2bef8f3d91172d30d599666", size = 13335518, upload-time = "2025-02-10T12:59:07.497Z" }, - { url = "https://files.pythonhosted.org/packages/66/44/545f8a4d136830f08f4d24324e7db957c5374bf3a3f7a6c0bc7be4623a37/ruff-0.9.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1bbc6808bf7b15796cef0815e1dfb796fbd383e7dbd4334709642649625e7c5", size = 12823287, upload-time = "2025-02-10T12:59:11.527Z" }, - { url = "https://files.pythonhosted.org/packages/c5/26/8208ef9ee7431032c143649a9967c3ae1aae4257d95e6f8519f07309aa66/ruff-0.9.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:589d1d9f25b5754ff230dce914a174a7c951a85a4e9270613a2b74231fdac2f5", size = 14592374, upload-time = "2025-02-10T12:59:14.613Z" }, - { url = "https://files.pythonhosted.org/packages/31/70/e917781e55ff39c5b5208bda384fd397ffd76605e68544d71a7e40944945/ruff-0.9.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc61dd5131742e21103fbbdcad683a8813be0e3c204472d520d9a5021ca8b217", size = 12500173, upload-time = "2025-02-10T12:59:17.786Z" }, - { url = "https://files.pythonhosted.org/packages/84/f5/e4ddee07660f5a9622a9c2b639afd8f3104988dc4f6ba0b73ffacffa9a8c/ruff-0.9.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5e2d9126161d0357e5c8f30b0bd6168d2c3872372f14481136d13de9937f79b6", size = 11906555, upload-time = "2025-02-10T12:59:22.001Z" }, - { url = "https://files.pythonhosted.org/packages/f1/2b/6ff2fe383667075eef8656b9892e73dd9b119b5e3add51298628b87f6429/ruff-0.9.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:68660eab1a8e65babb5229a1f97b46e3120923757a68b5413d8561f8a85d4897", size = 11538958, upload-time = "2025-02-10T12:59:25.659Z" }, - { url = "https://files.pythonhosted.org/packages/3c/db/98e59e90de45d1eb46649151c10a062d5707b5b7f76f64eb1e29edf6ebb1/ruff-0.9.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c4cae6c4cc7b9b4017c71114115db0445b00a16de3bcde0946273e8392856f08", size = 12117247, upload-time = "2025-02-10T12:59:30.094Z" }, - { url = "https://files.pythonhosted.org/packages/ec/bc/54e38f6d219013a9204a5a2015c09e7a8c36cedcd50a4b01ac69a550b9d9/ruff-0.9.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:19f505b643228b417c1111a2a536424ddde0db4ef9023b9e04a46ed8a1cb4656", size = 12554647, upload-time = "2025-02-10T12:59:33.831Z" }, - { url = "https://files.pythonhosted.org/packages/a5/7d/7b461ab0e2404293c0627125bb70ac642c2e8d55bf590f6fce85f508f1b2/ruff-0.9.6-py3-none-win32.whl", hash = "sha256:194d8402bceef1b31164909540a597e0d913c0e4952015a5b40e28c146121b5d", size = 9949214, upload-time = "2025-02-10T12:59:36.923Z" }, - { url = "https://files.pythonhosted.org/packages/ee/30/c3cee10f915ed75a5c29c1e57311282d1a15855551a64795c1b2bbe5cf37/ruff-0.9.6-py3-none-win_amd64.whl", hash = "sha256:03482d5c09d90d4ee3f40d97578423698ad895c87314c4de39ed2af945633caa", size = 10999914, upload-time = "2025-02-10T12:59:40.026Z" }, - { url = "https://files.pythonhosted.org/packages/e8/a8/d71f44b93e3aa86ae232af1f2126ca7b95c0f515ec135462b3e1f351441c/ruff-0.9.6-py3-none-win_arm64.whl", hash = "sha256:0e2bb706a2be7ddfea4a4af918562fdc1bcb16df255e5fa595bbd800ce322a5a", size = 10177499, upload-time = "2025-02-10T12:59:42.989Z" }, + { url = "https://files.pythonhosted.org/packages/d2/33/8f7163553481466a92656d35dea9331095122bb84cf98210bef597dd2ecd/ruff-0.13.3-py3-none-linux_armv6l.whl", hash = "sha256:311860a4c5e19189c89d035638f500c1e191d283d0cc2f1600c8c80d6dcd430c", size = 12484040, upload-time = "2025-10-02T19:28:49.199Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b5/4a21a4922e5dd6845e91896b0d9ef493574cbe061ef7d00a73c61db531af/ruff-0.13.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2bdad6512fb666b40fcadb65e33add2b040fc18a24997d2e47fee7d66f7fcae2", size = 13122975, upload-time = "2025-10-02T19:28:52.446Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/15649af836d88c9f154e5be87e64ae7d2b1baa5a3ef317cb0c8fafcd882d/ruff-0.13.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fc6fa4637284708d6ed4e5e970d52fc3b76a557d7b4e85a53013d9d201d93286", size = 12346621, upload-time = "2025-10-02T19:28:54.712Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/bcbccb8141305f9a6d3f72549dd82d1134299177cc7eaf832599700f95a7/ruff-0.13.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c9e6469864f94a98f412f20ea143d547e4c652f45e44f369d7b74ee78185838", size = 12574408, upload-time = "2025-10-02T19:28:56.679Z" }, + { url = "https://files.pythonhosted.org/packages/ce/19/0f3681c941cdcfa2d110ce4515624c07a964dc315d3100d889fcad3bfc9e/ruff-0.13.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bf62b705f319476c78891e0e97e965b21db468b3c999086de8ffb0d40fd2822", size = 12285330, upload-time = "2025-10-02T19:28:58.79Z" }, + { url = "https://files.pythonhosted.org/packages/10/f8/387976bf00d126b907bbd7725219257feea58650e6b055b29b224d8cb731/ruff-0.13.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cc1abed87ce40cb07ee0667ce99dbc766c9f519eabfd948ed87295d8737c60", size = 13980815, upload-time = "2025-10-02T19:29:01.577Z" }, + { url = "https://files.pythonhosted.org/packages/0c/a6/7c8ec09d62d5a406e2b17d159e4817b63c945a8b9188a771193b7e1cc0b5/ruff-0.13.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4fb75e7c402d504f7a9a259e0442b96403fa4a7310ffe3588d11d7e170d2b1e3", size = 14987733, upload-time = "2025-10-02T19:29:04.036Z" }, + { url = "https://files.pythonhosted.org/packages/97/e5/f403a60a12258e0fd0c2195341cfa170726f254c788673495d86ab5a9a9d/ruff-0.13.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17b951f9d9afb39330b2bdd2dd144ce1c1335881c277837ac1b50bfd99985ed3", size = 14439848, upload-time = "2025-10-02T19:29:06.684Z" }, + { url = "https://files.pythonhosted.org/packages/39/49/3de381343e89364c2334c9f3268b0349dc734fc18b2d99a302d0935c8345/ruff-0.13.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6052f8088728898e0a449f0dde8fafc7ed47e4d878168b211977e3e7e854f662", size = 13421890, upload-time = "2025-10-02T19:29:08.767Z" }, + { url = "https://files.pythonhosted.org/packages/ab/b5/c0feca27d45ae74185a6bacc399f5d8920ab82df2d732a17213fb86a2c4c/ruff-0.13.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc742c50f4ba72ce2a3be362bd359aef7d0d302bf7637a6f942eaa763bd292af", size = 13444870, upload-time = "2025-10-02T19:29:11.234Z" }, + { url = "https://files.pythonhosted.org/packages/50/a1/b655298a1f3fda4fdc7340c3f671a4b260b009068fbeb3e4e151e9e3e1bf/ruff-0.13.3-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:8e5640349493b378431637019366bbd73c927e515c9c1babfea3e932f5e68e1d", size = 13691599, upload-time = "2025-10-02T19:29:13.353Z" }, + { url = "https://files.pythonhosted.org/packages/32/b0/a8705065b2dafae007bcae21354e6e2e832e03eb077bb6c8e523c2becb92/ruff-0.13.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6b139f638a80eae7073c691a5dd8d581e0ba319540be97c343d60fb12949c8d0", size = 12421893, upload-time = "2025-10-02T19:29:15.668Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/cbe7082588d025cddbb2f23e6dfef08b1a2ef6d6f8328584ad3015b5cebd/ruff-0.13.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6b547def0a40054825de7cfa341039ebdfa51f3d4bfa6a0772940ed351d2746c", size = 12267220, upload-time = "2025-10-02T19:29:17.583Z" }, + { url = "https://files.pythonhosted.org/packages/a5/99/4086f9c43f85e0755996d09bdcb334b6fee9b1eabdf34e7d8b877fadf964/ruff-0.13.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9cc48a3564423915c93573f1981d57d101e617839bef38504f85f3677b3a0a3e", size = 13177818, upload-time = "2025-10-02T19:29:19.943Z" }, + { url = "https://files.pythonhosted.org/packages/9b/de/7b5db7e39947d9dc1c5f9f17b838ad6e680527d45288eeb568e860467010/ruff-0.13.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1a993b17ec03719c502881cb2d5f91771e8742f2ca6de740034433a97c561989", size = 13618715, upload-time = "2025-10-02T19:29:22.527Z" }, + { url = "https://files.pythonhosted.org/packages/28/d3/bb25ee567ce2f61ac52430cf99f446b0e6d49bdfa4188699ad005fdd16aa/ruff-0.13.3-py3-none-win32.whl", hash = "sha256:f14e0d1fe6460f07814d03c6e32e815bff411505178a1f539a38f6097d3e8ee3", size = 12334488, upload-time = "2025-10-02T19:29:24.782Z" }, + { url = "https://files.pythonhosted.org/packages/cf/49/12f5955818a1139eed288753479ba9d996f6ea0b101784bb1fe6977ec128/ruff-0.13.3-py3-none-win_amd64.whl", hash = "sha256:621e2e5812b691d4f244638d693e640f188bacbb9bc793ddd46837cea0503dd2", size = 13455262, upload-time = "2025-10-02T19:29:26.882Z" }, + { url = "https://files.pythonhosted.org/packages/fe/72/7b83242b26627a00e3af70d0394d68f8f02750d642567af12983031777fc/ruff-0.13.3-py3-none-win_arm64.whl", hash = "sha256:9e9e9d699841eaf4c2c798fa783df2fabc680b72059a02ca0ed81c460bc58330", size = 12538484, upload-time = "2025-10-02T19:29:28.951Z" }, ] [[package]]