Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pre-commit.ci] pre-commit autoupdate #3051

Merged
merged 3 commits into from
Jun 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ repos:
- id: tox-ini-fmt
args: ["-p", "fix"]
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "0.12.0"
rev: "0.12.1"
hooks:
- id: pyproject-fmt
additional_dependencies: ["tox>=4.6.1"]
additional_dependencies: ["tox>=4.6.3"]
- repo: https://github.com/pre-commit/mirrors-prettier
rev: "v3.0.0-alpha.9-for-vscode"
hooks:
Expand All @@ -29,7 +29,7 @@ repos:
- id: blacken-docs
additional_dependencies: [black==23.3]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: "v0.0.272"
rev: "v0.0.275"
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
Expand Down
2 changes: 1 addition & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ and `devpi <https://www.devpi.net>`_).
:target: https://pypistats.org/packages/tox
:alt: PyPI - Downloads
.. image:: https://img.shields.io/pypi/l/tox?style=flat-square
:target: https://opensource.org/licenses/MIT
:target: https://opensource.org/license/mit/
:alt: PyPI - License
.. image:: https://img.shields.io/github/issues/tox-dev/tox?style=flat-square
:target: https://github.com/tox-dev/tox/issues
Expand Down
6 changes: 4 additions & 2 deletions docs/tox_conf.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import annotations

from typing import TYPE_CHECKING, cast
from typing import TYPE_CHECKING, Any, ClassVar, cast

from docutils.nodes import Element, Node, Text, container, fully_normalize_name, literal, paragraph, reference, strong
from docutils.parsers.rst.directives import flag, unchanged, unchanged_required
Expand All @@ -11,6 +11,8 @@
from sphinx.util.logging import getLogger

if TYPE_CHECKING:
from typing import Final

from docutils.parsers.rst.states import RSTState, RSTStateMachine

LOGGER = getLogger(__name__)
Expand All @@ -19,7 +21,7 @@
class ToxConfig(SphinxDirective):
name = "conf"
has_content = True
option_spec = {
option_spec: Final[ClassVar[dict[str, Any]]] = {
"keys": unchanged_required,
"version_added": unchanged,
"version_changed": unchanged,
Expand Down
10 changes: 5 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ dependencies = [
"chardet>=5.1",
"colorama>=0.4.6",
"filelock>=3.12.2",
'importlib-metadata>=6.6; python_version < "3.8"',
'importlib-metadata>=6.7; python_version < "3.8"',
"packaging>=23.1",
"platformdirs>=3.5.3",
"pluggy>=1",
"platformdirs>=3.8",
"pluggy>=1.2",
"pyproject-api>=1.5.2",
'tomli>=2.0.1; python_version < "3.11"',
'typing-extensions>=4.6.3; python_version < "3.8"',
Expand All @@ -65,7 +65,7 @@ optional-dependencies.docs = [
"furo>=2023.5.20",
"sphinx>=7.0.1",
"sphinx-argparse-cli>=1.11.1",
"sphinx-autodoc-typehints!=1.23.4,>=1.23.2",
"sphinx-autodoc-typehints!=1.23.4,>=1.23.3",
"sphinx-copybutton>=0.5.2",
"sphinx-inline-tabs>=2023.4.21",
"sphinxcontrib-towncrier>=0.2.1a0",
Expand All @@ -82,7 +82,7 @@ optional-dependencies.testing = [
"hatch-vcs>=0.3",
"hatchling>=1.17.1",
"psutil>=5.9.5",
"pytest>=7.3.2",
"pytest>=7.4",
"pytest-cov>=4.1",
"pytest-mock>=3.11.1",
"pytest-xdist>=3.3.1",
Expand Down
4 changes: 2 additions & 2 deletions src/tox/config/cli/ini.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import os
from configparser import ConfigParser
from pathlib import Path
from typing import Any
from typing import Any, ClassVar

from platformdirs import user_config_dir

Expand All @@ -18,7 +18,7 @@

class IniConfig:
TOX_CONFIG_FILE_ENV_VAR = "TOX_USER_CONFIG_FILE"
STATE = {None: "failed to parse", True: "active", False: "missing"}
STATE: ClassVar[dict[bool | None, str]] = {None: "failed to parse", True: "active", False: "missing"}

def __init__(self) -> None:
config_file = os.environ.get(self.TOX_CONFIG_FILE_ENV_VAR, None)
Expand Down
3 changes: 1 addition & 2 deletions src/tox/config/loader/ini/replace.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,7 @@ def replace_reference( # noqa: PLR0912, C901
exception = exc
else:
as_str, _ = stringify(value)
as_str = as_str.replace("#", r"\#") # escape comment characters as these will be stripped
return as_str
return as_str.replace("#", r"\#") # escape comment characters as these will be stripped
except Exception as exc: # noqa: BLE001
exception = exc
if exception is not None:
Expand Down
2 changes: 1 addition & 1 deletion src/tox/config/loader/section.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def __repr__(self) -> str:

def __eq__(self, other: Any) -> bool:
return isinstance(other, self.__class__) and (self._prefix, self._name) == (
other._prefix, # noqa: SLF001
other._prefix,
other.name,
)

Expand Down
9 changes: 6 additions & 3 deletions src/tox/config/loader/str_convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@
import sys
from itertools import chain
from pathlib import Path
from typing import Any, Iterator
from typing import TYPE_CHECKING, Any, Iterator

from tox.config.loader.convert import Convert
from tox.config.types import Command, EnvList

if TYPE_CHECKING:
from typing import Final


class StrConvert(Convert[str]):
"""A class converting string values to tox types."""
Expand Down Expand Up @@ -111,8 +114,8 @@ def to_env_list(value: str) -> EnvList:
elements = list(chain.from_iterable(extend_factors(expr) for expr in value.split("\n")))
return EnvList(elements)

TRUTHFUL_VALUES = {"true", "1", "yes", "on"}
FALSE_VALUES = {"false", "0", "no", "off", ""}
TRUTHFUL_VALUES: Final[set[str]] = {"true", "1", "yes", "on"}
FALSE_VALUES: Final[set[str]] = {"false", "0", "no", "off", ""}
VALID_BOOL = sorted(TRUTHFUL_VALUES | FALSE_VALUES)

@staticmethod
Expand Down
2 changes: 1 addition & 1 deletion src/tox/config/of_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def __init__( # noqa: PLR0913
of_type: type[T],
default: Callable[[Config, str | None], T] | T,
post_process: Callable[[T], T] | None = None,
factory: Factory[T] = None,
factory: Factory[T] | None = None,
) -> None:
super().__init__(keys, desc)
self.of_type = of_type
Expand Down
2 changes: 1 addition & 1 deletion src/tox/config/sets.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def add_config( # noqa: PLR0913
default: Callable[[Config, str | None], V] | V,
desc: str,
post_process: Callable[[V], V] | None = None,
factory: Factory[Any] = None,
factory: Factory[Any] | None = None,
) -> ConfigDynamicDefinition[V]:
"""
Add configuration value.
Expand Down
3 changes: 1 addition & 2 deletions src/tox/plugin/inline.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ def _load_plugin(path: Path) -> ModuleType:
try:
if module_name in sys.modules:
del sys.modules[module_name] # pragma: no cover
module = importlib.import_module(module_name)
return module
return importlib.import_module(module_name)
finally:
del sys.path[0]
4 changes: 2 additions & 2 deletions src/tox/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from io import BytesIO, TextIOWrapper
from pathlib import Path
from threading import Thread, current_thread, enumerate, local
from typing import IO, Iterator, Tuple
from typing import IO, ClassVar, Iterator, Tuple

from colorama import Fore, Style, init

Expand All @@ -29,7 +29,7 @@
class _LogThreadLocal(local):
"""A thread local variable that inherits values from its parent."""

_ident_to_data: dict[int | None, str] = {}
_ident_to_data: ClassVar[dict[int | None, str]] = {}

def __init__(self, out_err: OutErr) -> None:
self.name = self._ident_to_data.get(getattr(current_thread(), "parent_ident", None), "ROOT")
Expand Down
3 changes: 1 addition & 2 deletions src/tox/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ def main(args: Sequence[str]) -> int:
if result is not False:
return result
handler = state._options.cmd_handlers[state.conf.options.command] # noqa: SLF001
result = handler(state)
return result
return handler(state)


def setup_state(args: Sequence[str]) -> State:
Expand Down
2 changes: 1 addition & 1 deletion src/tox/session/env_select.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def __repr__(self) -> str:
return f"{self.__class__.__name__}({'' if self.is_default_list else repr(str(self))})"

def __eq__(self, other: Any) -> bool:
return type(self) == type(other) and self._names == other._names # noqa: SLF001
return type(self) == type(other) and self._names == other._names

def __ne__(self, other: Any) -> bool:
return not (self == other)
Expand Down
6 changes: 2 additions & 4 deletions src/tox/tox_env/python/pip/req/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,7 @@ def _get_file_content(self, url: str) -> str:
scheme = get_url_scheme(url)
if scheme in ["http", "https"]:
with urlopen(url) as response: # noqa: S310
text = self._read_decode(response)
return text
return self._read_decode(response)
elif scheme == "file":
url = url_to_path(url)
try:
Expand Down Expand Up @@ -275,8 +274,7 @@ def _pre_process(self, content: str) -> ReqFileLines:
lines_enum: ReqFileLines = enumerate(content.splitlines(), start=1)
lines_enum = self._join_lines(lines_enum)
lines_enum = self._ignore_comments(lines_enum)
lines_enum = self._expand_env_variables(lines_enum)
return lines_enum
return self._expand_env_variables(lines_enum)

def _parse_line(self, line: str) -> tuple[str, Namespace]:
args_str, options_str = self._break_args_options(line)
Expand Down
3 changes: 1 addition & 2 deletions src/tox/tox_env/python/pip/req/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ def url_to_path(url: str) -> str:
else:
msg = f"non-local file URIs are not supported on this platform: {url!r}"
raise ValueError(msg)
path = url2pathname(netloc + path)
return path
return url2pathname(netloc + path)


def handle_binary_option(value: str, target: set[str], other: set[str]) -> None:
Expand Down
6 changes: 3 additions & 3 deletions src/tox/tox_env/python/pip/req_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
if TYPE_CHECKING:
from argparse import ArgumentParser, Namespace
from pathlib import Path
from typing import Final


class PythonDeps(RequirementsFile):
# these options are valid in requirements.txt, but not via pip cli and
# thus cannot be used in the testenv `deps` list
_illegal_options = ["hash"]
_illegal_options: Final[list[str]] = ["hash"]

def __init__(self, raw: str, root: Path) -> None:
super().__init__(root / "tox.ini", constraint=False)
Expand Down Expand Up @@ -70,8 +71,7 @@ def _normalize_raw(raw: str) -> str:
# for tox<4 supporting requirement/constraint files via -rreq.txt/-creq.txt
lines.append(PythonDeps._normalize_line(line))
adjusted = "\n".join(lines)
raw = f"{adjusted}\n" if raw.endswith("\\\n") else adjusted # preserve trailing newline if input has it
return raw
return f"{adjusted}\n" if raw.endswith("\\\n") else adjusted # preserve trailing newline if input has it

@staticmethod
def _normalize_line(line: str) -> str:
Expand Down
7 changes: 4 additions & 3 deletions src/tox/util/spinner.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@

if TYPE_CHECKING:
from types import TracebackType
from typing import Any, ClassVar

if sys.platform == "win32": # pragma: win32 cover
import ctypes

class _CursorInfo(ctypes.Structure):
_fields_ = [("size", ctypes.c_int), ("visible", ctypes.c_byte)]
_fields_: ClassVar[list[tuple[str, Any]]] = [("size", ctypes.c_int), ("visible", ctypes.c_byte)]


def _file_support_encoding(chars: Sequence[str], file: IO[str]) -> bool:
Expand Down Expand Up @@ -47,8 +48,8 @@ class Outcome(NamedTuple):
class Spinner:
CLEAR_LINE = "\033[K"
max_width = 120
UNICODE_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
ASCII_FRAMES = ["|", "-", "+", "x", "*"]
UNICODE_FRAMES: ClassVar[list[str]] = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
ASCII_FRAMES: ClassVar[list[str]] = ["|", "-", "+", "x", "*"]
UNICODE_OUTCOME = Outcome(ok="✔", fail="✖", skip="⚠")
ASCII_OUTCOME = Outcome(ok="+", fail="!", skip="?")

Expand Down
4 changes: 2 additions & 2 deletions tests/util/test_ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"TEAMCITY_VERSION": None, # TeamCity
"TRAVIS": "true", # Travis CI
}.items(),
ids=lambda v: v[0], # type: ignore[no-any-return]
ids=lambda v: v[0],
)
def test_is_ci(env_var: tuple[str, str | None], monkeypatch: pytest.MonkeyPatch) -> None:
for var in _ENV_VARS:
Expand All @@ -41,7 +41,7 @@ def test_is_ci(env_var: tuple[str, str | None], monkeypatch: pytest.MonkeyPatch)
"GITHUB_ACTIONS": "", # GitHub Actions
"TRAVIS": "", # Travis CI
}.items(),
ids=lambda v: v[0], # type: ignore[no-any-return]
ids=lambda v: v[0],
)
def test_is_ci_bad_set(env_var: tuple[str, str], monkeypatch: pytest.MonkeyPatch) -> None:
for var in _ENV_VARS:
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ commands =
[testenv:type]
description = run type check on code base
deps =
mypy==1.3
mypy==1.4.1
types-cachetools>=5.3.0.5
types-chardet>=5.0.4.6
commands =
Expand Down