Skip to content

Commit 5c2bc72

Browse files
refactor(feature_flags): use standard collections for type (#6489)
Using generics types
1 parent c8e88c4 commit 5c2bc72

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

aws_lambda_powertools/utilities/feature_flags/feature_flags.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import logging
4-
from typing import TYPE_CHECKING, Any, Callable, List, cast
4+
from typing import TYPE_CHECKING, Any, cast
55

66
from aws_lambda_powertools.utilities.feature_flags import schema
77
from aws_lambda_powertools.utilities.feature_flags.comparators import (
@@ -16,6 +16,8 @@
1616
from aws_lambda_powertools.utilities.feature_flags.exceptions import ConfigurationStoreError
1717

1818
if TYPE_CHECKING:
19+
from collections.abc import Callable
20+
1921
from aws_lambda_powertools.logging import Logger
2022
from aws_lambda_powertools.utilities.feature_flags.base import StoreProvider
2123
from aws_lambda_powertools.utilities.feature_flags.types import JSONType, P, T
@@ -103,7 +105,7 @@ def _evaluate_conditions(
103105
) -> bool:
104106
"""Evaluates whether context matches conditions, return False otherwise"""
105107
rule_match_value = rule.get(schema.RULE_MATCH_VALUE)
106-
conditions = cast(List[dict], rule.get(schema.CONDITIONS_KEY))
108+
conditions = cast(list[dict], rule.get(schema.CONDITIONS_KEY))
107109

108110
if not conditions:
109111
self.logger.debug(

tests/functional/feature_flags/_boto3/test_feature_flags.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
from __future__ import annotations
2+
13
from io import BytesIO
24
from json import dumps
3-
from typing import Dict, List, Optional
45

56
import boto3
67
import pytest
@@ -37,10 +38,10 @@ def config():
3738

3839
def init_feature_flags(
3940
mocker,
40-
mock_schema: Dict,
41+
mock_schema: dict,
4142
config: Config,
4243
envelope: str = "",
43-
jmespath_options: Optional[Dict] = None,
44+
jmespath_options: dict | None = None,
4445
) -> FeatureFlags:
4546
environment = "test_env"
4647
application = "test_app"
@@ -689,7 +690,7 @@ def test_multiple_features_enabled(mocker, config):
689690
},
690691
}
691692
feature_flags = init_feature_flags(mocker, mocked_app_config_schema, config)
692-
enabled_list: List[str] = feature_flags.get_enabled_features(context={"tenant_id": "6", "username": "a"})
693+
enabled_list: list[str] = feature_flags.get_enabled_features(context={"tenant_id": "6", "username": "a"})
693694
assert enabled_list == expected_value
694695

695696

@@ -1430,7 +1431,7 @@ def test_get_all_enabled_features_boolean_and_non_boolean(mocker, config):
14301431
}
14311432

14321433
feature_flags = init_feature_flags(mocker, mocked_app_config_schema, config)
1433-
enabled_list: List[str] = feature_flags.get_enabled_features(context={"tenant_id": "6", "username": "a"})
1434+
enabled_list: list[str] = feature_flags.get_enabled_features(context={"tenant_id": "6", "username": "a"})
14341435
assert enabled_list == expected_value
14351436

14361437

@@ -1442,7 +1443,7 @@ def test_get_all_enabled_features_non_boolean_truthy_defaults(mocker, config):
14421443
}
14431444

14441445
feature_flags = init_feature_flags(mocker, mocked_app_config_schema, config)
1445-
enabled_list: List[str] = feature_flags.get_enabled_features(context={"tenant_id": "6", "username": "a"})
1446+
enabled_list: list[str] = feature_flags.get_enabled_features(context={"tenant_id": "6", "username": "a"})
14461447
assert enabled_list == expected_value
14471448

14481449

tests/functional/feature_flags/_boto3/test_schema_validation.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
from __future__ import annotations
2+
13
import re
24

35
import pytest
46

5-
from aws_lambda_powertools.logging.logger import Logger # noqa: F401
67
from aws_lambda_powertools.utilities.feature_flags.exceptions import (
78
SchemaValidationError,
89
)

tests/functional/feature_flags/_boto3/test_time_based_actions.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
from __future__ import annotations
2+
13
import datetime
2-
from typing import Any, Dict, Optional, Tuple
4+
from typing import Any
35

46
from botocore.config import Config
57
from dateutil.tz import gettz
@@ -23,9 +25,9 @@
2325

2426
def evaluate_mocked_schema(
2527
mocker,
26-
rules: Dict[str, Any],
27-
mocked_time: Tuple[int, int, int, int, int, int, datetime.tzinfo], # year, month, day, hour, minute, second
28-
context: Optional[Dict[str, Any]] = None,
28+
rules: dict[str, Any],
29+
mocked_time: tuple[int, int, int, int, int, int, datetime.tzinfo], # year, month, day, hour, minute, second
30+
context: dict[str, Any] | None = None,
2931
) -> JSONType:
3032
"""
3133
This helper does the following:
@@ -510,7 +512,7 @@ def test_time_based_multiple_conditions_utc_days_range_and_certain_hours_rule_ma
510512

511513

512514
def test_time_based_multiple_conditions_utc_days_range_and_certain_hours_no_rule_match(mocker):
513-
def evaluate(mocked_time: Tuple[int, int, int, int, int, int, datetime.tzinfo]):
515+
def evaluate(mocked_time: tuple[int, int, int, int, int, int, datetime.tzinfo]):
514516
evaluate_mocked_schema(
515517
mocker=mocker,
516518
rules={

0 commit comments

Comments
 (0)