Skip to content

Commit ad25e60

Browse files
authored
Merge pull request #146 from TomerYogev/add-type-annotations
Add type hints to several functions
2 parents bce2043 + 488c681 commit ad25e60

File tree

3 files changed

+34
-26
lines changed

3 files changed

+34
-26
lines changed

aiogoogle/auth/creds.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
__all__ = ["ApiKey", "UserCreds", "ClientCreds", "ServiceAccountCreds"]
22

33

4+
from typing import Mapping, Optional, Sequence
45
from ..utils import _dict
56

67

@@ -273,9 +274,10 @@ class ServiceAccountCreds(_dict):
273274
}
274275
"""
275276
def __init__(
276-
self, type=None, project_id=None, private_key_id=None, private_key=None,
277-
client_email=None, client_id=None, auth_uri=None, token_uri=None, auth_provider_x509_cert_url=None,
278-
client_x509_cert_url=None, subject=None, scopes=None, additional_claims=None, universe_domain='googleapis.com'
277+
self, type: Optional[str] = None, project_id: Optional[str] = None, private_key_id: Optional[str] = None, private_key: Optional[str] = None,
278+
client_email: Optional[str] = None, client_id: Optional[str] = None, auth_uri: Optional[str] = None, token_uri: Optional[str] = None, auth_provider_x509_cert_url: Optional[str] = None,
279+
client_x509_cert_url: Optional[str] = None, subject: Optional[str] = None, scopes: Optional[Sequence[str]] = None, additional_claims: Optional[Mapping[str, str]] = None,
280+
universe_domain: str = 'googleapis.com'
279281
):
280282
self.type = type
281283
self.project_id = project_id

aiogoogle/client.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1+
from __future__ import annotations
2+
13
__all__ = ["Aiogoogle"]
24

35
from contextvars import ContextVar
4-
from typing import Optional
6+
from typing import TYPE_CHECKING, Any, Optional, Type
57

68
from .resource import GoogleAPI
79
from .auth.managers import Oauth2Manager, ApiKeyManager, OpenIdConnectManager, ServiceAccountManager
810
from .sessions.aiohttp_session import AiohttpSession
911
from .data import DISCOVERY_SERVICE_V1_DISCOVERY_DOC
1012

13+
if TYPE_CHECKING:
14+
from .auth.creds import ApiKey, ClientCreds, ServiceAccountCreds, UserCreds
15+
from .models import Request, Response
16+
from .sessions.abc import AbstractSession
1117

1218
# Discovery doc reference https://developers.google.com/discovery/v1/reference/apis
1319

@@ -52,11 +58,11 @@ class Aiogoogle:
5258

5359
def __init__(
5460
self,
55-
session_factory=AiohttpSession,
56-
api_key=None,
57-
user_creds=None,
58-
client_creds=None,
59-
service_account_creds=None,
61+
session_factory: Type[AbstractSession] = AiohttpSession,
62+
api_key: Optional[ApiKey] = None,
63+
user_creds: Optional[UserCreds] = None,
64+
client_creds: Optional[ClientCreds] = None,
65+
service_account_creds: Optional[ServiceAccountCreds] = None,
6066
):
6167

6268
self.session_factory = session_factory
@@ -147,7 +153,7 @@ async def list_api(self, name, preferred=None, fields=None):
147153
)
148154
return await self.as_anon(request)
149155

150-
async def discover(self, api_name, api_version=None, validate=False, *, disco_doc_ver: Optional[int] = None):
156+
async def discover(self, api_name: str, api_version: Optional[str] = None, validate: bool = False, *, disco_doc_ver: Optional[int] = None) -> GoogleAPI:
151157
"""
152158
Donwloads a discovery document from Google's Discovery Service V1 and sets it a ``aiogoogle.resource.GoogleAPI``
153159
@@ -262,7 +268,7 @@ async def as_user(self, *requests, timeout=None, full_res=False, user_creds=None
262268
)
263269

264270
async def as_service_account(
265-
self, *requests, timeout=None, full_res=False, service_account_creds=None, raise_for_status=True):
271+
self, *requests: Request, timeout: Optional[int] = None, full_res: bool = False, service_account_creds: ServiceAccountCreds = None, raise_for_status: bool = True) -> Response:
266272
"""
267273
Sends requests on behalf of ``self.user_creds`` (OAuth2)
268274
@@ -408,15 +414,15 @@ async def send(self, *args, **kwargs):
408414
session = self._set_session()
409415
return await session.send(*args, **kwargs)
410416

411-
async def __aenter__(self):
417+
async def __aenter__(self) -> Aiogoogle:
412418
session = self._get_session()
413419
if session is None:
414420
session = self._set_session()
415421
await session.__aenter__()
416422
return self
417423
raise RuntimeError("Nesting context managers using the same Aiogoogle object is not allowed.")
418424

419-
async def __aexit__(self, *args):
425+
async def __aexit__(self, *args: Any) -> None:
420426
session = self._get_session()
421427
await session.__aexit__(*args)
422428
# Had to add this because there's no use of keeping a closed session

aiogoogle/models.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from urllib.parse import urlparse, urlunparse, urlencode, parse_qs
2-
from typing import AsyncIterable
2+
from typing import Any, AsyncIterable, Callable, Optional
33
import pprint
44

55
from .excs import HTTPError, AuthError, ValidationError
@@ -179,18 +179,18 @@ class Request:
179179

180180
def __init__(
181181
self,
182-
method=None,
183-
url=None,
184-
batch_url=None,
185-
headers=None,
186-
json=None,
187-
data=None,
188-
media_upload=None,
189-
media_download=None,
190-
timeout=None,
191-
callback=None,
192-
_verify_ssl=True,
193-
upload_file_content_type=None,
182+
method: Optional[str] = None,
183+
url: Optional[str] = None,
184+
batch_url: Optional[str] = None,
185+
headers: Optional[dict] = None,
186+
json: Optional[dict] = None,
187+
data: Any = None,
188+
media_upload: Optional[MediaUpload] = None,
189+
media_download: Optional[MediaDownload] = None,
190+
timeout: Optional[int] = None,
191+
callback: Optional[Callable] = None,
192+
_verify_ssl: bool = True,
193+
upload_file_content_type: Optional[str] = None,
194194
):
195195
self.method = method
196196
self.url = url

0 commit comments

Comments
 (0)