From 63eb94f60f8a373c6c0a391dd3db15a15481642f Mon Sep 17 00:00:00 2001 From: Joscha Schmiedt <joscha@schmiedt.dev> Date: Wed, 17 Apr 2024 23:10:26 +0200 Subject: [PATCH] Add type hints to connection --- src/linkahead/connection/authentication/input.py | 10 +++++----- src/linkahead/connection/authentication/interface.py | 9 +++++++-- src/linkahead/connection/authentication/keyring.py | 2 +- src/linkahead/connection/authentication/pass.py | 2 +- src/linkahead/connection/utils.py | 2 +- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/linkahead/connection/authentication/input.py b/src/linkahead/connection/authentication/input.py index 27992073..697ca5dd 100644 --- a/src/linkahead/connection/authentication/input.py +++ b/src/linkahead/connection/authentication/input.py @@ -25,13 +25,13 @@ A CredentialsProvider which reads the password from the input line. """ -from __future__ import absolute_import, unicode_literals, print_function +from __future__ import absolute_import, unicode_literals, print_function, annotations from .interface import CredentialsProvider, CredentialsAuthenticator - +from typing import Optional import getpass -def get_authentication_provider(): +def get_authentication_provider() -> CredentialsAuthenticator: """get_authentication_provider. Return an authenticator which uses the input for username/password credentials. @@ -61,8 +61,8 @@ class InputCredentialsProvider(CredentialsProvider): def __init__(self): super(InputCredentialsProvider, self).__init__() - self._password = None - self._username = None + self._password: Optional[str] = None + self._username: Optional[str] = None def configure(self, **config): """configure. diff --git a/src/linkahead/connection/authentication/interface.py b/src/linkahead/connection/authentication/interface.py index 04ca11cd..cd61427b 100644 --- a/src/linkahead/connection/authentication/interface.py +++ b/src/linkahead/connection/authentication/interface.py @@ -26,12 +26,17 @@ LinkAhead server. Implementing modules muts provide a `get_authentication_provider()` method. """ +from __future__ import annotations from abc import ABC, abstractmethod import logging from ..utils import urlencode from ..interface import CaosDBServerConnection from ..utils import parse_auth_token, auth_token_to_cookie from ...exceptions import LoginFailedError +from typing import TYPE_CHECKING, Dict, Optional +if TYPE_CHECKING: + from ..interface import CaosDBHTTPResponse + QueryDict = Dict[str, Optional[str]] _LOGGER = logging.getLogger(__name__) @@ -106,7 +111,7 @@ class AbstractAuthenticator(ABC): """ pass - def on_response(self, response): + def on_response(self, response: CaosDBHTTPResponse): """on_response. A call-back with is to be called by the connection after each @@ -123,7 +128,7 @@ class AbstractAuthenticator(ABC): self.auth_token = parse_auth_token( response.getheader("Set-Cookie")) - def on_request(self, method, path, headers, **kwargs): + def on_request(self, method: str, path: str, headers: QueryDict, **kwargs): # pylint: disable=unused-argument """on_request. diff --git a/src/linkahead/connection/authentication/keyring.py b/src/linkahead/connection/authentication/keyring.py index 202520bb..dad6ed9b 100644 --- a/src/linkahead/connection/authentication/keyring.py +++ b/src/linkahead/connection/authentication/keyring.py @@ -35,7 +35,7 @@ from .external_credentials_provider import ExternalCredentialsProvider from .interface import CredentialsAuthenticator -def get_authentication_provider(): +def get_authentication_provider() -> CredentialsAuthenticator: """get_authentication_provider. Return an authenticator which uses plain text username/password credentials. diff --git a/src/linkahead/connection/authentication/pass.py b/src/linkahead/connection/authentication/pass.py index bec30740..81a90152 100644 --- a/src/linkahead/connection/authentication/pass.py +++ b/src/linkahead/connection/authentication/pass.py @@ -33,7 +33,7 @@ from .interface import CredentialsAuthenticator from .external_credentials_provider import ExternalCredentialsProvider -def get_authentication_provider(): +def get_authentication_provider() -> CredentialsAuthenticator: """get_authentication_provider. Return an authenticator which uses plain text username/password credentials. diff --git a/src/linkahead/connection/utils.py b/src/linkahead/connection/utils.py index bfb27a72..099db329 100644 --- a/src/linkahead/connection/utils.py +++ b/src/linkahead/connection/utils.py @@ -117,7 +117,7 @@ def make_uri_path(segments: Optional[List[str]] = None, return str("?".join([ path_no_query, "&".join([ quote(key) + "=" + - (quote(query[key]) if query[key] is not None else "") + (quote(query[key]) if query[key] is not None else "") # type: ignore for key in query ]) ])) -- GitLab