Skip to content

Commit

Permalink
chore: Define Auth type alias in types module (#2586)
Browse files Browse the repository at this point in the history
* chore: Define `Auth` type alias in `types` module

* Update cookiecutter

* Remove unused import

* Limit imports
  • Loading branch information
edgarrmondragon authored Aug 5, 2024
1 parent a4a3561 commit 9f26837
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@
{%- if cookiecutter.auth_method in ("OAuth2", "JWT") %}
from functools import cached_property
{%- endif %}
from typing import TYPE_CHECKING, Any, Callable, Iterable
from typing import TYPE_CHECKING, Any, Iterable

import requests
{% if cookiecutter.auth_method == "API Key" -%}
from singer_sdk.authenticators import APIKeyAuthenticator
from singer_sdk.helpers.jsonpath import extract_jsonpath
Expand Down Expand Up @@ -47,11 +46,14 @@
import importlib_resources

if TYPE_CHECKING:
import requests
{%- if cookiecutter.auth_method in ("OAuth2", "JWT") %}
from singer_sdk.helpers.types import Auth, Context
{%- else %}
from singer_sdk.helpers.types import Context
{%- endif %}


_Auth = Callable[[requests.PreparedRequest], requests.PreparedRequest]

# TODO: Delete this is if not using json files for schema definition
SCHEMAS_DIR = importlib_resources.files(__package__) / "schemas"

Expand All @@ -74,7 +76,7 @@ def url_base(self) -> str:
{%- if cookiecutter.auth_method in ("OAuth2", "JWT") %}

@cached_property
def authenticator(self) -> _Auth:
def authenticator(self) -> Auth:
"""Return a new authenticator object.
Returns:
Expand Down
2 changes: 2 additions & 0 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

RUFF_OVERRIDES = """\
extend = "./pyproject.toml"
[lint]
extend-ignore = ["TD002", "TD003", "FIX002"]
"""

Expand Down
4 changes: 4 additions & 0 deletions singer_sdk/helpers/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import sys
import typing as t

import requests

if sys.version_info < (3, 9):
from typing import Mapping # noqa: ICN003
else:
Expand All @@ -15,10 +17,12 @@
else:
from typing import TypeAlias # noqa: ICN003


__all__ = [
"Context",
"Record",
]

Context: TypeAlias = Mapping[str, t.Any]
Record: TypeAlias = t.Dict[str, t.Any]
Auth: TypeAlias = t.Callable[[requests.PreparedRequest], requests.PreparedRequest]
11 changes: 2 additions & 9 deletions singer_sdk/streams/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,25 +26,18 @@
from singer_sdk.streams.core import Stream

if t.TYPE_CHECKING:
import sys
from datetime import datetime

from backoff.types import Details

from singer_sdk._singerlib import Schema
from singer_sdk.helpers.types import Context
from singer_sdk.helpers.types import Auth, Context
from singer_sdk.tap_base import Tap

if sys.version_info >= (3, 10):
from typing import TypeAlias # noqa: ICN003
else:
from typing_extensions import TypeAlias

DEFAULT_PAGE_SIZE = 1000
DEFAULT_REQUEST_TIMEOUT = 300 # 5 minutes

_TToken = t.TypeVar("_TToken")
_Auth: TypeAlias = t.Callable[[requests.PreparedRequest], requests.PreparedRequest]


class RESTStream(Stream, t.Generic[_TToken], metaclass=abc.ABCMeta): # noqa: PLR0904
Expand Down Expand Up @@ -610,7 +603,7 @@ def parse_response(self, response: requests.Response) -> t.Iterable[dict]:
# Abstract methods:

@property
def authenticator(self) -> _Auth:
def authenticator(self) -> Auth:
"""Return or set the authenticator for managing HTTP auth headers.
If an authenticator is not specified, REST-based taps will simply pass
Expand Down

0 comments on commit 9f26837

Please sign in to comment.