From 56a760ee7d11c38ed6c6b8528588d465031c6599 Mon Sep 17 00:00:00 2001 From: Noah Hall Date: Thu, 28 Oct 2021 15:06:13 -0400 Subject: [PATCH 1/3] add flake8-annotations package for type linting - add pkg in requirements-dev.txt - require pkg in pre-commit config - add some easily resolved annotations in tests - ignore some type warnings in tox.ini --- .pre-commit-config.yaml | 2 +- requirements-dev.txt | 1 + tests/test_arrow.py | 40 ++++++++++++++++++++-------------------- tox.ini | 4 ++-- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 70c19ac6..c65b2618 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -42,7 +42,7 @@ repos: rev: 4.0.1 hooks: - id: flake8 - additional_dependencies: [flake8-bugbear] + additional_dependencies: [flake8-bugbear,flake8-annotations] - repo: https://github.com/pre-commit/mirrors-mypy rev: 'v0.910-1' hooks: diff --git a/requirements-dev.txt b/requirements-dev.txt index 75f44341..10e86a74 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,4 +1,5 @@ dateparser==1.* +flake8-annotations==2.* pre-commit==2.* pytest==6.* pytest-cov==3.* diff --git a/tests/test_arrow.py b/tests/test_arrow.py index 4c9ca110..3068d2c8 100644 --- a/tests/test_arrow.py +++ b/tests/test_arrow.py @@ -2341,7 +2341,7 @@ def test_years(self): # Fixtures for Dehumanize @pytest.fixture(scope="class") -def locale_list_no_weeks(): +def locale_list_no_weeks() -> list[str]: tested_langs = [ "en", "en-us", @@ -2455,7 +2455,7 @@ def locale_list_no_weeks(): @pytest.fixture(scope="class") -def locale_list_with_weeks(): +def locale_list_with_weeks() -> list[str]: tested_langs = [ "en", "en-us", @@ -2517,7 +2517,7 @@ def locale_list_with_weeks(): class TestArrowDehumanize: - def test_now(self, locale_list_no_weeks): + def test_now(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2535,7 +2535,7 @@ def test_now(self, locale_list_no_weeks): assert arw.dehumanize(second_ago_string, locale=lang) == arw assert arw.dehumanize(second_future_string, locale=lang) == arw - def test_seconds(self, locale_list_no_weeks): + def test_seconds(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2553,7 +2553,7 @@ def test_seconds(self, locale_list_no_weeks): assert arw.dehumanize(second_ago_string, locale=lang) == second_ago assert arw.dehumanize(second_future_string, locale=lang) == second_future - def test_minute(self, locale_list_no_weeks): + def test_minute(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2571,7 +2571,7 @@ def test_minute(self, locale_list_no_weeks): assert arw.dehumanize(minute_ago_string, locale=lang) == minute_ago assert arw.dehumanize(minute_future_string, locale=lang) == minute_future - def test_minutes(self, locale_list_no_weeks): + def test_minutes(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2589,7 +2589,7 @@ def test_minutes(self, locale_list_no_weeks): assert arw.dehumanize(minute_ago_string, locale=lang) == minute_ago assert arw.dehumanize(minute_future_string, locale=lang) == minute_future - def test_hour(self, locale_list_no_weeks): + def test_hour(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2605,7 +2605,7 @@ def test_hour(self, locale_list_no_weeks): assert arw.dehumanize(hour_ago_string, locale=lang) == hour_ago assert arw.dehumanize(hour_future_string, locale=lang) == hour_future - def test_hours(self, locale_list_no_weeks): + def test_hours(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2621,7 +2621,7 @@ def test_hours(self, locale_list_no_weeks): assert arw.dehumanize(hour_ago_string, locale=lang) == hour_ago assert arw.dehumanize(hour_future_string, locale=lang) == hour_future - def test_week(self, locale_list_with_weeks): + def test_week(self, locale_list_with_weeks: list[str]): for lang in locale_list_with_weeks: @@ -2637,7 +2637,7 @@ def test_week(self, locale_list_with_weeks): assert arw.dehumanize(week_ago_string, locale=lang) == week_ago assert arw.dehumanize(week_future_string, locale=lang) == week_future - def test_weeks(self, locale_list_with_weeks): + def test_weeks(self, locale_list_with_weeks: list[str]): for lang in locale_list_with_weeks: @@ -2653,7 +2653,7 @@ def test_weeks(self, locale_list_with_weeks): assert arw.dehumanize(week_ago_string, locale=lang) == week_ago assert arw.dehumanize(week_future_string, locale=lang) == week_future - def test_year(self, locale_list_no_weeks): + def test_year(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2669,7 +2669,7 @@ def test_year(self, locale_list_no_weeks): assert arw.dehumanize(year_ago_string, locale=lang) == year_ago assert arw.dehumanize(year_future_string, locale=lang) == year_future - def test_years(self, locale_list_no_weeks): + def test_years(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2685,7 +2685,7 @@ def test_years(self, locale_list_no_weeks): assert arw.dehumanize(year_ago_string, locale=lang) == year_ago assert arw.dehumanize(year_future_string, locale=lang) == year_future - def test_gt_than_10_years(self, locale_list_no_weeks): + def test_gt_than_10_years(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2701,7 +2701,7 @@ def test_gt_than_10_years(self, locale_list_no_weeks): assert arw.dehumanize(year_ago_string, locale=lang) == year_ago assert arw.dehumanize(year_future_string, locale=lang) == year_future - def test_mixed_granularity(self, locale_list_no_weeks): + def test_mixed_granularity(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2719,7 +2719,7 @@ def test_mixed_granularity(self, locale_list_no_weeks): assert arw.dehumanize(past_string, locale=lang) == past assert arw.dehumanize(future_string, locale=lang) == future - def test_mixed_granularity_hours(self, locale_list_no_weeks): + def test_mixed_granularity_hours(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2737,7 +2737,7 @@ def test_mixed_granularity_hours(self, locale_list_no_weeks): assert arw.dehumanize(past_string, locale=lang) == past assert arw.dehumanize(future_string, locale=lang) == future - def test_mixed_granularity_day(self, locale_list_no_weeks): + def test_mixed_granularity_day(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2755,7 +2755,7 @@ def test_mixed_granularity_day(self, locale_list_no_weeks): assert arw.dehumanize(past_string, locale=lang) == past assert arw.dehumanize(future_string, locale=lang) == future - def test_mixed_granularity_day_hour(self, locale_list_no_weeks): + def test_mixed_granularity_day_hour(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2812,7 +2812,7 @@ def test_normalized_locale(self): assert arw.dehumanize(second_future_string, locale="zh_hk") == second_future # Ensures relative units are required in string - def test_require_relative_unit(self, locale_list_no_weeks): + def test_require_relative_unit(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2834,7 +2834,7 @@ def test_require_relative_unit(self, locale_list_no_weeks): arw.dehumanize(second_future_string, locale=lang) # Test for scrambled input - def test_scrambled_input(self, locale_list_no_weeks): + def test_scrambled_input(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: @@ -2862,7 +2862,7 @@ def test_scrambled_input(self, locale_list_no_weeks): with pytest.raises(ValueError): arw.dehumanize(second_future_string, locale=lang) - def test_no_units_modified(self, locale_list_no_weeks): + def test_no_units_modified(self, locale_list_no_weeks: list[str]): for lang in locale_list_no_weeks: diff --git a/tox.ini b/tox.ini index 68b3240a..b7746176 100644 --- a/tox.ini +++ b/tox.ini @@ -49,5 +49,5 @@ multi_line_output = 3 include_trailing_comma = true [flake8] -per-file-ignores = arrow/__init__.py:F401 -ignore = E203,E501,W503 +per-file-ignores = arrow/__init__.py:F401,tests/*:ANN001,ANN201 +ignore = E203,E501,W503,ANN101,ANN102 From 9b456ce32ea968082379d31e58703e50e3e26b8d Mon Sep 17 00:00:00 2001 From: Noah Hall Date: Fri, 29 Oct 2021 16:30:28 -0400 Subject: [PATCH 2/3] fix python version incompatibility (list vs typing.List) --- tests/test_arrow.py | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/tests/test_arrow.py b/tests/test_arrow.py index 3068d2c8..19b97a53 100644 --- a/tests/test_arrow.py +++ b/tests/test_arrow.py @@ -2,6 +2,7 @@ import sys import time from datetime import date, datetime, timedelta +from typing import List import dateutil import pytest @@ -2341,7 +2342,7 @@ def test_years(self): # Fixtures for Dehumanize @pytest.fixture(scope="class") -def locale_list_no_weeks() -> list[str]: +def locale_list_no_weeks() -> List[str]: tested_langs = [ "en", "en-us", @@ -2455,7 +2456,7 @@ def locale_list_no_weeks() -> list[str]: @pytest.fixture(scope="class") -def locale_list_with_weeks() -> list[str]: +def locale_list_with_weeks() -> List[str]: tested_langs = [ "en", "en-us", @@ -2517,7 +2518,7 @@ def locale_list_with_weeks() -> list[str]: class TestArrowDehumanize: - def test_now(self, locale_list_no_weeks: list[str]): + def test_now(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2535,7 +2536,7 @@ def test_now(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(second_ago_string, locale=lang) == arw assert arw.dehumanize(second_future_string, locale=lang) == arw - def test_seconds(self, locale_list_no_weeks: list[str]): + def test_seconds(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2553,7 +2554,7 @@ def test_seconds(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(second_ago_string, locale=lang) == second_ago assert arw.dehumanize(second_future_string, locale=lang) == second_future - def test_minute(self, locale_list_no_weeks: list[str]): + def test_minute(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2571,7 +2572,7 @@ def test_minute(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(minute_ago_string, locale=lang) == minute_ago assert arw.dehumanize(minute_future_string, locale=lang) == minute_future - def test_minutes(self, locale_list_no_weeks: list[str]): + def test_minutes(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2589,7 +2590,7 @@ def test_minutes(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(minute_ago_string, locale=lang) == minute_ago assert arw.dehumanize(minute_future_string, locale=lang) == minute_future - def test_hour(self, locale_list_no_weeks: list[str]): + def test_hour(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2605,7 +2606,7 @@ def test_hour(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(hour_ago_string, locale=lang) == hour_ago assert arw.dehumanize(hour_future_string, locale=lang) == hour_future - def test_hours(self, locale_list_no_weeks: list[str]): + def test_hours(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2621,7 +2622,7 @@ def test_hours(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(hour_ago_string, locale=lang) == hour_ago assert arw.dehumanize(hour_future_string, locale=lang) == hour_future - def test_week(self, locale_list_with_weeks: list[str]): + def test_week(self, locale_list_with_weeks: List[str]): for lang in locale_list_with_weeks: @@ -2637,7 +2638,7 @@ def test_week(self, locale_list_with_weeks: list[str]): assert arw.dehumanize(week_ago_string, locale=lang) == week_ago assert arw.dehumanize(week_future_string, locale=lang) == week_future - def test_weeks(self, locale_list_with_weeks: list[str]): + def test_weeks(self, locale_list_with_weeks: List[str]): for lang in locale_list_with_weeks: @@ -2653,7 +2654,7 @@ def test_weeks(self, locale_list_with_weeks: list[str]): assert arw.dehumanize(week_ago_string, locale=lang) == week_ago assert arw.dehumanize(week_future_string, locale=lang) == week_future - def test_year(self, locale_list_no_weeks: list[str]): + def test_year(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2669,7 +2670,7 @@ def test_year(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(year_ago_string, locale=lang) == year_ago assert arw.dehumanize(year_future_string, locale=lang) == year_future - def test_years(self, locale_list_no_weeks: list[str]): + def test_years(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2685,7 +2686,7 @@ def test_years(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(year_ago_string, locale=lang) == year_ago assert arw.dehumanize(year_future_string, locale=lang) == year_future - def test_gt_than_10_years(self, locale_list_no_weeks: list[str]): + def test_gt_than_10_years(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2701,7 +2702,7 @@ def test_gt_than_10_years(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(year_ago_string, locale=lang) == year_ago assert arw.dehumanize(year_future_string, locale=lang) == year_future - def test_mixed_granularity(self, locale_list_no_weeks: list[str]): + def test_mixed_granularity(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2719,7 +2720,7 @@ def test_mixed_granularity(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(past_string, locale=lang) == past assert arw.dehumanize(future_string, locale=lang) == future - def test_mixed_granularity_hours(self, locale_list_no_weeks: list[str]): + def test_mixed_granularity_hours(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2737,7 +2738,7 @@ def test_mixed_granularity_hours(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(past_string, locale=lang) == past assert arw.dehumanize(future_string, locale=lang) == future - def test_mixed_granularity_day(self, locale_list_no_weeks: list[str]): + def test_mixed_granularity_day(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2755,7 +2756,7 @@ def test_mixed_granularity_day(self, locale_list_no_weeks: list[str]): assert arw.dehumanize(past_string, locale=lang) == past assert arw.dehumanize(future_string, locale=lang) == future - def test_mixed_granularity_day_hour(self, locale_list_no_weeks: list[str]): + def test_mixed_granularity_day_hour(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2812,7 +2813,7 @@ def test_normalized_locale(self): assert arw.dehumanize(second_future_string, locale="zh_hk") == second_future # Ensures relative units are required in string - def test_require_relative_unit(self, locale_list_no_weeks: list[str]): + def test_require_relative_unit(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2834,7 +2835,7 @@ def test_require_relative_unit(self, locale_list_no_weeks: list[str]): arw.dehumanize(second_future_string, locale=lang) # Test for scrambled input - def test_scrambled_input(self, locale_list_no_weeks: list[str]): + def test_scrambled_input(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: @@ -2862,7 +2863,7 @@ def test_scrambled_input(self, locale_list_no_weeks: list[str]): with pytest.raises(ValueError): arw.dehumanize(second_future_string, locale=lang) - def test_no_units_modified(self, locale_list_no_weeks: list[str]): + def test_no_units_modified(self, locale_list_no_weeks: List[str]): for lang in locale_list_no_weeks: From fff8ba768be932feaceaff4ef4bfb16fb937b7ff Mon Sep 17 00:00:00 2001 From: Noah Hall Date: Sun, 31 Oct 2021 21:40:24 -0400 Subject: [PATCH 3/3] remove flake8-annotations from pip requirements --- requirements-dev.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 10e86a74..75f44341 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,4 @@ dateparser==1.* -flake8-annotations==2.* pre-commit==2.* pytest==6.* pytest-cov==3.*