From 1d7bff31e4bf28724c37080a438defc6e518e39a Mon Sep 17 00:00:00 2001 From: detachhead Date: Thu, 7 Nov 2024 16:44:56 +1000 Subject: [PATCH] bump dependencies --- pytest_robotframework/__init__.py | 17 +++-- .../_internal/pytest/robot_file_support.py | 7 +- .../robot/listeners_and_suite_visitors.py | 9 ++- .../_internal/robot/utils.py | 3 +- tests/conftest.py | 4 +- .../conftest.py | 3 +- uv.lock | 76 +++++++++---------- 7 files changed, 67 insertions(+), 52 deletions(-) diff --git a/pytest_robotframework/__init__.py b/pytest_robotframework/__init__.py index 0690eff0..2b714cc3 100644 --- a/pytest_robotframework/__init__.py +++ b/pytest_robotframework/__init__.py @@ -14,7 +14,7 @@ from pathlib import Path from traceback import format_stack from types import TracebackType -from typing import TYPE_CHECKING, Callable, TypeVar, Union, cast, overload +from typing import TYPE_CHECKING, Callable, TypeVar, Union, cast, final, overload from basedtyping import Function, P, T from pytest import StashKey @@ -189,10 +189,10 @@ def __init__( doc: str | None = None, ) -> None: super().__init__() - self._name = name - self._tags = tags or () - self._module = module - self._doc = doc + self._name: str | None = name + self._tags: tuple[str, ...] = tags or () + self._module: str | None = module + self._doc: str | None = doc @staticmethod def _save_status_reporter_failure(exception: BaseException): @@ -357,6 +357,7 @@ def inner( ) -> T: T_WrappedContextManager = TypeVar("T_WrappedContextManager") + @final class WrappedContextManager(AbstractContextManager[object]): """defers exiting the status reporter until after the wrapped context manager is finished""" @@ -652,7 +653,7 @@ def __init__( fail_message: str | None = None, ) -> None: super().__init__() - self.log_pass = log_pass + self.log_pass: bool | None = log_pass """whether to display the assertion as a keyword in the robot log when it passes. by default, a passing `assert` statement will display in the robot log as long as the @@ -683,13 +684,13 @@ def __init__( assert foo == bar """ - self.description = description + self.description: str | None = description """normally, the asserted expression as it was written is displayed as the argument to the `assert` keyword in the robot log, but setting this value will display a custom message instead. when a custom description is used, the original expression is logged inside the keyword instead.""" - self.fail_message = fail_message + self.fail_message: str | None = fail_message """optional description for the `assert` statement that will be included in the `AssertionError` message if the assertion fails. equivalent to a normal `assert` statement's second argument""" diff --git a/pytest_robotframework/_internal/pytest/robot_file_support.py b/pytest_robotframework/_internal/pytest/robot_file_support.py index de72c060..7b0dbfa3 100644 --- a/pytest_robotframework/_internal/pytest/robot_file_support.py +++ b/pytest_robotframework/_internal/pytest/robot_file_support.py @@ -4,7 +4,7 @@ import dataclasses from contextlib import contextmanager -from typing import TYPE_CHECKING, Callable, cast +from typing import TYPE_CHECKING, Callable, cast, final from _pytest._code.code import ReprFileLocation, TerminalRepr from pytest import Config, ExceptionInfo, File, Item, MarkDecorator, Session, StashKey, mark, skip @@ -69,7 +69,10 @@ def collect(self) -> Iterable[Item]: ) -class RobotItem(Item): +@final +# some internal deprecated pytest thing is causing this false positive, but apparently it will be +# removed in the future +class RobotItem(Item): # pyright:ignore[reportUninitializedInstanceVariable] def __init__( self, *, diff --git a/pytest_robotframework/_internal/robot/listeners_and_suite_visitors.py b/pytest_robotframework/_internal/robot/listeners_and_suite_visitors.py index 4bb85a1d..1dd46501 100644 --- a/pytest_robotframework/_internal/robot/listeners_and_suite_visitors.py +++ b/pytest_robotframework/_internal/robot/listeners_and_suite_visitors.py @@ -9,7 +9,7 @@ from inspect import getdoc from re import sub from types import MethodType -from typing import TYPE_CHECKING, Callable, Final, Literal, Optional, TypeVar, cast +from typing import TYPE_CHECKING, Callable, Final, Literal, Optional, TypeVar, cast, final from _pytest import runner from _pytest.python import PyobjMixin @@ -78,6 +78,7 @@ def _create_running_keyword( return running.Keyword(name=f"{fn.__module__}.{fn.__name__}", args=args, type=keyword_type) +@final class PythonParser(Parser): """custom robot "parser" for python files. doesn't actually do any parsing, but instead relies on pytest collection already being run, so it can use the collected items to populate a robot @@ -197,6 +198,7 @@ def __init__(self) -> None: @catch_errors +@final class RobotSuiteCollector(SuiteVisitor): """used when running robot during collection to collect it the suites from `.robot` files so that pytest items can be created from them in `_internal.pytest.robot_file_support`""" @@ -220,6 +222,7 @@ def end_suite(self, suite: ModelTestSuite): @catch_errors +@final class RobotTestFilterer(SuiteVisitor): """ does the following to prepare the tests for execution: @@ -263,6 +266,7 @@ def end_suite(self, suite: ModelTestSuite): @catch_errors +@final class PytestRuntestProtocolInjector(SuiteVisitor): """injects the setup, call and teardown hooks from `_pytest.runner.pytest_runtest_protocol` into the robot test suite. this replaces any existing setup/body/teardown with said hooks, which may @@ -324,6 +328,7 @@ def start_suite(self, suite: ModelTestSuite): @catch_errors +@final class PytestRuntestProtocolHooks(ListenerV3): """runs the `pytest_runtest_logstart` and `pytest_runtest_logfinish` hooks from `pytest_runtest_protocol`. since all the other parts of `_pytest.runner.runtestprotocol` are @@ -495,6 +500,7 @@ def end_test( @catch_errors +@final class ErrorDetector(ListenerV3): """since errors logged by robot don't raise an exception and therefore won't cause the pytest test to fail (or even the robot test unless `--exitonerror` is enabled), we need to listen for @@ -544,6 +550,7 @@ def log_message(self, message: model.Message): @catch_errors +@final class AnsiLogger(ListenerV3): esc = "\N{ESCAPE}" diff --git a/pytest_robotframework/_internal/robot/utils.py b/pytest_robotframework/_internal/robot/utils.py index faf2f494..7b112ded 100644 --- a/pytest_robotframework/_internal/robot/utils.py +++ b/pytest_robotframework/_internal/robot/utils.py @@ -12,6 +12,7 @@ TypedDict, Union, cast, + final, ) from basedtyping import T @@ -150,11 +151,11 @@ class RobotOptions(TypedDict): """robot arguments that are not allowed because they conflict with pytest and/or this plugin""" +@final class Cloaked(Generic[T]): """allows you to pass arguments to robot keywords without them appearing in the log""" def __init__(self, value: T): - super().__init__() self.value = value @override diff --git a/tests/conftest.py b/tests/conftest.py index 1c8802fb..d850cc30 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,7 +6,7 @@ from pathlib import Path from shutil import copy, copytree from types import ModuleType -from typing import TYPE_CHECKING, Literal, cast, overload +from typing import TYPE_CHECKING, Literal, cast, final, overload from lxml.etree import ( XML, @@ -134,6 +134,7 @@ def _is_element_list(xpath_object: _XPathObject) -> TypeGuard[list[_Element]]: return result +@final class _XmlElement(Iterable["_XmlElement"]): def __init__(self, element: _Element) -> None: super().__init__() @@ -219,6 +220,7 @@ def assert_robot_total_stats(*, passed: int = 0, skipped: int = 0, failed: int = assert result == {"pass": str(passed), "fail": str(failed), "skip": str(skipped)} +@final class PytestRobotTester: def __init__(self, *, pytester: PytesterDir, xdist: int | None): super().__init__() diff --git a/tests/fixtures/test_python/test_robot_modify_options_hook_listener_instance/conftest.py b/tests/fixtures/test_python/test_robot_modify_options_hook_listener_instance/conftest.py index 19ebaa9e..8608ee5d 100644 --- a/tests/fixtures/test_python/test_robot_modify_options_hook_listener_instance/conftest.py +++ b/tests/fixtures/test_python/test_robot_modify_options_hook_listener_instance/conftest.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, final from robot.api.interfaces import ListenerV3 from typing_extensions import override @@ -11,6 +11,7 @@ from pytest_robotframework import RobotOptions +@final class Foo(ListenerV3): def __init__(self): super().__init__() diff --git a/uv.lock b/uv.lock index 61b20392..bd4d5e38 100644 --- a/uv.lock +++ b/uv.lock @@ -32,26 +32,26 @@ wheels = [ [[package]] name = "basedpyright" -version = "1.19.0" +version = "1.21.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodejs-wheel-binaries" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/40/33/ac61d462e81a3a6310c36680911b7d8be5d940d9112a73e7d93317b9d187/basedpyright-1.19.0.tar.gz", hash = "sha256:847d9c75ca691c9ff0661c800e830c23b32c65793b97a4386db9cbf52c1a168a", size = 53321760 } +sdist = { url = "https://files.pythonhosted.org/packages/94/91/d66f9ece468b3daa2f3d357304c816438be4595006928ea5639fb6b5139e/basedpyright-1.21.0.tar.gz", hash = "sha256:e3a9f5b89acc7f23d5a10d95ea6056b2247fcd15b8b248ad44c560c85c39d5e3", size = 20789741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/32/8b17adbda1e0d7e000cb939c168d1b7cbcdecfb0354ecc9c397c0d2044da/basedpyright-1.19.0-py3-none-any.whl", hash = "sha256:78f2fc2e5d3f2cc1c4dfae351f9d45aa52917bfb0e9a103579a4bb005f097bec", size = 11165831 }, + { url = "https://files.pythonhosted.org/packages/20/f7/97af385e43208d600f892da1b8c94f35d4e9165d5c774013bb202617dd7d/basedpyright-1.21.0-py3-none-any.whl", hash = "sha256:48902c476d6301c556df6eeae9acf1e34b176b14f8702ad5c770f4e6a747018a", size = 11148428 }, ] [[package]] name = "basedtyping" -version = "0.1.4" +version = "0.1.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ec/22/f0d1bbd34766de14a6ed5b4d3a09ab9d5de12376655b4d9df9e05d90c5a3/basedtyping-0.1.4.tar.gz", hash = "sha256:8a3ba80d4628eb2f6a205759a8151e6df7341ceba03e5daf6b395fcc873a7967", size = 9776 } +sdist = { url = "https://files.pythonhosted.org/packages/f3/50/b665ea83292b70ee0895f99828a9c5f5ab29a681f47c14fd1ff8c5ad039d/basedtyping-0.1.7.tar.gz", hash = "sha256:6a3b6cf64b6d62b990e492dfad27981060e2d238b11e962bfa4e2d3bd3cb8c87", size = 13298 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/5f/c1864efc5423ba25e512bfa7589eb1135885650e116de4eef39078b7ce82/basedtyping-0.1.4-py3-none-any.whl", hash = "sha256:d4832ab7af178e6a5394199725dc55f26e36e1ad5fae68db41b956c1cb99a0d2", size = 9637 }, + { url = "https://files.pythonhosted.org/packages/b0/f5/72fe4ec0cf5669f7a4fc9bbb94382cabccc580fd69162070cf733709b54b/basedtyping-0.1.7-py3-none-any.whl", hash = "sha256:2ad697605d1ae437c0e3d76ed61c0dc3657ab0ba43ad6e507f311cc311d4f592", size = 13801 }, ] [[package]] @@ -346,16 +346,16 @@ wheels = [ [[package]] name = "nodejs-wheel-binaries" -version = "23.0.0rc0" +version = "23.1.0rc0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/39/ed4c8ce7a850e391b594e28bd559d6c3a583048d12a7c95fa6dce46e96f4/nodejs_wheel_binaries-23.0.0rc0.tar.gz", hash = "sha256:0ad14cb5b0e94920c80fa019451256412de439092583befa1f75df3d8baf4abe", size = 7009 } +sdist = { url = "https://files.pythonhosted.org/packages/f4/ce/bc275d09cfcf9ff5796fb33ec883ee8cc686b3b272a1b81b16020777a3ce/nodejs_wheel_binaries-23.1.0rc0.tar.gz", hash = "sha256:62e9edfb0140df482d17c3b75854c254c55b458dfd41248f945c4d897fbd721d", size = 7010 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/35/a5245ee4e4ddc912a1bf1201907e6e056bff687c4d6fa6d804d919bb0284/nodejs_wheel_binaries-23.0.0rc0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:ff30dde24e930cb79804091eaae841bce0670f21a00af9a61490c4de0c1278aa", size = 51148258 }, - { url = "https://files.pythonhosted.org/packages/98/e9/5281a0789f6a0cb157ddf9675b5e6ff36b99e6f8a2da45f15ed13173d286/nodejs_wheel_binaries-23.0.0rc0-py2.py3-none-macosx_11_0_x86_64.whl", hash = "sha256:551a517610bf63104559664fd0cc815230384ded33b49426647cfc74d0a6940d", size = 51939055 }, - { url = "https://files.pythonhosted.org/packages/b7/1a/bbf1d1cebc1de6d98c637f09ec77075f2b76b5df5b9deff62682adf1aaad/nodejs_wheel_binaries-23.0.0rc0-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c28b3f660e6e218ff3799f41fd3fe482d96a9e92267a3618a734173efceb9681", size = 57566711 }, - { url = "https://files.pythonhosted.org/packages/19/82/66ff409d7981fbff7883fa45e7588fa9445ba34b6c922094921b4bfc73b9/nodejs_wheel_binaries-23.0.0rc0-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea5ff2ce6e5cc8d0cc17c14a9e6b0675d8f793cc5f3468325b3cb45beb50c056", size = 57869531 }, - { url = "https://files.pythonhosted.org/packages/2e/09/43a86ed5d0ac3f4fd9ee1c6ebd8493e828d630e15a6c155b5f7daf4271df/nodejs_wheel_binaries-23.0.0rc0-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:809ff2374645eb70126fa641770b62e8f0b755fa5defac1667fdc8b76eeda447", size = 60000795 }, - { url = "https://files.pythonhosted.org/packages/75/53/bc3cf194517b0e09a9ee5796a114c675ec47e9ec24bd929ac0e8c0fc645f/nodejs_wheel_binaries-23.0.0rc0-py2.py3-none-win_amd64.whl", hash = "sha256:34c37380db97bd4a766fdfa1727f6a5b973a31559680f26ffdc2d6166e6cd718", size = 40144033 }, + { url = "https://files.pythonhosted.org/packages/31/dd/d598129d08eac714910a015168ad82b77c2d740de98a9c636bce13758eb6/nodejs_wheel_binaries-23.1.0rc0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:defcbc996960625be0cae85d189d288654655b76efe53e141eae710e70c53c2c", size = 51540502 }, + { url = "https://files.pythonhosted.org/packages/a5/45/ff326ffec18ddaa2a45bb572e0bf1c0e6964108815269f2feda7781eb95f/nodejs_wheel_binaries-23.1.0rc0-py2.py3-none-macosx_11_0_x86_64.whl", hash = "sha256:1b0f67d3f8e4d76a0bd9a67209d3a0083c716f43a99c3600756295cb59eddfe9", size = 52338614 }, + { url = "https://files.pythonhosted.org/packages/8e/09/bd97c5931ea05565ff9ef584ccdacc6900ed3b5f8309cea10f7e510d92ee/nodejs_wheel_binaries-23.1.0rc0-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3f2d5b0859c1f4133fc7d8f0066ce6a90e83108a2d0867a4635c5f42a47b442", size = 58031837 }, + { url = "https://files.pythonhosted.org/packages/83/c9/3e5a07ab47017e7272a2661c6d3f0c22e01bce61a84fa526ce2884ca00f2/nodejs_wheel_binaries-23.1.0rc0-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5eb5b85753804c601b5348d42387b3e86997a6d89ab93a7980e0aa4468ba5fe3", size = 58338631 }, + { url = "https://files.pythonhosted.org/packages/ff/39/05612c5d45dc13642f126001571a1a319b92578fa11c9608353393f300da/nodejs_wheel_binaries-23.1.0rc0-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51bacda51f1e40fc0c734bf06a3c2910c98bf13bec2cf16b544ef46f95f2ec4a", size = 60463516 }, + { url = "https://files.pythonhosted.org/packages/44/41/b9f7e6d173df28ae77cb22b2259e797644246b2cac64d835a862767fd20b/nodejs_wheel_binaries-23.1.0rc0-py2.py3-none-win_amd64.whl", hash = "sha256:4784e8836fa20c7c3db52c22b78ef7dfc24221060b1b145ef5dc3627a160808d", size = 40543722 }, ] [[package]] @@ -549,16 +549,16 @@ wheels = [ [[package]] name = "rich" -version = "13.9.2" +version = "13.9.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/aa/9e/1784d15b057b0075e5136445aaea92d23955aad2c93eaede673718a40d95/rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c", size = 222843 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/91/5474b84e505a6ccc295b2d322d90ff6aa0746745717839ee0c5fb4fdcceb/rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1", size = 242117 }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, ] [[package]] @@ -622,27 +622,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2c/c7/f3367d1da5d568192968c5c9e7f3d51fb317b9ac04828493b23d8fce8ce6/ruff-0.7.0.tar.gz", hash = "sha256:47a86360cf62d9cd53ebfb0b5eb0e882193fc191c6d717e8bef4462bc3b9ea2b", size = 3146645 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/59/a0275a0913f3539498d116046dd679cd657fe3b7caf5afe1733319414932/ruff-0.7.0-py3-none-linux_armv6l.whl", hash = "sha256:0cdf20c2b6ff98e37df47b2b0bd3a34aaa155f59a11182c1303cce79be715628", size = 10434007 }, - { url = "https://files.pythonhosted.org/packages/cd/94/da0ba5f956d04c90dd899209904210600009dcda039ce840d83eb4298c7d/ruff-0.7.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:496494d350c7fdeb36ca4ef1c9f21d80d182423718782222c29b3e72b3512737", size = 10048066 }, - { url = "https://files.pythonhosted.org/packages/57/1d/e5cc149ecc46e4f203403a79ccd170fad52d316f98b87d0f63b1945567db/ruff-0.7.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:214b88498684e20b6b2b8852c01d50f0651f3cc6118dfa113b4def9f14faaf06", size = 9711389 }, - { url = "https://files.pythonhosted.org/packages/05/67/fb7ea2c869c539725a16c5bc294e9aa34f8b1b6fe702f1d173a5da517c2b/ruff-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630fce3fefe9844e91ea5bbf7ceadab4f9981f42b704fae011bb8efcaf5d84be", size = 10755174 }, - { url = "https://files.pythonhosted.org/packages/5f/f0/13703bc50536a0613ea3dce991116e5f0917a1f05528c6ab738b33c08d3f/ruff-0.7.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:211d877674e9373d4bb0f1c80f97a0201c61bcd1e9d045b6e9726adc42c156aa", size = 10196040 }, - { url = "https://files.pythonhosted.org/packages/99/c1/77b04ab20324ab03d333522ee55fb0f1c38e3ca0d326b4905f82ce6b6c70/ruff-0.7.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:194d6c46c98c73949a106425ed40a576f52291c12bc21399eb8f13a0f7073495", size = 11033684 }, - { url = "https://files.pythonhosted.org/packages/f2/97/f463334dc4efeea3551cd109163df15561c18a1c3ec13d51643740fd36ba/ruff-0.7.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:82c2579b82b9973a110fab281860403b397c08c403de92de19568f32f7178598", size = 11803700 }, - { url = "https://files.pythonhosted.org/packages/b4/f8/a31d40c4bb92933d376a53e7c5d0245d9b27841357e4820e96d38f54b480/ruff-0.7.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9af971fe85dcd5eaed8f585ddbc6bdbe8c217fb8fcf510ea6bca5bdfff56040e", size = 11347848 }, - { url = "https://files.pythonhosted.org/packages/83/62/0c133b35ddaf91c65c30a56718b80bdef36bfffc35684d29e3a4878e0ea3/ruff-0.7.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b641c7f16939b7d24b7bfc0be4102c56562a18281f84f635604e8a6989948914", size = 12480632 }, - { url = "https://files.pythonhosted.org/packages/46/96/464058dd1d980014fb5aa0a1254e78799efb3096fc7a4823cd66a1621276/ruff-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d71672336e46b34e0c90a790afeac8a31954fd42872c1f6adaea1dff76fd44f9", size = 10941919 }, - { url = "https://files.pythonhosted.org/packages/a0/f7/bda37ec77986a435dde44e1f59374aebf4282a5fa9cf17735315b847141f/ruff-0.7.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ab7d98c7eed355166f367597e513a6c82408df4181a937628dbec79abb2a1fe4", size = 10745519 }, - { url = "https://files.pythonhosted.org/packages/c2/33/5f77fc317027c057b61a848020a47442a1cbf12e592df0e41e21f4d0f3bd/ruff-0.7.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1eb54986f770f49edb14f71d33312d79e00e629a57387382200b1ef12d6a4ef9", size = 10284872 }, - { url = "https://files.pythonhosted.org/packages/ff/50/98aec292bc9537f640b8d031c55f3414bf15b6ed13b3e943fed75ac927b9/ruff-0.7.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:dc452ba6f2bb9cf8726a84aa877061a2462afe9ae0ea1d411c53d226661c601d", size = 10600334 }, - { url = "https://files.pythonhosted.org/packages/f2/85/12607ae3201423a179b8cfadc7cb1e57d02cd0135e45bd0445acb4cef327/ruff-0.7.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4b406c2dce5be9bad59f2de26139a86017a517e6bcd2688da515481c05a2cb11", size = 11017333 }, - { url = "https://files.pythonhosted.org/packages/d4/7f/3b85a56879e705d5f46ec14daf8a439fca05c3081720fe3dc3209100922d/ruff-0.7.0-py3-none-win32.whl", hash = "sha256:f6c968509f767776f524a8430426539587d5ec5c662f6addb6aa25bc2e8195ec", size = 8570962 }, - { url = "https://files.pythonhosted.org/packages/39/9f/c5ee2b40d377354dabcc23cff47eb299de4b4d06d345068f8f8cc1eadac8/ruff-0.7.0-py3-none-win_amd64.whl", hash = "sha256:ff4aabfbaaba880e85d394603b9e75d32b0693152e16fa659a3064a85df7fce2", size = 9365544 }, - { url = "https://files.pythonhosted.org/packages/89/8b/ee1509f60148cecba644aa718f6633216784302458340311898aaf0b1bed/ruff-0.7.0-py3-none-win_arm64.whl", hash = "sha256:10842f69c245e78d6adec7e1db0a7d9ddc2fff0621d730e61657b64fa36f207e", size = 8695763 }, +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/51/231bb3790e5b0b9fd4131f9a231d73d061b3667522e3f406fd9b63334d0e/ruff-0.7.2.tar.gz", hash = "sha256:2b14e77293380e475b4e3a7a368e14549288ed2931fce259a6f99978669e844f", size = 3210036 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/56/0caa2b5745d66a39aa239c01059f6918fc76ed8380033d2f44bf297d141d/ruff-0.7.2-py3-none-linux_armv6l.whl", hash = "sha256:b73f873b5f52092e63ed540adefc3c36f1f803790ecf2590e1df8bf0a9f72cb8", size = 10373973 }, + { url = "https://files.pythonhosted.org/packages/1a/33/cad6ff306731f335d481c50caa155b69a286d5b388e87ff234cd2a4b3557/ruff-0.7.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5b813ef26db1015953daf476202585512afd6a6862a02cde63f3bafb53d0b2d4", size = 10171140 }, + { url = "https://files.pythonhosted.org/packages/97/f5/6a2ca5c9ba416226eac9cf8121a1baa6f06655431937e85f38ffcb9d0d01/ruff-0.7.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:853277dbd9675810c6826dad7a428d52a11760744508340e66bf46f8be9701d9", size = 9809333 }, + { url = "https://files.pythonhosted.org/packages/16/83/e3e87f13d1a1dc205713632978cd7bc287a59b08bc95780dbe359b9aefcb/ruff-0.7.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21aae53ab1490a52bf4e3bf520c10ce120987b047c494cacf4edad0ba0888da2", size = 10622987 }, + { url = "https://files.pythonhosted.org/packages/22/16/97ccab194480e99a2e3c77ae132b3eebfa38c2112747570c403a4a13ba3a/ruff-0.7.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccc7e0fc6e0cb3168443eeadb6445285abaae75142ee22b2b72c27d790ab60ba", size = 10184640 }, + { url = "https://files.pythonhosted.org/packages/97/1b/82ff05441b036f68817296c14f24da47c591cb27acfda473ee571a5651ac/ruff-0.7.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd77877a4e43b3a98e5ef4715ba3862105e299af0c48942cc6d51ba3d97dc859", size = 11210203 }, + { url = "https://files.pythonhosted.org/packages/a6/96/7ecb30a7ef7f942e2d8e0287ad4c1957dddc6c5097af4978c27cfc334f97/ruff-0.7.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e00163fb897d35523c70d71a46fbaa43bf7bf9af0f4534c53ea5b96b2e03397b", size = 11870894 }, + { url = "https://files.pythonhosted.org/packages/06/6a/c716bb126218227f8e604a9c484836257708a05ee3d2ebceb666ff3d3867/ruff-0.7.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3c54b538633482dc342e9b634d91168fe8cc56b30a4b4f99287f4e339103e88", size = 11449533 }, + { url = "https://files.pythonhosted.org/packages/e6/2f/3a5f9f9478904e5ae9506ea699109070ead1e79aac041e872cbaad8a7458/ruff-0.7.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b792468e9804a204be221b14257566669d1db5c00d6bb335996e5cd7004ba80", size = 12607919 }, + { url = "https://files.pythonhosted.org/packages/a0/57/4642e57484d80d274750dcc872ea66655bbd7e66e986fede31e1865b463d/ruff-0.7.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dba53ed84ac19ae4bfb4ea4bf0172550a2285fa27fbb13e3746f04c80f7fa088", size = 11016915 }, + { url = "https://files.pythonhosted.org/packages/4d/6d/59be6680abee34c22296ae3f46b2a3b91662b8b18ab0bf388b5eb1355c97/ruff-0.7.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b19fafe261bf741bca2764c14cbb4ee1819b67adb63ebc2db6401dcd652e3748", size = 10625424 }, + { url = "https://files.pythonhosted.org/packages/82/e7/f6a643683354c9bc7879d2f228ee0324fea66d253de49273a0814fba1927/ruff-0.7.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:28bd8220f4d8f79d590db9e2f6a0674f75ddbc3847277dd44ac1f8d30684b828", size = 10233692 }, + { url = "https://files.pythonhosted.org/packages/d7/48/b4e02fc835cd7ed1ee7318d9c53e48bcf6b66301f55925a7dcb920e45532/ruff-0.7.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9fd67094e77efbea932e62b5d2483006154794040abb3a5072e659096415ae1e", size = 10751825 }, + { url = "https://files.pythonhosted.org/packages/1e/06/6c5ee6ab7bb4cbad9e8bb9b2dd0d818c759c90c1c9e057c6ed70334b97f4/ruff-0.7.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:576305393998b7bd6c46018f8104ea3a9cb3fa7908c21d8580e3274a3b04b691", size = 11074811 }, + { url = "https://files.pythonhosted.org/packages/a1/16/8969304f25bcd0e4af1778342e63b715e91db8a2dbb51807acd858cba915/ruff-0.7.2-py3-none-win32.whl", hash = "sha256:fa993cfc9f0ff11187e82de874dfc3611df80852540331bc85c75809c93253a8", size = 8650268 }, + { url = "https://files.pythonhosted.org/packages/d9/18/c4b00d161def43fe5968e959039c8f6ce60dca762cec4a34e4e83a4210a0/ruff-0.7.2-py3-none-win_amd64.whl", hash = "sha256:dd8800cbe0254e06b8fec585e97554047fb82c894973f7ff18558eee33d1cb88", size = 9433693 }, + { url = "https://files.pythonhosted.org/packages/7f/7b/c920673ac01c19814dd15fc617c02301c522f3d6812ca2024f4588ed4549/ruff-0.7.2-py3-none-win_arm64.whl", hash = "sha256:bb8368cd45bba3f57bb29cbb8d64b4a33f8415d0149d2655c5c8539452ce7760", size = 8735845 }, ] [[package]]