From b412f292a9a2b81d44a5e1bcba5a4aa3211d329c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Mazzucotelli?= Date: Tue, 27 Jun 2023 23:33:52 +0200 Subject: [PATCH] refactor: Remove Python 3.7 related code --- src/duty/callables/coverage.py | 8 +-- src/duty/callables/flake8.py | 7 +-- src/duty/callables/interrogate.py | 8 +-- src/duty/callables/isort.py | 8 +-- src/duty/callables/mypy.py | 8 +-- src/duty/callables/pytest.py | 8 +-- src/duty/callables/safety.py | 8 +-- src/duty/validation.py | 7 +-- tests/fixtures/validation.py | 16 ++++++ tests/fixtures/validation_38.py | 14 ----- tests/test_validation.py | 85 ++++++++++--------------------- 11 files changed, 50 insertions(+), 127 deletions(-) delete mode 100644 tests/fixtures/validation_38.py diff --git a/src/duty/callables/coverage.py b/src/duty/callables/coverage.py index ce1f648..b22361b 100644 --- a/src/duty/callables/coverage.py +++ b/src/duty/callables/coverage.py @@ -2,16 +2,10 @@ from __future__ import annotations -import sys +from typing import Literal from failprint.lazy import lazy -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - def _run(args: list[str]) -> None: from coverage.cmdline import main as coverage diff --git a/src/duty/callables/flake8.py b/src/duty/callables/flake8.py index 94c7f51..ea0d47f 100644 --- a/src/duty/callables/flake8.py +++ b/src/duty/callables/flake8.py @@ -3,15 +3,10 @@ from __future__ import annotations import sys +from typing import Literal from failprint.lazy import lazy -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - @lazy(name="flake8") def run( diff --git a/src/duty/callables/interrogate.py b/src/duty/callables/interrogate.py index 5d05583..d8b8f0c 100644 --- a/src/duty/callables/interrogate.py +++ b/src/duty/callables/interrogate.py @@ -2,16 +2,10 @@ from __future__ import annotations -import sys +from typing import Literal from failprint.lazy import lazy -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - _BADGE_STYLE = Literal["flat", "flat-square", "flat-square-modified", "for-the-badge", "plastic", "social"] diff --git a/src/duty/callables/isort.py b/src/duty/callables/isort.py index 8d2c2ed..c20d6c8 100644 --- a/src/duty/callables/isort.py +++ b/src/duty/callables/isort.py @@ -2,16 +2,10 @@ from __future__ import annotations -import sys +from typing import Literal from failprint.lazy import lazy -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - Multiline = Literal[ "GRID", "VERTICAL", diff --git a/src/duty/callables/mypy.py b/src/duty/callables/mypy.py index 9c9f95f..c0fefe3 100644 --- a/src/duty/callables/mypy.py +++ b/src/duty/callables/mypy.py @@ -2,18 +2,12 @@ from __future__ import annotations -import sys +from typing import Literal from failprint.lazy import lazy from duty.callables._io import _LazyStderr, _LazyStdout -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - @lazy(name="mypy") def run( diff --git a/src/duty/callables/pytest.py b/src/duty/callables/pytest.py index 8d2f65b..0658f6f 100644 --- a/src/duty/callables/pytest.py +++ b/src/duty/callables/pytest.py @@ -2,16 +2,10 @@ from __future__ import annotations -import sys +from typing import Literal from failprint.lazy import lazy -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - @lazy(name="pytest") def run( diff --git a/src/duty/callables/safety.py b/src/duty/callables/safety.py index f909852..3583849 100644 --- a/src/duty/callables/safety.py +++ b/src/duty/callables/safety.py @@ -5,16 +5,10 @@ import importlib import sys from io import StringIO -from typing import Sequence, cast +from typing import Literal, Sequence, cast from failprint.lazy import lazy -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from typing_extensions import Literal -else: - from typing import Literal - @lazy(name="safety.check") def check( diff --git a/src/duty/validation.py b/src/duty/validation.py index 4186f21..4858916 100644 --- a/src/duty/validation.py +++ b/src/duty/validation.py @@ -8,15 +8,10 @@ from __future__ import annotations import sys +from functools import cached_property from inspect import Parameter, Signature, signature from typing import Any, Callable, Sequence -# TODO: remove once support for Python 3.7 is dropped -if sys.version_info < (3, 8): - from cached_property import cached_property -else: - from functools import cached_property - def to_bool(value: str) -> bool: """Convert a string to a boolean. diff --git a/tests/fixtures/validation.py b/tests/fixtures/validation.py index 2d21d4c..6bffaa3 100644 --- a/tests/fixtures/validation.py +++ b/tests/fixtures/validation.py @@ -28,3 +28,19 @@ def varkw_param(ctx, a: int, **b: int): def varkw_no_annotation(ctx, **a): pass # pragma: no cover + + +def posonly_marker(ctx, a: int, /, b: int): + pass # pragma: no cover + + +def kwonly_marker(ctx, a: int, *, b: int): + pass # pragma: no cover + + +def only_markers(ctx, a: int, /, b: int, *, c: int): + pass # pragma: no cover + + +def full(ctx, a: int, /, b: int, *c: int, d: int, e: int = 0, **f: int): + pass # pragma: no cover diff --git a/tests/fixtures/validation_38.py b/tests/fixtures/validation_38.py deleted file mode 100644 index 33e958c..0000000 --- a/tests/fixtures/validation_38.py +++ /dev/null @@ -1,14 +0,0 @@ -def posonly_marker(ctx, a: int, /, b: int): - pass # pragma: no cover - - -def kwonly_marker(ctx, a: int, *, b: int): - pass # pragma: no cover - - -def only_markers(ctx, a: int, /, b: int, *, c: int): - pass # pragma: no cover - - -def full(ctx, a: int, /, b: int, *c: int, d: int, e: int = 0, **f: int): - pass # pragma: no cover diff --git a/tests/test_validation.py b/tests/test_validation.py index bfcd47b..e7fb3e2 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -2,17 +2,13 @@ from __future__ import annotations -import sys from inspect import Parameter from typing import Any, Callable import pytest from duty.validation import ParamsCaster, cast_arg, to_bool -from tests.fixtures import validation as validation_fixture - -if sys.version_info >= (3, 8, 0): - from tests.fixtures import validation_38 as validation_fixture_38 +from tests.fixtures import validation as valfix @pytest.mark.parametrize( @@ -92,62 +88,33 @@ def test_cast_arg(arg: str, annotation: Any, expected: Any) -> None: _parametrization = [ - (validation_fixture.no_params, (), {}, (), {}), - (validation_fixture.pos_or_kw_param, ("1",), {}, (1,), {}), - (validation_fixture.pos_or_kw_param, (), {"a": "1"}, (), {"a": 1}), - (validation_fixture.pos_or_kw_params, ("1", "2"), {}, (1, 2), {}), - (validation_fixture.pos_or_kw_params, ("1",), {"b": "2"}, (1,), {"b": 2}), - (validation_fixture.pos_or_kw_params, (), {"a": "1", "b": "2"}, (), {"a": 1, "b": 2}), - (validation_fixture.varpos_param, (), {}, (), {}), - (validation_fixture.varpos_param, ("1", "2"), {}, (1, 2), {}), - (validation_fixture.pos_and_varpos_param, ("1",), {}, (1,), {}), - (validation_fixture.pos_and_varpos_param, ("1", "2"), {}, (1, 2), {}), - (validation_fixture.pos_and_varpos_param, ("1", "2", "3"), {}, (1, 2, 3), {}), - (validation_fixture.kwonly_param, (), {"b": "1"}, (), {"b": 1}), - (validation_fixture.kwonly_param, ("2",), {"b": "1"}, (2,), {"b": 1}), - ( - validation_fixture.kwonly_param, - ( - "2", - "3", - ), - {"b": "1"}, - (2, 3), - {"b": 1}, - ), - (validation_fixture.varkw_param, ("1",), {}, (1,), {}), - (validation_fixture.varkw_param, ("1",), {"b": "2"}, (1,), {"b": 2}), - (validation_fixture.varkw_param, ("1",), {"b": "2", "c": "3"}, (1,), {"b": 2, "c": 3}), - (validation_fixture.varkw_no_annotation, (), {"a": "1"}, (), {"a": "1"}), - (validation_fixture.no_params, (), {"a": "1"}, (), {"a": "1"}), + (valfix.no_params, (), {}, (), {}), + (valfix.pos_or_kw_param, ("1",), {}, (1,), {}), + (valfix.pos_or_kw_param, (), {"a": "1"}, (), {"a": 1}), + (valfix.pos_or_kw_params, ("1", "2"), {}, (1, 2), {}), + (valfix.pos_or_kw_params, ("1",), {"b": "2"}, (1,), {"b": 2}), + (valfix.pos_or_kw_params, (), {"a": "1", "b": "2"}, (), {"a": 1, "b": 2}), + (valfix.varpos_param, (), {}, (), {}), + (valfix.varpos_param, ("1", "2"), {}, (1, 2), {}), + (valfix.pos_and_varpos_param, ("1",), {}, (1,), {}), + (valfix.pos_and_varpos_param, ("1", "2"), {}, (1, 2), {}), + (valfix.pos_and_varpos_param, ("1", "2", "3"), {}, (1, 2, 3), {}), + (valfix.kwonly_param, (), {"b": "1"}, (), {"b": 1}), + (valfix.kwonly_param, ("2",), {"b": "1"}, (2,), {"b": 1}), + (valfix.kwonly_param, ("2", "3"), {"b": "1"}, (2, 3), {"b": 1}), + (valfix.varkw_param, ("1",), {}, (1,), {}), + (valfix.varkw_param, ("1",), {"b": "2"}, (1,), {"b": 2}), + (valfix.varkw_param, ("1",), {"b": "2", "c": "3"}, (1,), {"b": 2, "c": 3}), + (valfix.varkw_no_annotation, (), {"a": "1"}, (), {"a": "1"}), + (valfix.posonly_marker, ("1", "2"), {}, (1, 2), {}), + (valfix.posonly_marker, ("1",), {"b": "2"}, (1,), {"b": 2}), + (valfix.kwonly_marker, ("1",), {"b": "2"}, (1,), {"b": 2}), + (valfix.kwonly_marker, (), {"a": "1", "b": "2"}, (), {"a": 1, "b": 2}), + (valfix.only_markers, ("1",), {"b": "2", "c": "3"}, (1,), {"b": 2, "c": 3}), + (valfix.only_markers, ("1", "2"), {"c": "3"}, (1, 2), {"c": 3}), + (valfix.full, ("1", "2", "3", "4"), {"d": "5", "e": "6", "f": "7"}, (1, 2, 3, 4), {"d": 5, "e": 6, "f": 7}), ] -if sys.version_info >= (3, 8, 0): - _parametrization.extend( - [ - (validation_fixture_38.posonly_marker, ("1", "2"), {}, (1, 2), {}), - (validation_fixture_38.posonly_marker, ("1",), {"b": "2"}, (1,), {"b": 2}), - (validation_fixture_38.kwonly_marker, ("1",), {"b": "2"}, (1,), {"b": 2}), - (validation_fixture_38.kwonly_marker, (), {"a": "1", "b": "2"}, (), {"a": 1, "b": 2}), - (validation_fixture_38.only_markers, ("1",), {"b": "2", "c": "3"}, (1,), {"b": 2, "c": 3}), - (validation_fixture_38.only_markers, ("1", "2"), {"c": "3"}, (1, 2), {"c": 3}), - ( - validation_fixture_38.full, - ("1", "2", "3", "4"), - {"d": "5", "e": "6", "f": "7"}, - (1, 2, 3, 4), - {"d": 5, "e": 6, "f": 7}, - ), - ( - validation_fixture_38.full, - ("1", "3", "4"), - {"b": "2", "d": "5"}, - (1, 3, 4), - {"b": 2, "d": 5}, - ), - ], - ) - @pytest.mark.parametrize( ("func", "args", "kwargs", "expected_args", "expected_kwargs"),