From 68ce5eb2fc81df5190ae493b7289d866472da325 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Tue, 25 Jul 2023 14:39:50 +0200 Subject: [PATCH 1/9] fix(parameters): make cache aware of single vs multiple calls Signed-off-by: heitorlessa --- aws_lambda_powertools/utilities/parameters/base.py | 2 +- aws_lambda_powertools/utilities/parameters/types.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/aws_lambda_powertools/utilities/parameters/base.py b/aws_lambda_powertools/utilities/parameters/base.py index 710634636d0..411a2520ae9 100644 --- a/aws_lambda_powertools/utilities/parameters/base.py +++ b/aws_lambda_powertools/utilities/parameters/base.py @@ -27,7 +27,7 @@ from aws_lambda_powertools.shared import constants, user_agent from aws_lambda_powertools.shared.functions import resolve_max_age -from aws_lambda_powertools.utilities.parameters.types import TransformOptions +from aws_lambda_powertools.utilities.parameters.types import RecursiveOptions, TransformOptions from .exceptions import GetParameterError, TransformParameterError diff --git a/aws_lambda_powertools/utilities/parameters/types.py b/aws_lambda_powertools/utilities/parameters/types.py index 6a15873c496..2dbf1593d72 100644 --- a/aws_lambda_powertools/utilities/parameters/types.py +++ b/aws_lambda_powertools/utilities/parameters/types.py @@ -1,3 +1,4 @@ from typing_extensions import Literal TransformOptions = Literal["json", "binary", "auto", None] +RecursiveOptions = Literal[True, False] From ca7a105f4ed9b62ac95be4e49a0ef73a97e5b9d6 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Tue, 25 Jul 2023 15:16:51 +0200 Subject: [PATCH 2/9] chore: cleanup, add test for single and nested Signed-off-by: heitorlessa --- aws_lambda_powertools/utilities/parameters/base.py | 2 +- aws_lambda_powertools/utilities/parameters/types.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/aws_lambda_powertools/utilities/parameters/base.py b/aws_lambda_powertools/utilities/parameters/base.py index 411a2520ae9..710634636d0 100644 --- a/aws_lambda_powertools/utilities/parameters/base.py +++ b/aws_lambda_powertools/utilities/parameters/base.py @@ -27,7 +27,7 @@ from aws_lambda_powertools.shared import constants, user_agent from aws_lambda_powertools.shared.functions import resolve_max_age -from aws_lambda_powertools.utilities.parameters.types import RecursiveOptions, TransformOptions +from aws_lambda_powertools.utilities.parameters.types import TransformOptions from .exceptions import GetParameterError, TransformParameterError diff --git a/aws_lambda_powertools/utilities/parameters/types.py b/aws_lambda_powertools/utilities/parameters/types.py index 2dbf1593d72..6a15873c496 100644 --- a/aws_lambda_powertools/utilities/parameters/types.py +++ b/aws_lambda_powertools/utilities/parameters/types.py @@ -1,4 +1,3 @@ from typing_extensions import Literal TransformOptions = Literal["json", "binary", "auto", None] -RecursiveOptions = Literal[True, False] From c278f232fb2327cd8f05ce819430c4b6b7457644 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 17:39:04 +0200 Subject: [PATCH 3/9] chore: move backwards compat typing types --- .../event_handler/middlewares/base.py | 3 +- aws_lambda_powertools/metrics/functions.py | 3 +- .../metrics/provider/cloudwatch_emf/types.py | 4 +- aws_lambda_powertools/metrics/types.py | 2 +- aws_lambda_powertools/shared/cookies.py | 4 +- aws_lambda_powertools/shared/types.py | 20 +++++--- .../utilities/batch/exceptions.py | 4 +- .../batch/sqs_fifo_partial_processor.py | 3 +- .../utilities/batch/types.py | 7 +-- .../utilities/parameters/ssm.py | 2 +- .../utilities/parameters/types.py | 2 +- .../utilities/parser/models/cloudwatch.py | 4 +- .../utilities/streaming/s3_object.py | 17 +------ ruff.toml | 50 ++++++++++++------- 14 files changed, 67 insertions(+), 58 deletions(-) diff --git a/aws_lambda_powertools/event_handler/middlewares/base.py b/aws_lambda_powertools/event_handler/middlewares/base.py index 32a4486bb31..fb4bf37cc74 100644 --- a/aws_lambda_powertools/event_handler/middlewares/base.py +++ b/aws_lambda_powertools/event_handler/middlewares/base.py @@ -1,10 +1,9 @@ from abc import ABC, abstractmethod from typing import Generic -from typing_extensions import Protocol - from aws_lambda_powertools.event_handler.api_gateway import Response from aws_lambda_powertools.event_handler.types import EventHandlerInstance +from aws_lambda_powertools.shared.types import Protocol class NextMiddleware(Protocol): diff --git a/aws_lambda_powertools/metrics/functions.py b/aws_lambda_powertools/metrics/functions.py index d951c0749a3..e259826f1a7 100644 --- a/aws_lambda_powertools/metrics/functions.py +++ b/aws_lambda_powertools/metrics/functions.py @@ -1,12 +1,11 @@ from __future__ import annotations -from typing import List - from aws_lambda_powertools.metrics.provider.cloudwatch_emf.exceptions import ( MetricResolutionError, MetricUnitError, ) from aws_lambda_powertools.metrics.provider.cloudwatch_emf.metric_properties import MetricResolution, MetricUnit +from aws_lambda_powertools.shared.types import List def extract_cloudwatch_metric_resolution_value(metric_resolutions: List, resolution: int | MetricResolution) -> int: diff --git a/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py b/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py index bf3a48ea13f..359fdc4ee6c 100644 --- a/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +++ b/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py @@ -1,6 +1,4 @@ -from typing import List - -from typing_extensions import NotRequired, TypedDict +from aws_lambda_powertools.shared.types import List, NotRequired, TypedDict class CloudWatchEMFMetric(TypedDict): diff --git a/aws_lambda_powertools/metrics/types.py b/aws_lambda_powertools/metrics/types.py index 76fcf7bd18a..d9eea6fe51e 100644 --- a/aws_lambda_powertools/metrics/types.py +++ b/aws_lambda_powertools/metrics/types.py @@ -1,4 +1,4 @@ -from typing_extensions import NotRequired, TypedDict +from aws_lambda_powertools.shared.types import NotRequired, TypedDict class MetricNameUnitResolution(TypedDict): diff --git a/aws_lambda_powertools/shared/cookies.py b/aws_lambda_powertools/shared/cookies.py index 944bcb5dc9f..1b57d860201 100644 --- a/aws_lambda_powertools/shared/cookies.py +++ b/aws_lambda_powertools/shared/cookies.py @@ -1,7 +1,9 @@ from datetime import datetime from enum import Enum from io import StringIO -from typing import List, Optional +from typing import Optional + +from aws_lambda_powertools.shared.types import List class SameSite(Enum): diff --git a/aws_lambda_powertools/shared/types.py b/aws_lambda_powertools/shared/types.py index b29c04cbe6b..90a959c9ff3 100644 --- a/aws_lambda_powertools/shared/types.py +++ b/aws_lambda_powertools/shared/types.py @@ -1,14 +1,20 @@ import sys from typing import Any, Callable, Dict, List, TypeVar, Union -AnyCallableT = TypeVar("AnyCallableT", bound=Callable[..., Any]) # noqa: VNE001 -# JSON primitives only, mypy doesn't support recursive tho -JSONType = Union[str, int, float, bool, None, Dict[str, Any], List[Any]] +if sys.version_info >= (3, 8): + from typing import Literal, Protocol, TypedDict +else: + from typing_extensions import Literal, Protocol -if sys.version_info >= (3, 8): - from typing import Protocol +if sys.version_info >= (3, 11): + from typing import NotRequired else: - from typing_extensions import Protocol + from typing_extensions import NotRequired + + +AnyCallableT = TypeVar("AnyCallableT", bound=Callable[..., Any]) # noqa: VNE001 +# JSON primitives only, mypy doesn't support recursive tho +JSONType = Union[str, int, float, bool, None, Dict[str, Any], List[Any]] -__all__ = ["Protocol"] +__all__ = ["Protocol", "TypedDict", "Literal", "NotRequired"] diff --git a/aws_lambda_powertools/utilities/batch/exceptions.py b/aws_lambda_powertools/utilities/batch/exceptions.py index 89659e42bf8..ef776c3b9df 100644 --- a/aws_lambda_powertools/utilities/batch/exceptions.py +++ b/aws_lambda_powertools/utilities/batch/exceptions.py @@ -5,7 +5,9 @@ import traceback from types import TracebackType -from typing import List, Optional, Tuple, Type +from typing import Optional, Type + +from aws_lambda_powertools.shared.types import List, Tuple ExceptionInfo = Tuple[Optional[Type[BaseException]], Optional[BaseException], Optional[TracebackType]] diff --git a/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py b/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py index d48749a137e..91992b0f130 100644 --- a/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +++ b/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py @@ -1,5 +1,6 @@ -from typing import List, Optional, Tuple +from typing import Optional +from aws_lambda_powertools.shared.types import List, Tuple from aws_lambda_powertools.utilities.batch import BatchProcessor, EventType from aws_lambda_powertools.utilities.batch.types import BatchSqsTypeModel diff --git a/aws_lambda_powertools/utilities/batch/types.py b/aws_lambda_powertools/utilities/batch/types.py index 4b07dab51a5..40083537e04 100644 --- a/aws_lambda_powertools/utilities/batch/types.py +++ b/aws_lambda_powertools/utilities/batch/types.py @@ -1,10 +1,7 @@ -# -# type specifics -# import sys -from typing import List, Optional, Type, Union +from typing import Optional, Type, Union -from typing_extensions import TypedDict +from aws_lambda_powertools.shared.types import List, TypedDict has_pydantic = "pydantic" in sys.modules diff --git a/aws_lambda_powertools/utilities/parameters/ssm.py b/aws_lambda_powertools/utilities/parameters/ssm.py index dec785b97a8..e27fedb5027 100644 --- a/aws_lambda_powertools/utilities/parameters/ssm.py +++ b/aws_lambda_powertools/utilities/parameters/ssm.py @@ -8,7 +8,6 @@ import boto3 from botocore.config import Config -from typing_extensions import Literal from aws_lambda_powertools.shared import constants from aws_lambda_powertools.shared.functions import ( @@ -16,6 +15,7 @@ resolve_truthy_env_var_choice, slice_dictionary, ) +from aws_lambda_powertools.shared.types import Literal from .base import DEFAULT_MAX_AGE_SECS, DEFAULT_PROVIDERS, BaseProvider, transform_value from .exceptions import GetParameterError diff --git a/aws_lambda_powertools/utilities/parameters/types.py b/aws_lambda_powertools/utilities/parameters/types.py index 6a15873c496..faa06cee89e 100644 --- a/aws_lambda_powertools/utilities/parameters/types.py +++ b/aws_lambda_powertools/utilities/parameters/types.py @@ -1,3 +1,3 @@ -from typing_extensions import Literal +from aws_lambda_powertools.shared.types import Literal TransformOptions = Literal["json", "binary", "auto", None] diff --git a/aws_lambda_powertools/utilities/parser/models/cloudwatch.py b/aws_lambda_powertools/utilities/parser/models/cloudwatch.py index 71e560276a4..d236f4652ed 100644 --- a/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +++ b/aws_lambda_powertools/utilities/parser/models/cloudwatch.py @@ -3,10 +3,12 @@ import logging import zlib from datetime import datetime -from typing import List, Type, Union +from typing import Type, Union from pydantic import BaseModel, Field, validator +from aws_lambda_powertools.shared.types import List + logger = logging.getLogger(__name__) diff --git a/aws_lambda_powertools/utilities/streaming/s3_object.py b/aws_lambda_powertools/utilities/streaming/s3_object.py index 7f0ce17b4ae..3672f9eac27 100644 --- a/aws_lambda_powertools/utilities/streaming/s3_object.py +++ b/aws_lambda_powertools/utilities/streaming/s3_object.py @@ -1,22 +1,9 @@ from __future__ import annotations import io -from typing import ( - IO, - TYPE_CHECKING, - Any, - Iterable, - List, - Optional, - Sequence, - TypeVar, - Union, - cast, - overload, -) - -from typing_extensions import Literal +from typing import IO, TYPE_CHECKING, Any, Optional, TypeVar, Union, cast, overload +from aws_lambda_powertools.shared.types import Iterable, List, Literal, Sequence from aws_lambda_powertools.utilities.streaming._s3_seekable_io import _S3SeekableIO from aws_lambda_powertools.utilities.streaming.transformations import ( CsvTransform, diff --git a/ruff.toml b/ruff.toml index 83910e44ebf..a0f8e4fe74f 100644 --- a/ruff.toml +++ b/ruff.toml @@ -1,46 +1,59 @@ # Enable rules. select = [ - "A", # flake8-builtins - https://beta.ruff.rs/docs/rules/#flake8-builtins-a - "B", # flake8-bugbear-b - https://beta.ruff.rs/docs/rules/#flake8-bugbear-b - "C4", # flake8-comprehensions - https://beta.ruff.rs/docs/rules/#flake8-comprehensions-c4 + "A", # flake8-builtins - https://beta.ruff.rs/docs/rules/#flake8-builtins-a + "B", # flake8-bugbear-b - https://beta.ruff.rs/docs/rules/#flake8-bugbear-b + "C4", # flake8-comprehensions - https://beta.ruff.rs/docs/rules/#flake8-comprehensions-c4 "C90", # mccabe - https://beta.ruff.rs/docs/rules/#mccabe-c90 "COM", # flak8-commas - https://beta.ruff.rs/docs/rules/#flake8-commas-com #"D", # pydocstyle - not enabled temporarily - "E", # pycodestyle error - https://beta.ruff.rs/docs/rules/#error-e + "E", # pycodestyle error - https://beta.ruff.rs/docs/rules/#error-e "ERA", # flake8-eradicate - https://beta.ruff.rs/docs/rules/#eradicate-era - "FA", # flake8-future-annotations - https://beta.ruff.rs/docs/rules/#flake8-future-annotations-fa + "FA", # flake8-future-annotations - https://beta.ruff.rs/docs/rules/#flake8-future-annotations-fa "FIX", # flake8-fixme - https://beta.ruff.rs/docs/rules/#flake8-fixme-fix - "F", # pyflakes - https://beta.ruff.rs/docs/rules/#pyflakes-f - "I", # isort - https://beta.ruff.rs/docs/rules/#isort-i + "F", # pyflakes - https://beta.ruff.rs/docs/rules/#pyflakes-f + "I", # isort - https://beta.ruff.rs/docs/rules/#isort-i "ICN", # flake8-import-conventions - https://beta.ruff.rs/docs/rules/#flake8-import-conventions-icn "ISC", # flake8-implicit-str-concat - https://beta.ruff.rs/docs/rules/#flake8-implicit-str-concat-isc "PLE", # pylint error - https://beta.ruff.rs/docs/rules/#error-ple "PLC", # pylint convention - https://beta.ruff.rs/docs/rules/#convention-plc "PLR", # pylint refactoring - https://beta.ruff.rs/docs/rules/#refactor-plr "PLW", # pylint warning - https://beta.ruff.rs/docs/rules/#warning-plw - "PL", # pylint - https://beta.ruff.rs/docs/rules/#pylint-pl + "PL", # pylint - https://beta.ruff.rs/docs/rules/#pylint-pl "PYI", # flake8-pyi - https://beta.ruff.rs/docs/rules/#flake8-pyi-pyi - "Q", # flake8-quotes - https://beta.ruff.rs/docs/rules/#flake8-quotes-q + "Q", # flake8-quotes - https://beta.ruff.rs/docs/rules/#flake8-quotes-q "PTH", # flake8-use-pathlib - https://beta.ruff.rs/docs/rules/#flake8-use-pathlib-pth "T10", # flake8-debugger https://beta.ruff.rs/docs/rules/#flake8-debugger-t10 - "TD", # flake8-todo - https://beta.ruff.rs/docs/rules/#flake8-todos-td - "W" # pycodestyle warning - https://beta.ruff.rs/docs/rules/#warning-w + "TD", # flake8-todo - https://beta.ruff.rs/docs/rules/#flake8-todos-td + "W", # pycodestyle warning - https://beta.ruff.rs/docs/rules/#warning-w ] # Ignore specific rules ignore = [ - "W291", # https://beta.ruff.rs/docs/rules/trailing-whitespace/ + "W291", # https://beta.ruff.rs/docs/rules/trailing-whitespace/ "PLR0913", # https://beta.ruff.rs/docs/rules/too-many-arguments/ "PLR2004", #https://beta.ruff.rs/docs/rules/magic-value-comparison/ "PLW0603", #https://beta.ruff.rs/docs/rules/global-statement/ - "B904", # raise-without-from-inside-except - disabled temporarily + "B904", # raise-without-from-inside-except - disabled temporarily "PLC1901", # Compare-to-empty-string - disabled temporarily "PYI024", - "FA100" # Enable this rule when drop support to Python 3.7 - ] + "FA100", # Enable this rule when drop support to Python 3.7 +] # Exclude files and directories -exclude = ["docs", ".eggs", "setup.py", "example", ".aws-sam", ".git", "dist", ".md", ".yaml", "example/samconfig.toml", ".txt", ".ini"] +exclude = [ + "docs", + ".eggs", + "setup.py", + "example", + ".aws-sam", + ".git", + "dist", + ".md", + ".yaml", + "example/samconfig.toml", + ".txt", + ".ini", +] # Maximum line length line-length = 120 @@ -50,7 +63,10 @@ fix = true fixable = ["I", "COM812", "W"] # See: https://github.com/astral-sh/ruff/issues/128 -typing-modules = ["aws_lambda_powertools.utilities.parser.types"] +typing-modules = [ + "aws_lambda_powertools.utilities.parser.types", + "aws_lambda_powertools.shared.types", +] [mccabe] # Maximum cyclomatic complexity From 1291fb5ddd766854fff2b47dfa9a4ee7c646ea16 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 17:46:02 +0200 Subject: [PATCH 4/9] chore: move remaining types to shared/types Signed-off-by: heitorlessa --- aws_lambda_powertools/logging/types.py | 19 ++----------------- aws_lambda_powertools/shared/types.py | 7 ++++++- .../data_classes/secrets_manager_event.py | 3 +-- .../utilities/parser/types.py | 7 +------ 4 files changed, 10 insertions(+), 26 deletions(-) diff --git a/aws_lambda_powertools/logging/types.py b/aws_lambda_powertools/logging/types.py index ede369491f1..d166b2e023c 100644 --- a/aws_lambda_powertools/logging/types.py +++ b/aws_lambda_powertools/logging/types.py @@ -1,24 +1,9 @@ from __future__ import annotations -import sys - -if sys.version_info >= (3, 11): - from typing import NotRequired -else: - from typing_extensions import NotRequired - -if sys.version_info >= (3, 8): - from typing import TypedDict -else: - from typing_extensions import TypedDict - -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - from typing import Any, Dict, List, Union +from aws_lambda_powertools.shared.types import NotRequired, TypeAlias, TypedDict + LogRecord: TypeAlias = Union[Dict[str, Any], "PowertoolsLogRecord"] diff --git a/aws_lambda_powertools/shared/types.py b/aws_lambda_powertools/shared/types.py index 90a959c9ff3..baa8696a690 100644 --- a/aws_lambda_powertools/shared/types.py +++ b/aws_lambda_powertools/shared/types.py @@ -13,8 +13,13 @@ from typing_extensions import NotRequired +if sys.version_info >= (3, 10): + from typing import TypeAlias +else: + from typing_extensions import TypeAlias + AnyCallableT = TypeVar("AnyCallableT", bound=Callable[..., Any]) # noqa: VNE001 # JSON primitives only, mypy doesn't support recursive tho JSONType = Union[str, int, float, bool, None, Dict[str, Any], List[Any]] -__all__ = ["Protocol", "TypedDict", "Literal", "NotRequired"] +__all__ = ["Protocol", "TypedDict", "Literal", "NotRequired", "TypeAlias"] diff --git a/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py b/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py index b5fa41211ef..1a3a1c5b7f4 100644 --- a/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +++ b/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py @@ -1,5 +1,4 @@ -from typing_extensions import Literal - +from aws_lambda_powertools.shared.types import Literal from aws_lambda_powertools.utilities.data_classes.common import DictWrapper diff --git a/aws_lambda_powertools/utilities/parser/types.py b/aws_lambda_powertools/utilities/parser/types.py index d3f00646d52..5282ccee373 100644 --- a/aws_lambda_powertools/utilities/parser/types.py +++ b/aws_lambda_powertools/utilities/parser/types.py @@ -1,15 +1,10 @@ """Generics and other shared types used across parser""" -import sys from typing import Any, Dict, Type, TypeVar, Union from pydantic import BaseModel, Json -# We only need typing_extensions for python versions <3.8 -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from aws_lambda_powertools.shared.types import Literal Model = TypeVar("Model", bound=BaseModel) EnvelopeModel = TypeVar("EnvelopeModel") From c501dc9fff7e0cc5c9cfd55b7d5ddc6e5a9e4b9e Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 17:50:25 +0200 Subject: [PATCH 5/9] chore: fix generics typing leftover --- aws_lambda_powertools/utilities/batch/exceptions.py | 4 +--- .../utilities/batch/sqs_fifo_partial_processor.py | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/aws_lambda_powertools/utilities/batch/exceptions.py b/aws_lambda_powertools/utilities/batch/exceptions.py index ef776c3b9df..89659e42bf8 100644 --- a/aws_lambda_powertools/utilities/batch/exceptions.py +++ b/aws_lambda_powertools/utilities/batch/exceptions.py @@ -5,9 +5,7 @@ import traceback from types import TracebackType -from typing import Optional, Type - -from aws_lambda_powertools.shared.types import List, Tuple +from typing import List, Optional, Tuple, Type ExceptionInfo = Tuple[Optional[Type[BaseException]], Optional[BaseException], Optional[TracebackType]] diff --git a/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py b/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py index 91992b0f130..d48749a137e 100644 --- a/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +++ b/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py @@ -1,6 +1,5 @@ -from typing import Optional +from typing import List, Optional, Tuple -from aws_lambda_powertools.shared.types import List, Tuple from aws_lambda_powertools.utilities.batch import BatchProcessor, EventType from aws_lambda_powertools.utilities.batch.types import BatchSqsTypeModel From d5a19bcffc41e8d0a218847bfacec9626401209c Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 17:55:53 +0200 Subject: [PATCH 6/9] chore: fix generics typing leftover --- .../utilities/streaming/s3_object.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/aws_lambda_powertools/utilities/streaming/s3_object.py b/aws_lambda_powertools/utilities/streaming/s3_object.py index 3672f9eac27..3d07c0b16d1 100644 --- a/aws_lambda_powertools/utilities/streaming/s3_object.py +++ b/aws_lambda_powertools/utilities/streaming/s3_object.py @@ -1,9 +1,21 @@ from __future__ import annotations import io -from typing import IO, TYPE_CHECKING, Any, Optional, TypeVar, Union, cast, overload +from typing import ( + IO, + TYPE_CHECKING, + Any, + Iterable, + List, + Literal, + Optional, + Sequence, + TypeVar, + Union, + cast, + overload, +) -from aws_lambda_powertools.shared.types import Iterable, List, Literal, Sequence from aws_lambda_powertools.utilities.streaming._s3_seekable_io import _S3SeekableIO from aws_lambda_powertools.utilities.streaming.transformations import ( CsvTransform, From 77edd2b77af90412e127cac4a76858adcfb2c182 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 18:04:01 +0200 Subject: [PATCH 7/9] fix: 3.7 specific Signed-off-by: heitorlessa --- aws_lambda_powertools/shared/types.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aws_lambda_powertools/shared/types.py b/aws_lambda_powertools/shared/types.py index baa8696a690..167d75e7dba 100644 --- a/aws_lambda_powertools/shared/types.py +++ b/aws_lambda_powertools/shared/types.py @@ -1,6 +1,9 @@ import sys from typing import Any, Callable, Dict, List, TypeVar, Union +if sys.version_info == (3, 7): + from typing_extensions import Literal, NotRequired, Protocol, TypeAlias, TypedDict + if sys.version_info >= (3, 8): from typing import Literal, Protocol, TypedDict else: From e07f19808e7145c802da8a0b4b94017fb94aa13d Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 18:10:41 +0200 Subject: [PATCH 8/9] fix: 3.7 literal Signed-off-by: heitorlessa --- aws_lambda_powertools/utilities/streaming/s3_object.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda_powertools/utilities/streaming/s3_object.py b/aws_lambda_powertools/utilities/streaming/s3_object.py index 3d07c0b16d1..f7d17f7726e 100644 --- a/aws_lambda_powertools/utilities/streaming/s3_object.py +++ b/aws_lambda_powertools/utilities/streaming/s3_object.py @@ -7,7 +7,6 @@ Any, Iterable, List, - Literal, Optional, Sequence, TypeVar, @@ -16,6 +15,7 @@ overload, ) +from aws_lambda_powertools.shared.types import Literal from aws_lambda_powertools.utilities.streaming._s3_seekable_io import _S3SeekableIO from aws_lambda_powertools.utilities.streaming.transformations import ( CsvTransform, From 3d7b7784fd0656c8a925637f5436bf26ef3afd85 Mon Sep 17 00:00:00 2001 From: heitorlessa Date: Thu, 14 Sep 2023 18:17:36 +0200 Subject: [PATCH 9/9] fix: still 3.7 Signed-off-by: heitorlessa --- aws_lambda_powertools/shared/types.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/aws_lambda_powertools/shared/types.py b/aws_lambda_powertools/shared/types.py index 167d75e7dba..633db46c587 100644 --- a/aws_lambda_powertools/shared/types.py +++ b/aws_lambda_powertools/shared/types.py @@ -1,13 +1,10 @@ import sys from typing import Any, Callable, Dict, List, TypeVar, Union -if sys.version_info == (3, 7): - from typing_extensions import Literal, NotRequired, Protocol, TypeAlias, TypedDict - if sys.version_info >= (3, 8): from typing import Literal, Protocol, TypedDict else: - from typing_extensions import Literal, Protocol + from typing_extensions import Literal, Protocol, TypedDict if sys.version_info >= (3, 11):