|
| 1 | +from __future__ import annotations |
| 2 | + |
1 | 3 | __all__ = ["Aiogoogle"] |
2 | 4 |
|
3 | 5 | from contextvars import ContextVar |
4 | | -from typing import Optional |
| 6 | +from typing import TYPE_CHECKING, Any, Optional, Type |
5 | 7 |
|
6 | 8 | from .resource import GoogleAPI |
7 | 9 | from .auth.managers import Oauth2Manager, ApiKeyManager, OpenIdConnectManager, ServiceAccountManager |
8 | 10 | from .sessions.aiohttp_session import AiohttpSession |
9 | 11 | from .data import DISCOVERY_SERVICE_V1_DISCOVERY_DOC |
10 | 12 |
|
| 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 |
11 | 17 |
|
12 | 18 | # Discovery doc reference https://developers.google.com/discovery/v1/reference/apis |
13 | 19 |
|
@@ -52,11 +58,11 @@ class Aiogoogle: |
52 | 58 |
|
53 | 59 | def __init__( |
54 | 60 | 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, |
60 | 66 | ): |
61 | 67 |
|
62 | 68 | self.session_factory = session_factory |
@@ -147,7 +153,7 @@ async def list_api(self, name, preferred=None, fields=None): |
147 | 153 | ) |
148 | 154 | return await self.as_anon(request) |
149 | 155 |
|
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: |
151 | 157 | """ |
152 | 158 | Donwloads a discovery document from Google's Discovery Service V1 and sets it a ``aiogoogle.resource.GoogleAPI`` |
153 | 159 |
|
@@ -262,7 +268,7 @@ async def as_user(self, *requests, timeout=None, full_res=False, user_creds=None |
262 | 268 | ) |
263 | 269 |
|
264 | 270 | 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: |
266 | 272 | """ |
267 | 273 | Sends requests on behalf of ``self.user_creds`` (OAuth2) |
268 | 274 |
|
@@ -408,15 +414,15 @@ async def send(self, *args, **kwargs): |
408 | 414 | session = self._set_session() |
409 | 415 | return await session.send(*args, **kwargs) |
410 | 416 |
|
411 | | - async def __aenter__(self): |
| 417 | + async def __aenter__(self) -> Aiogoogle: |
412 | 418 | session = self._get_session() |
413 | 419 | if session is None: |
414 | 420 | session = self._set_session() |
415 | 421 | await session.__aenter__() |
416 | 422 | return self |
417 | 423 | raise RuntimeError("Nesting context managers using the same Aiogoogle object is not allowed.") |
418 | 424 |
|
419 | | - async def __aexit__(self, *args): |
| 425 | + async def __aexit__(self, *args: Any) -> None: |
420 | 426 | session = self._get_session() |
421 | 427 | await session.__aexit__(*args) |
422 | 428 | # Had to add this because there's no use of keeping a closed session |
|
0 commit comments