From ca1e8a5912bd55db26af620ee36becf6c28fdf5b Mon Sep 17 00:00:00 2001 From: "renovate-coveo[bot]" <115253437+renovate-coveo[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:35:41 +0000 Subject: [PATCH 1/4] Update dependency setuptools to v70 [SECURITY] --- poetry.lock | 13 ++++++------- pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index b93e2ee..ff44231 100644 --- a/poetry.lock +++ b/poetry.lock @@ -453,19 +453,18 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "setuptools" -version = "69.2.0" +version = "70.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, + {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -562,4 +561,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">3.8.1,<4" -content-hash = "3b1728f970b9297997a7e35cbb6ae94f48a63c19b317f81c8e5d1597c7e7f6b4" +content-hash = "f8eea5ca6296aed1b65e8f7e8a08792ca14d52ee628b2736055d7f3f3ed090ef" diff --git a/pyproject.toml b/pyproject.toml index a16d5bd..acf19f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ coveo-systools = "^2.0.13" coveo-styles = "^2.1.2" junit-xml = "*" packaging = "*" -setuptools = "^69.2" +setuptools = "^70.0.0" toml = "*" tomlkit = "*" importlib-resources = "^6.1.1" From 24661b83c3ce489bb9597ec8a9e2a02c5645d0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Pich=C3=A9?= Date: Fri, 18 Oct 2024 11:05:01 -0400 Subject: [PATCH 2/4] inject environment variables --- coveo_stew/ci/any_runner.py | 11 ++++++++--- coveo_stew/ci/black_runner.py | 19 +++++++++++++------ coveo_stew/ci/mypy_runner.py | 7 +++++-- coveo_stew/ci/poetry_runners.py | 7 ++++++- coveo_stew/ci/pytest_runner.py | 7 ++++++- coveo_stew/ci/runner.py | 30 +++++++++++++++++++++++++----- coveo_stew/ci/stew_runners.py | 10 ++++++++-- coveo_stew/environment.py | 8 ++++++-- coveo_stew/offline_publish.py | 4 +++- 9 files changed, 80 insertions(+), 23 deletions(-) diff --git a/coveo_stew/ci/any_runner.py b/coveo_stew/ci/any_runner.py index a512c7d..1e80f7a 100644 --- a/coveo_stew/ci/any_runner.py +++ b/coveo_stew/ci/any_runner.py @@ -1,5 +1,6 @@ +import os from enum import Enum, auto -from typing import Iterable, List, Optional, Tuple, Union +from typing import Any, Iterable, List, Optional, Tuple, Union from coveo_styles.styles import ExitWithFailure from coveo_systools.filesystem import find_repo_root @@ -68,7 +69,9 @@ def __init__( f"Working directory for {self.name} should be within {WorkingDirectoryKind.valid_values()}" ) - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: args = [self.check_args] if isinstance(self.check_args, str) else self.check_args command = environment.build_command(self.executable, *args) @@ -83,6 +86,7 @@ async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> Run *extra_args, working_directory=working_directory, verbose=self._pyproject.verbose, + **kwargs, ) ).split("\n") ) @@ -97,7 +101,7 @@ def name(self) -> str: def executable(self) -> str: return self._executable or self.name - async def _custom_autofix(self, environment: PythonEnvironment) -> None: + async def _custom_autofix(self, environment: PythonEnvironment, **kwargs: Any) -> None: args = [self.autofix_args] if isinstance(self.autofix_args, str) else self.autofix_args command = environment.build_command(self.executable, *args) @@ -111,6 +115,7 @@ async def _custom_autofix(self, environment: PythonEnvironment) -> None: *command, working_directory=working_directory, verbose=self._pyproject.verbose, + **kwargs, ) ).split("\n") ) diff --git a/coveo_stew/ci/black_runner.py b/coveo_stew/ci/black_runner.py index 884c8d9..cda6283 100644 --- a/coveo_stew/ci/black_runner.py +++ b/coveo_stew/ci/black_runner.py @@ -1,3 +1,5 @@ +from typing import Any + from coveo_systools.subprocess import DetailedCalledProcessError, async_check_output from coveo_stew.ci.runner import ContinuousIntegrationRunner @@ -14,22 +16,27 @@ def __init__(self, *, _pyproject: PythonProject) -> None: super().__init__(_pyproject=_pyproject) self._auto_fix_routine = self.reformat_files - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: try: - await self._launch_internal(environment, "--check", "--quiet", *extra_args) + await self._launch_internal(environment, "--check", "--quiet", *extra_args, **kwargs) except DetailedCalledProcessError: # re-run without the quiet switch so that the output appears in the console - await self._launch_internal(environment, "--check", *extra_args) + await self._launch_internal(environment, "--check", *extra_args, **kwargs) return RunnerStatus.Success - async def reformat_files(self, environment: PythonEnvironment) -> None: - await self._launch_internal(environment, "--quiet") + async def reformat_files(self, environment: PythonEnvironment, **kwargs: Any) -> None: + await self._launch_internal(environment, "--quiet", **kwargs) - async def _launch_internal(self, environment: PythonEnvironment, *extra_args: str) -> None: + async def _launch_internal( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> None: # projects may opt to use coveo-stew's black version by not including black in their dependencies. command = environment.build_command(PythonTool.Black, ".", *extra_args) await async_check_output( *command, working_directory=self._pyproject.project_path, verbose=self._pyproject.verbose, + **kwargs, ) diff --git a/coveo_stew/ci/mypy_runner.py b/coveo_stew/ci/mypy_runner.py index 1316013..5077d1c 100644 --- a/coveo_stew/ci/mypy_runner.py +++ b/coveo_stew/ci/mypy_runner.py @@ -2,7 +2,7 @@ import re from contextlib import ExitStack from pathlib import Path -from typing import Generator, Optional, Union +from typing import Any, Generator, Optional, Union import importlib_resources from coveo_styles.styles import echo @@ -46,7 +46,9 @@ def _find_typed_folders(self) -> Generator[Path, None, None]: self._pyproject.project_path.iterdir(), ) - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: typed_folders = tuple(folder.name for folder in self._find_typed_folders()) if not typed_folders: @@ -84,6 +86,7 @@ async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> Run *command, working_directory=self._pyproject.project_path, verbose=self._pyproject.verbose, + **kwargs, ) return RunnerStatus.Success diff --git a/coveo_stew/ci/poetry_runners.py b/coveo_stew/ci/poetry_runners.py index e4a022c..c4bddcc 100644 --- a/coveo_stew/ci/poetry_runners.py +++ b/coveo_stew/ci/poetry_runners.py @@ -1,3 +1,5 @@ +from typing import Any + from coveo_systools.subprocess import async_check_output from coveo_stew.ci.runner import ContinuousIntegrationRunner @@ -9,9 +11,12 @@ class PoetryCheckRunner(ContinuousIntegrationRunner): name: str = "poetry-check" check_failed_exit_codes = [1] - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: await async_check_output( *environment.build_command(PythonTool.Poetry, "check"), working_directory=self._pyproject.project_path, + **kwargs, ) return RunnerStatus.Success diff --git a/coveo_stew/ci/pytest_runner.py b/coveo_stew/ci/pytest_runner.py index ec9fada..051f441 100644 --- a/coveo_stew/ci/pytest_runner.py +++ b/coveo_stew/ci/pytest_runner.py @@ -1,3 +1,5 @@ +from typing import Any + from coveo_systools.subprocess import async_check_output from coveo_stew.ci.runner import ContinuousIntegrationRunner @@ -22,7 +24,9 @@ def __init__( self.marker_expression = marker_expression self.doctest_modules: bool = doctest_modules - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: command = environment.build_command( PythonTool.Pytest, "--durations=5", @@ -40,6 +44,7 @@ async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> Run *extra_args, working_directory=self._pyproject.project_path, verbose=self._pyproject.verbose, + **kwargs, ) return RunnerStatus.Success diff --git a/coveo_stew/ci/runner.py b/coveo_stew/ci/runner.py index 052ea70..8a7223f 100644 --- a/coveo_stew/ci/runner.py +++ b/coveo_stew/ci/runner.py @@ -1,9 +1,20 @@ import asyncio +import os from abc import abstractmethod from dataclasses import dataclass from functools import cached_property from pathlib import Path -from typing import Callable, Coroutine, Iterable, List, Optional, Sequence, Tuple +from typing import ( + Any, + Callable, + Coroutine, + Iterable, + List, + Optional, + Protocol, + Sequence, + Tuple, +) from coveo_styles.styles import echo from coveo_systools.subprocess import DetailedCalledProcessError @@ -15,13 +26,19 @@ from coveo_stew.stew import PythonProject +class AutoFixRoutineCallable(Protocol): + def __call__( + self, environment: PythonEnvironment, **kwargs: Any + ) -> Coroutine[None, None, None]: ... + + class ContinuousIntegrationRunner: status: RunnerStatus = RunnerStatus.NotRan check_failed_exit_codes: Iterable[int] = [] outputs_own_report: bool = False # set to True if the runner produces its own report. # implementations may provide an auto fix routine. - _auto_fix_routine: Optional[Callable[[PythonEnvironment], Coroutine[None, None, None]]] = None + _auto_fix_routine: Optional[AutoFixRoutineCallable] = None def __init__(self, *, _pyproject: PythonProject) -> None: """Implementations may add additional keyword args.""" @@ -46,8 +63,9 @@ async def launch( """ self._last_output.clear() self._test_cases.clear() + environment_variables = os.environ.copy() try: - self.status = await self._launch(environment, *extra_args) + self.status = await self._launch(environment, *extra_args, env=environment_variables) except DetailedCalledProcessError as exception: if exception.returncode in self.check_failed_exit_codes: self.status = RunnerStatus.CheckFailed @@ -60,7 +78,7 @@ async def launch( if all((auto_fix, self.supports_auto_fix, self.status == RunnerStatus.CheckFailed)): echo.noise("Errors founds; launching auto-fix routine.") assert self._auto_fix_routine is not None # mypy - await self._auto_fix_routine(environment) + await self._auto_fix_routine(environment, env=environment_variables) # it should pass now! await self.launch(environment, *extra_args) @@ -85,7 +103,9 @@ def supports_auto_fix(self) -> bool: return self._auto_fix_routine is not None @abstractmethod - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: """Launch the continuous integration check using the given environment and store the output.""" def echo_last_failures(self) -> None: diff --git a/coveo_stew/ci/stew_runners.py b/coveo_stew/ci/stew_runners.py index d3809a2..31c4f05 100644 --- a/coveo_stew/ci/stew_runners.py +++ b/coveo_stew/ci/stew_runners.py @@ -2,6 +2,7 @@ import shutil import tempfile from pathlib import Path +from typing import Any from coveo_styles.styles import echo from coveo_systools.filesystem import pushd @@ -16,7 +17,9 @@ class CheckOutdatedRunner(ContinuousIntegrationRunner): name: str = "check-outdated" - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: if self._pyproject.lock_is_outdated(): self._last_output = ['The lock file is out of date: run "stew fix-outdated"'] return RunnerStatus.CheckFailed @@ -26,7 +29,9 @@ async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> Run class OfflineInstallRunner(ContinuousIntegrationRunner): name: str = "poetry-build" - async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> RunnerStatus: + async def _launch( + self, environment: PythonEnvironment, *extra_args: str, **kwargs: Any + ) -> RunnerStatus: temporary_folder = Path(tempfile.mkdtemp()) offline_install_location = temporary_folder / "wheels" @@ -57,6 +62,7 @@ async def _launch(self, environment: PythonEnvironment, *extra_args: str) -> Run else "" ), ), + **kwargs, ) finally: await asyncio.sleep(0.01) # give a few cycles to close handles/etc diff --git a/coveo_stew/environment.py b/coveo_stew/environment.py index 05b7d49..baf2d74 100644 --- a/coveo_stew/environment.py +++ b/coveo_stew/environment.py @@ -69,7 +69,9 @@ def build_command(self, tool: Union[PythonTool, str], *args: Any) -> List[Any]: @lru_cache def has_tool(self, tool: Union[PythonTool, str]) -> bool: try: - _ = check_output(self.python_executable, "-c", f"import {tool};", stderr=PIPE) + _ = check_output( + self.python_executable, "-c", f"import {tool};", stderr=PIPE, env=os.environ.copy() + ) return True except CalledProcessError: return False @@ -77,7 +79,9 @@ def has_tool(self, tool: Union[PythonTool, str]) -> bool: @property def python_version(self) -> str: if self._python_version is None: - self._python_version = check_output(str(self.python_executable), "--version").strip() + self._python_version = check_output( + str(self.python_executable), "--version", env=os.environ.copy() + ).strip() assert self._python_version is not None return self._python_version diff --git a/coveo_stew/offline_publish.py b/coveo_stew/offline_publish.py index a87e93a..bf023cb 100644 --- a/coveo_stew/offline_publish.py +++ b/coveo_stew/offline_publish.py @@ -105,6 +105,7 @@ def _store_setup_dependencies_in_wheelhouse( *self.environment.build_command(PythonTool.Pip, "wheel", dep), working_directory=self.wheelhouse, verbose=self.verbose, + env=os.environ.copy(), ) def _store_dependencies_in_wheelhouse(self, project: Optional[PythonProject] = None) -> None: @@ -167,7 +168,7 @@ def _store_dependencies_in_wheelhouse(self, project: Optional[PythonProject] = N ) try: - _ = check_output(*command, verbose=self.verbose) + _ = check_output(*command, verbose=self.verbose, env=os.environ.copy()) finally: try: Path(requirements_file_path).unlink(missing_ok=True) @@ -193,4 +194,5 @@ def _validate_package(self, package_specification: str) -> None: ), working_directory=self.wheelhouse, verbose=self.verbose, + env=os.environ.copy(), ) From 991d32019ebd6e849132ecd1c8e6afb329b755fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Pich=C3=A9?= Date: Fri, 18 Oct 2024 11:35:59 -0400 Subject: [PATCH 3/4] drop python3.8 # Conflicts: # poetry.lock --- .github/workflows/coveo-stew.yml | 2 +- README.md | 1 + coveo_stew/ci/any_runner.py | 1 - coveo_stew/ci/runner.py | 12 +- poetry.lock | 214 ++++++++++++++++--------------- pyproject.toml | 10 +- 6 files changed, 122 insertions(+), 118 deletions(-) diff --git a/.github/workflows/coveo-stew.yml b/.github/workflows/coveo-stew.yml index aa1b340..6c56bdd 100644 --- a/.github/workflows/coveo-stew.yml +++ b/.github/workflows/coveo-stew.yml @@ -24,7 +24,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] poetry-version: [""] os: [ubuntu-latest, windows-latest, macos-latest] diff --git a/README.md b/README.md index f56c236..597c09d 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ Similar to: nothing! it's unique! 😎 # Prerequisites +*Changed in 3.1*: You need python 3.9+ to run stew, but you can still use it on projects requiring older versions of python. *Changed in 3.0*: `poetry` is no longer provided out-of-the-box. diff --git a/coveo_stew/ci/any_runner.py b/coveo_stew/ci/any_runner.py index 1e80f7a..ef27ddc 100644 --- a/coveo_stew/ci/any_runner.py +++ b/coveo_stew/ci/any_runner.py @@ -1,4 +1,3 @@ -import os from enum import Enum, auto from typing import Any, Iterable, List, Optional, Tuple, Union diff --git a/coveo_stew/ci/runner.py b/coveo_stew/ci/runner.py index 8a7223f..84bb5ce 100644 --- a/coveo_stew/ci/runner.py +++ b/coveo_stew/ci/runner.py @@ -4,17 +4,7 @@ from dataclasses import dataclass from functools import cached_property from pathlib import Path -from typing import ( - Any, - Callable, - Coroutine, - Iterable, - List, - Optional, - Protocol, - Sequence, - Tuple, -) +from typing import Any, Coroutine, Iterable, List, Optional, Protocol, Sequence, Tuple from coveo_styles.styles import echo from coveo_systools.subprocess import DetailedCalledProcessError diff --git a/poetry.lock b/poetry.lock index ff44231..2dac3d9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,53 +1,53 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "black" -version = "24.3.0" +version = "24.10.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.8" -files = [ - {file = "black-24.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395"}, - {file = "black-24.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995"}, - {file = "black-24.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"}, - {file = "black-24.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0"}, - {file = "black-24.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9"}, - {file = "black-24.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597"}, - {file = "black-24.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d"}, - {file = "black-24.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5"}, - {file = "black-24.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f"}, - {file = "black-24.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11"}, - {file = "black-24.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4"}, - {file = "black-24.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5"}, - {file = "black-24.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:79dcf34b33e38ed1b17434693763301d7ccbd1c5860674a8f871bd15139e7837"}, - {file = "black-24.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e19cb1c6365fd6dc38a6eae2dcb691d7d83935c10215aef8e6c38edee3f77abd"}, - {file = "black-24.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b76c275e4c1c5ce6e9870911384bff5ca31ab63d19c76811cb1fb162678213"}, - {file = "black-24.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b5991d523eee14756f3c8d5df5231550ae8993e2286b8014e2fdea7156ed0959"}, - {file = "black-24.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb"}, - {file = "black-24.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7"}, - {file = "black-24.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7"}, - {file = "black-24.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f"}, - {file = "black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93"}, - {file = "black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f"}, +python-versions = ">=3.9" +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] [package.dependencies] @@ -61,7 +61,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -176,27 +176,27 @@ pytest = "*" [[package]] name = "emoji" -version = "2.11.0" +version = "2.14.0" description = "Emoji for Python" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "emoji-2.11.0-py2.py3-none-any.whl", hash = "sha256:63fc9107f06c6c2e48e5078ce9575cef98518f5ac09474f6148a43e989989582"}, - {file = "emoji-2.11.0.tar.gz", hash = "sha256:772eaa30f4e0b1ce95148a092df4c7dc97644532c03225326b0fd05e8a9f72a3"}, + {file = "emoji-2.14.0-py3-none-any.whl", hash = "sha256:fcc936bf374b1aec67dda5303ae99710ba88cc9cdce2d1a71c5f2204e6d78799"}, + {file = "emoji-2.14.0.tar.gz", hash = "sha256:f68ac28915a2221667cddb3e6c589303c3c6954c6c5af6fefaec7f9bdf72fdca"}, ] [package.extras] -dev = ["coverage", "coveralls", "pytest"] +dev = ["coverage", "pytest (>=7.4.4)"] [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -220,21 +220,25 @@ pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "importlib-resources" -version = "6.4.3" +version = "6.4.5" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.4.3-py3-none-any.whl", hash = "sha256:2d6dfe3b9e055f72495c2085890837fc8c758984e209115c8792bddcb762cd93"}, - {file = "importlib_resources-6.4.3.tar.gz", hash = "sha256:4a202b9b9d38563b46da59221d77bb73862ab5d79d461307bcb826d725448b98"}, + {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, + {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] +type = ["pytest-mypy"] [[package]] name = "inflection" @@ -299,38 +303,43 @@ files = [ [[package]] name = "mypy" -version = "1.11.1" +version = "1.12.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"}, - {file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"}, - {file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"}, - {file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"}, - {file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"}, - {file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"}, - {file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"}, - {file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"}, - {file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"}, - {file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"}, - {file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"}, - {file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"}, - {file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"}, - {file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"}, - {file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"}, - {file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"}, - {file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"}, - {file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"}, - {file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"}, - {file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"}, - {file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"}, - {file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"}, - {file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"}, - {file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"}, - {file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"}, - {file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"}, - {file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"}, + {file = "mypy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4397081e620dc4dc18e2f124d5e1d2c288194c2c08df6bdb1db31c38cd1fe1ed"}, + {file = "mypy-1.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:684a9c508a283f324804fea3f0effeb7858eb03f85c4402a967d187f64562469"}, + {file = "mypy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cabe4cda2fa5eca7ac94854c6c37039324baaa428ecbf4de4567279e9810f9e"}, + {file = "mypy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:060a07b10e999ac9e7fa249ce2bdcfa9183ca2b70756f3bce9df7a92f78a3c0a"}, + {file = "mypy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:0eff042d7257f39ba4ca06641d110ca7d2ad98c9c1fb52200fe6b1c865d360ff"}, + {file = "mypy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b86de37a0da945f6d48cf110d5206c5ed514b1ca2614d7ad652d4bf099c7de7"}, + {file = "mypy-1.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20c7c5ce0c1be0b0aea628374e6cf68b420bcc772d85c3c974f675b88e3e6e57"}, + {file = "mypy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64ee25f05fc2d3d8474985c58042b6759100a475f8237da1f4faf7fcd7e6309"}, + {file = "mypy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:faca7ab947c9f457a08dcb8d9a8664fd438080e002b0fa3e41b0535335edcf7f"}, + {file = "mypy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:5bc81701d52cc8767005fdd2a08c19980de9ec61a25dbd2a937dfb1338a826f9"}, + {file = "mypy-1.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8462655b6694feb1c99e433ea905d46c478041a8b8f0c33f1dab00ae881b2164"}, + {file = "mypy-1.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:923ea66d282d8af9e0f9c21ffc6653643abb95b658c3a8a32dca1eff09c06475"}, + {file = "mypy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ebf9e796521f99d61864ed89d1fb2926d9ab6a5fab421e457cd9c7e4dd65aa9"}, + {file = "mypy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e478601cc3e3fa9d6734d255a59c7a2e5c2934da4378f3dd1e3411ea8a248642"}, + {file = "mypy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:c72861b7139a4f738344faa0e150834467521a3fba42dc98264e5aa9507dd601"}, + {file = "mypy-1.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52b9e1492e47e1790360a43755fa04101a7ac72287b1a53ce817f35899ba0521"}, + {file = "mypy-1.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48d3e37dd7d9403e38fa86c46191de72705166d40b8c9f91a3de77350daa0893"}, + {file = "mypy-1.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f106db5ccb60681b622ac768455743ee0e6a857724d648c9629a9bd2ac3f721"}, + {file = "mypy-1.12.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:233e11b3f73ee1f10efada2e6da0f555b2f3a5316e9d8a4a1224acc10e7181d3"}, + {file = "mypy-1.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:4ae8959c21abcf9d73aa6c74a313c45c0b5a188752bf37dace564e29f06e9c1b"}, + {file = "mypy-1.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eafc1b7319b40ddabdc3db8d7d48e76cfc65bbeeafaa525a4e0fa6b76175467f"}, + {file = "mypy-1.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9b9ce1ad8daeb049c0b55fdb753d7414260bad8952645367e70ac91aec90e07e"}, + {file = "mypy-1.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfe012b50e1491d439172c43ccb50db66d23fab714d500b57ed52526a1020bb7"}, + {file = "mypy-1.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c40658d4fa1ab27cb53d9e2f1066345596af2f8fe4827defc398a09c7c9519b"}, + {file = "mypy-1.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:dee78a8b9746c30c1e617ccb1307b351ded57f0de0d287ca6276378d770006c0"}, + {file = "mypy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b5df6c8a8224f6b86746bda716bbe4dbe0ce89fd67b1fa4661e11bfe38e8ec8"}, + {file = "mypy-1.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5feee5c74eb9749e91b77f60b30771563327329e29218d95bedbe1257e2fe4b0"}, + {file = "mypy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:77278e8c6ffe2abfba6db4125de55f1024de9a323be13d20e4f73b8ed3402bd1"}, + {file = "mypy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:dcfb754dea911039ac12434d1950d69a2f05acd4d56f7935ed402be09fad145e"}, + {file = "mypy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:06de0498798527451ffb60f68db0d368bd2bae2bbfb5237eae616d4330cc87aa"}, + {file = "mypy-1.12.0-py3-none-any.whl", hash = "sha256:fd313226af375d52e1e36c383f39bf3836e1f192801116b31b090dfcd3ec5266"}, + {file = "mypy-1.12.0.tar.gz", hash = "sha256:65a22d87e757ccd95cbbf6f7e181e6caa87128255eb2b6be901bb71b26d8a99d"}, ] [package.dependencies] @@ -379,18 +388,19 @@ files = [ [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" @@ -431,13 +441,13 @@ files = [ [[package]] name = "pytest" -version = "8.3.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, - {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -490,13 +500,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -512,13 +522,13 @@ files = [ [[package]] name = "types-setuptools" -version = "69.2.0.20240317" +version = "75.2.0.20241018" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.2.0.20240317.tar.gz", hash = "sha256:b607c4c48842ef3ee49dc0c7fe9c1bad75700b071e1018bb4d7e3ac492d47048"}, - {file = "types_setuptools-69.2.0.20240317-py3-none-any.whl", hash = "sha256:cf91ff7c87ab7bf0625c3f0d4d90427c9da68561f3b0feab77977aaf0bbf7531"}, + {file = "types-setuptools-75.2.0.20241018.tar.gz", hash = "sha256:bcb7aded3d1e546350d2293a3f9352b0d1887c87b2e5586e2b0325485e24837e"}, + {file = "types_setuptools-75.2.0.20241018-py3-none-any.whl", hash = "sha256:86eeada00390425c1251a88d4cc276a923a28e1caccc56e89c0acb2dd358e88d"}, ] [[package]] @@ -534,29 +544,33 @@ files = [ [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "zipp" -version = "3.18.1" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] lock-version = "2.0" diff --git a/pyproject.toml b/pyproject.toml index acf19f0..dc6138c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "coveo-stew" -version = "3.0.0" +version = "3.1.0" description = "Opinionated python packaging and development utilities" license = "Apache-2.0" readme = "README.md" @@ -13,7 +13,7 @@ packages = [ [tool.poetry.dependencies] -python = ">3.8.1,<4" +python = ">3.9,<4" click = "^8.1.0" coveo-functools = "^2.0.0" coveo-itertools = "^2.0.0" @@ -28,11 +28,11 @@ importlib-resources = "^6.1.1" [tool.poetry.dev-dependencies] -black = "24.3" +black = "24.10" coveo-testing = "^2.0.0" flake8 = "^7.0.0" isort = "*" -mypy = "1.11.1" +mypy = "1.12" pytest = "*" types-setuptools = "*" types-toml = "*" @@ -51,7 +51,7 @@ black = true [tool.stew.ci.custom-runners] -flake8 = { check-args = "--ignore=E203,E501,E701,W503" } +flake8 = { check-args = "--ignore=E203,E501,E701,E704,W503" } [tool.stew.ci.custom-runners.isort] check-args = ["--check", "--profile", "black", "."] From e06ad7a311f957e1388e61cea3b5b223daa3dffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Pich=C3=A9?= Date: Fri, 18 Oct 2024 14:52:49 -0400 Subject: [PATCH 4/4] bump lock --- poetry.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2dac3d9..82a960d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -574,5 +574,5 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" -python-versions = ">3.8.1,<4" -content-hash = "f8eea5ca6296aed1b65e8f7e8a08792ca14d52ee628b2736055d7f3f3ed090ef" +python-versions = ">3.9,<4" +content-hash = "d41e1bdf293478d2b57f7baf1cfc32378c8370731ce7347a05ef9a23b87cd183"