diff --git a/poetry.lock b/poetry.lock index 9e60626..b11d6d5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1334,23 +1334,6 @@ files = [ {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] -[[package]] -name = "pyjwt" -version = "2.8.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, - {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - [[package]] name = "pytest" version = "8.3.2" @@ -1804,30 +1787,28 @@ files = [ [[package]] name = "singer-sdk" -version = "0.38.0" +version = "0.39.0" description = "A framework for building Singer taps" optional = false python-versions = ">=3.8" files = [ - {file = "singer_sdk-0.38.0-py3-none-any.whl", hash = "sha256:c8be06edae149571df907262ce870dca990dc86a588609dec4ee8404aed3dc01"}, - {file = "singer_sdk-0.38.0.tar.gz", hash = "sha256:22f13980f9d5d26b98c2654a28e30ddda92d334eade6c50b6a0668be5a8aa55b"}, + {file = "singer_sdk-0.39.0-py3-none-any.whl", hash = "sha256:5b5aa4b485c360fb70af88c5d003b37b74c21c102adac21ea49fa023de860a23"}, + {file = "singer_sdk-0.39.0.tar.gz", hash = "sha256:e5ab6975e44324be32d15e75e86cb2d6719fc6f6d4b95ee0670a8a70c70d73bc"}, ] [package.dependencies] backoff = {version = ">=2.0.0", markers = "python_version < \"4\""} backports-datetime-fromisoformat = {version = ">=2.0.1", markers = "python_version < \"3.11\""} click = ">=8.0,<9.0" -cryptography = ">=3.4.6" fs = ">=2.4.16" -importlib-metadata = {version = "<8.0.0", markers = "python_version < \"3.12\""} -importlib-resources = {version = ">=5.12.0,<6.2.0 || >6.2.0,<6.3.0 || >6.3.0,<6.3.1 || >6.3.1", markers = "python_version < \"3.9\""} +importlib-metadata = {version = "<9.0.0", markers = "python_version < \"3.12\""} +importlib-resources = {version = ">=5.12.0,<6.2.0 || >6.2.0,<6.3.0 || >6.3.0,<6.3.1 || >6.3.1", markers = "python_version < \"3.10\""} inflection = ">=0.5.1" joblib = ">=1.3.0" jsonpath-ng = ">=1.5.3" jsonschema = ">=4.16.0" packaging = ">=23.1" pendulum = ">=2.1.0,<4" -PyJWT = ">=2.4,<3.0" pytest = {version = ">=7.2.1", optional = true, markers = "extra == \"docs\" or extra == \"testing\""} pytest-durations = {version = ">=1.2.0", optional = true, markers = "extra == \"testing\""} python-dateutil = ">=2.8.2" @@ -1842,8 +1823,9 @@ typing-extensions = ">=4.5.0" urllib3 = ">=1.26,<2" [package.extras] -docs = ["furo (>=2022.12.7)", "myst-parser (>=1)", "pytest (>=7.2.1)", "sphinx (>=4.5)", "sphinx-autobuild (>=2021.3.14)", "sphinx-copybutton (>=0.3.1)", "sphinx-inline-tabs (>=2023.4.21)", "sphinx-notfound-page (>=1.0.0)", "sphinx-reredirects (>=0.1.1)"] -faker = ["faker (>=22.5,<26.0)"] +docs = ["furo (>=2024.5.6)", "myst-parser (>=3)", "pytest (>=7.2.1)", "sphinx (>=7)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinx-notfound-page (>=1.0.0)", "sphinx-reredirects (>=0.1.5)"] +faker = ["faker (>=22.5,<27.0)"] +jwt = ["PyJWT (>=2.4,<3.0)", "cryptography (>=3.4.6)"] parquet = ["numpy (>=1.22)", "numpy (>=1.22,<1.25)", "pyarrow (>=13)"] s3 = ["fs-s3fs (>=1.1.1)"] testing = ["pytest (>=7.2.1)", "pytest-durations (>=1.2.0)"] @@ -2066,4 +2048,4 @@ s3 = ["fs-s3fs"] [metadata] lock-version = "2.0" python-versions = ">=3.8" -content-hash = "f68f61058f7105ce2f0604ebb15a2eb3dd5cfcb4e50e53ea4d8571d76ffd795d" +content-hash = "f3566b5f737ba3a2dd6068f8dcbfe90f054d50823d60dccfb181d56558aa379d" diff --git a/pyproject.toml b/pyproject.toml index f0c31bd..b76d48b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,14 +8,14 @@ keywords = [ "ELT", "DynamoDB", ] -license = "Apache 2.0" +license = "Apache-2.0" packages = [ { include = "tap_dynamodb" }, ] [tool.poetry.dependencies] python = ">=3.8" -singer-sdk = { version="^0.38.0" } +singer-sdk = { version="^0.39.0" } fs-s3fs = { version = "^1.1.1", optional = true } boto3 = "^1.34.136" genson = "^1.3.0" @@ -29,7 +29,7 @@ black = "^24.4.2" pyupgrade = "^3.3.1" mypy = "^1.10.1" isort = "^5.11.5" -singer-sdk = { version="^0.38.0", extras = ["testing"] } +singer-sdk = { version="^0.39.0", extras = ["testing"] } moto = "^5.0.10" coverage = "^7.5.4" pydocstyle = "^6.3.0" diff --git a/tap_dynamodb/streams.py b/tap_dynamodb/streams.py index 7e81ecb..29a6d4e 100644 --- a/tap_dynamodb/streams.py +++ b/tap_dynamodb/streams.py @@ -2,13 +2,16 @@ from __future__ import annotations -from typing import Iterable +from typing import TYPE_CHECKING, Iterable from singer_sdk.streams import Stream from singer_sdk.tap_base import Tap from tap_dynamodb.dynamodb_connector import DynamoDbConnector +if TYPE_CHECKING: + from singer_sdk.helpers.types import Context + class TableStream(Stream): """Stream class for TableStream streams.""" @@ -56,7 +59,7 @@ def __init__( else: super().__init__(name=name, tap=tap) - def get_records(self, context: dict | None) -> Iterable[dict]: + def get_records(self, context: Context | None) -> Iterable[dict]: for batch in self._dynamodb_conn.get_items_iter( self._table_name, self._table_scan_kwargs,