Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit 4484ea0

Browse files
fix: Types to use Option[T] (#609)
1 parent 6d28d8c commit 4484ea0

File tree

12 files changed

+149
-149
lines changed

12 files changed

+149
-149
lines changed

supabase_auth/_async/gotrue_admin_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from functools import partial
4-
from typing import Dict, List, Optional, Union
4+
from typing import Dict, List, Optional
55

66
from ..helpers import model_validate, parse_link_response, parse_user_response
77
from ..http_clients import AsyncClient
@@ -28,7 +28,7 @@ def __init__(
2828
*,
2929
url: str = "",
3030
headers: Dict[str, str] = {},
31-
http_client: Union[AsyncClient, None] = None,
31+
http_client: Optional[AsyncClient] = None,
3232
verify: bool = True,
3333
proxy: Optional[str] = None,
3434
) -> None:

supabase_auth/_async/gotrue_base_api.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from typing import Any, Callable, Dict, Optional, TypeVar, Union, overload
3+
from typing import Any, Callable, Dict, Optional, TypeVar, overload
44

55
from httpx import Response
66
from pydantic import BaseModel
@@ -19,7 +19,7 @@ def __init__(
1919
*,
2020
url: str,
2121
headers: Dict[str, str],
22-
http_client: Union[AsyncClient, None],
22+
http_client: Optional[AsyncClient],
2323
verify: bool = True,
2424
proxy: Optional[str] = None,
2525
):
@@ -47,11 +47,11 @@ async def _request(
4747
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
4848
path: str,
4949
*,
50-
jwt: Union[str, None] = None,
51-
redirect_to: Union[str, None] = None,
52-
headers: Union[Dict[str, str], None] = None,
53-
query: Union[Dict[str, str], None] = None,
54-
body: Union[Any, None] = None,
50+
jwt: Optional[str] = None,
51+
redirect_to: Optional[str] = None,
52+
headers: Optional[Dict[str, str]] = None,
53+
query: Optional[Dict[str, str]] = None,
54+
body: Optional[Any] = None,
5555
no_resolve_json: Literal[False] = False,
5656
xform: Callable[[Any], T],
5757
) -> T: ... # pragma: no cover
@@ -62,11 +62,11 @@ async def _request(
6262
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
6363
path: str,
6464
*,
65-
jwt: Union[str, None] = None,
66-
redirect_to: Union[str, None] = None,
67-
headers: Union[Dict[str, str], None] = None,
68-
query: Union[Dict[str, str], None] = None,
69-
body: Union[Any, None] = None,
65+
jwt: Optional[str] = None,
66+
redirect_to: Optional[str] = None,
67+
headers: Optional[Dict[str, str]] = None,
68+
query: Optional[Dict[str, str]] = None,
69+
body: Optional[Any] = None,
7070
no_resolve_json: Literal[True],
7171
xform: Callable[[Response], T],
7272
) -> T: ... # pragma: no cover
@@ -77,11 +77,11 @@ async def _request(
7777
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
7878
path: str,
7979
*,
80-
jwt: Union[str, None] = None,
81-
redirect_to: Union[str, None] = None,
82-
headers: Union[Dict[str, str], None] = None,
83-
query: Union[Dict[str, str], None] = None,
84-
body: Union[Any, None] = None,
80+
jwt: Optional[str] = None,
81+
redirect_to: Optional[str] = None,
82+
headers: Optional[Dict[str, str]] = None,
83+
query: Optional[Dict[str, str]] = None,
84+
body: Optional[Any] = None,
8585
no_resolve_json: bool = False,
8686
) -> None: ... # pragma: no cover
8787

@@ -90,14 +90,14 @@ async def _request(
9090
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
9191
path: str,
9292
*,
93-
jwt: Union[str, None] = None,
94-
redirect_to: Union[str, None] = None,
95-
headers: Union[Dict[str, str], None] = None,
96-
query: Union[Dict[str, str], None] = None,
97-
body: Union[Any, None] = None,
93+
jwt: Optional[str] = None,
94+
redirect_to: Optional[str] = None,
95+
headers: Optional[Dict[str, str]] = None,
96+
query: Optional[Dict[str, str]] = None,
97+
body: Optional[Any] = None,
9898
no_resolve_json: bool = False,
99-
xform: Union[Callable[[Any], T], None] = None,
100-
) -> Union[T, None]:
99+
xform: Optional[Callable[[Any], T]] = None,
100+
) -> Optional[T]:
101101
url = f"{self._url}/{path}"
102102
headers = {**self._headers, **(headers or {})}
103103
if API_VERSION_HEADER_NAME not in headers:

supabase_auth/_async/gotrue_client.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from functools import partial
55
from json import loads
66
from time import time
7-
from typing import Callable, Dict, List, Optional, Tuple, Union
7+
from typing import Callable, Dict, List, Optional, Tuple
88
from urllib.parse import parse_qs, urlencode, urlparse
99
from uuid import uuid4
1010

@@ -87,13 +87,13 @@ class AsyncGoTrueClient(AsyncGoTrueBaseAPI):
8787
def __init__(
8888
self,
8989
*,
90-
url: Union[str, None] = None,
91-
headers: Union[Dict[str, str], None] = None,
92-
storage_key: Union[str, None] = None,
90+
url: Optional[str] = None,
91+
headers: Optional[Dict[str, str]] = None,
92+
storage_key: Optional[str] = None,
9393
auto_refresh_token: bool = True,
9494
persist_session: bool = True,
95-
storage: Union[AsyncSupportedStorage, None] = None,
96-
http_client: Union[AsyncClient, None] = None,
95+
storage: Optional[AsyncSupportedStorage] = None,
96+
http_client: Optional[AsyncClient] = None,
9797
flow_type: AuthFlowType = "implicit",
9898
verify: bool = True,
9999
proxy: Optional[str] = None,
@@ -110,8 +110,8 @@ def __init__(
110110
self._auto_refresh_token = auto_refresh_token
111111
self._persist_session = persist_session
112112
self._storage = storage or AsyncMemoryStorage()
113-
self._in_memory_session: Union[Session, None] = None
114-
self._refresh_token_timer: Union[Timer, None] = None
113+
self._in_memory_session: Optional[Session] = None
114+
self._refresh_token_timer: Optional[Timer] = None
115115
self._network_retries = 0
116116
self._state_change_emitters: Dict[str, Subscription] = {}
117117
self._flow_type = flow_type
@@ -134,7 +134,7 @@ def __init__(
134134

135135
# Initializations
136136

137-
async def initialize(self, *, url: Union[str, None] = None) -> None:
137+
async def initialize(self, *, url: Optional[str] = None) -> None:
138138
if url and self._is_implicit_grant_flow(url):
139139
await self.initialize_from_url(url)
140140
else:
@@ -158,7 +158,7 @@ async def initialize_from_url(self, url: str) -> None:
158158
# Public methods
159159

160160
async def sign_in_anonymously(
161-
self, credentials: Union[SignInAnonymouslyCredentials, None] = None
161+
self, credentials: Optional[SignInAnonymouslyCredentials] = None
162162
) -> AuthResponse:
163163
"""
164164
Creates a new anonymous user.
@@ -591,14 +591,14 @@ async def reauthenticate(self) -> AuthResponse:
591591
xform=parse_auth_response,
592592
)
593593

594-
async def get_session(self) -> Union[Session, None]:
594+
async def get_session(self) -> Optional[Session]:
595595
"""
596596
Returns the session, refreshing it if necessary.
597597
598598
The session returned can be null if the session is not detected which
599599
can happen in the event a user is not signed-in or has logged out.
600600
"""
601-
current_session: Union[Session, None] = None
601+
current_session: Optional[Session] = None
602602
if self._persist_session:
603603
maybe_session = await self._storage.get_item(self._storage_key)
604604
current_session = self._get_valid_session(maybe_session)
@@ -620,7 +620,7 @@ async def get_session(self) -> Union[Session, None]:
620620
else current_session
621621
)
622622

623-
async def get_user(self, jwt: Union[str, None] = None) -> Union[UserResponse, None]:
623+
async def get_user(self, jwt: Optional[str] = None) -> Optional[UserResponse]:
624624
"""
625625
Gets the current user details if there is an existing session.
626626
@@ -672,7 +672,7 @@ async def set_session(self, access_token: str, refresh_token: str) -> AuthRespon
672672
time_now = round(time())
673673
expires_at = time_now
674674
has_expired = True
675-
session: Union[Session, None] = None
675+
session: Optional[Session] = None
676676
if access_token and access_token.split(".")[1]:
677677
payload = self._decode_jwt(access_token)
678678
exp = payload.get("exp")
@@ -701,7 +701,7 @@ async def set_session(self, access_token: str, refresh_token: str) -> AuthRespon
701701
return AuthResponse(session=session, user=response.user)
702702

703703
async def refresh_session(
704-
self, refresh_token: Union[str, None] = None
704+
self, refresh_token: Optional[str] = None
705705
) -> AuthResponse:
706706
"""
707707
Returns a new session, regardless of expiry status.
@@ -743,7 +743,7 @@ async def sign_out(self, options: SignOutOptions = {"scope": "global"}) -> None:
743743

744744
def on_auth_state_change(
745745
self,
746-
callback: Callable[[AuthChangeEvent, Union[Session, None]], None],
746+
callback: Callable[[AuthChangeEvent, Optional[Session]], None],
747747
) -> Subscription:
748748
"""
749749
Receive a notification every time an auth event happens.
@@ -889,7 +889,7 @@ async def _get_authenticator_assurance_level(
889889
current_authentication_methods=[],
890890
)
891891
payload = self._decode_jwt(session.access_token)
892-
current_level: Union[AuthenticatorAssuranceLevels, None] = None
892+
current_level: Optional[AuthenticatorAssuranceLevels] = None
893893
if payload.get("aal"):
894894
current_level = payload.get("aal")
895895
verified_factors = [
@@ -917,7 +917,7 @@ async def _remove_session(self) -> None:
917917
async def _get_session_from_url(
918918
self,
919919
url: str,
920-
) -> Tuple[Session, Union[str, None]]:
920+
) -> Tuple[Session, Optional[str]]:
921921
if not self._is_implicit_grant_flow(url):
922922
raise AuthImplicitGrantRedirectError("Not a valid implicit grant flow url.")
923923
result = urlparse(url)
@@ -1062,15 +1062,15 @@ async def refresh_token_function():
10621062
def _notify_all_subscribers(
10631063
self,
10641064
event: AuthChangeEvent,
1065-
session: Union[Session, None],
1065+
session: Optional[Session],
10661066
) -> None:
10671067
for subscription in self._state_change_emitters.values():
10681068
subscription.callback(event, session)
10691069

10701070
def _get_valid_session(
10711071
self,
1072-
raw_session: Union[str, None],
1073-
) -> Union[Session, None]:
1072+
raw_session: Optional[str],
1073+
) -> Optional[Session]:
10741074
if not raw_session:
10751075
return None
10761076
data = loads(raw_session)
@@ -1096,7 +1096,7 @@ def _get_param(
10961096
self,
10971097
query_params: Dict[str, List[str]],
10981098
name: str,
1099-
) -> Union[str, None]:
1099+
) -> Optional[str]:
11001100
return query_params[name][0] if name in query_params else None
11011101

11021102
def _is_implicit_grant_flow(self, url: str) -> bool:

supabase_auth/_sync/gotrue_admin_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from functools import partial
4-
from typing import Dict, List, Optional, Union
4+
from typing import Dict, List, Optional
55

66
from ..helpers import model_validate, parse_link_response, parse_user_response
77
from ..http_clients import SyncClient
@@ -28,7 +28,7 @@ def __init__(
2828
*,
2929
url: str = "",
3030
headers: Dict[str, str] = {},
31-
http_client: Union[SyncClient, None] = None,
31+
http_client: Optional[SyncClient] = None,
3232
verify: bool = True,
3333
proxy: Optional[str] = None,
3434
) -> None:

supabase_auth/_sync/gotrue_base_api.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from typing import Any, Callable, Dict, Optional, TypeVar, Union, overload
3+
from typing import Any, Callable, Dict, Optional, TypeVar, overload
44

55
from httpx import Response
66
from pydantic import BaseModel
@@ -19,7 +19,7 @@ def __init__(
1919
*,
2020
url: str,
2121
headers: Dict[str, str],
22-
http_client: Union[SyncClient, None],
22+
http_client: Optional[SyncClient],
2323
verify: bool = True,
2424
proxy: Optional[str] = None,
2525
):
@@ -47,11 +47,11 @@ def _request(
4747
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
4848
path: str,
4949
*,
50-
jwt: Union[str, None] = None,
51-
redirect_to: Union[str, None] = None,
52-
headers: Union[Dict[str, str], None] = None,
53-
query: Union[Dict[str, str], None] = None,
54-
body: Union[Any, None] = None,
50+
jwt: Optional[str] = None,
51+
redirect_to: Optional[str] = None,
52+
headers: Optional[Dict[str, str]] = None,
53+
query: Optional[Dict[str, str]] = None,
54+
body: Optional[Any] = None,
5555
no_resolve_json: Literal[False] = False,
5656
xform: Callable[[Any], T],
5757
) -> T: ... # pragma: no cover
@@ -62,11 +62,11 @@ def _request(
6262
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
6363
path: str,
6464
*,
65-
jwt: Union[str, None] = None,
66-
redirect_to: Union[str, None] = None,
67-
headers: Union[Dict[str, str], None] = None,
68-
query: Union[Dict[str, str], None] = None,
69-
body: Union[Any, None] = None,
65+
jwt: Optional[str] = None,
66+
redirect_to: Optional[str] = None,
67+
headers: Optional[Dict[str, str]] = None,
68+
query: Optional[Dict[str, str]] = None,
69+
body: Optional[Any] = None,
7070
no_resolve_json: Literal[True],
7171
xform: Callable[[Response], T],
7272
) -> T: ... # pragma: no cover
@@ -77,11 +77,11 @@ def _request(
7777
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
7878
path: str,
7979
*,
80-
jwt: Union[str, None] = None,
81-
redirect_to: Union[str, None] = None,
82-
headers: Union[Dict[str, str], None] = None,
83-
query: Union[Dict[str, str], None] = None,
84-
body: Union[Any, None] = None,
80+
jwt: Optional[str] = None,
81+
redirect_to: Optional[str] = None,
82+
headers: Optional[Dict[str, str]] = None,
83+
query: Optional[Dict[str, str]] = None,
84+
body: Optional[Any] = None,
8585
no_resolve_json: bool = False,
8686
) -> None: ... # pragma: no cover
8787

@@ -90,14 +90,14 @@ def _request(
9090
method: Literal["GET", "OPTIONS", "HEAD", "POST", "PUT", "PATCH", "DELETE"],
9191
path: str,
9292
*,
93-
jwt: Union[str, None] = None,
94-
redirect_to: Union[str, None] = None,
95-
headers: Union[Dict[str, str], None] = None,
96-
query: Union[Dict[str, str], None] = None,
97-
body: Union[Any, None] = None,
93+
jwt: Optional[str] = None,
94+
redirect_to: Optional[str] = None,
95+
headers: Optional[Dict[str, str]] = None,
96+
query: Optional[Dict[str, str]] = None,
97+
body: Optional[Any] = None,
9898
no_resolve_json: bool = False,
99-
xform: Union[Callable[[Any], T], None] = None,
100-
) -> Union[T, None]:
99+
xform: Optional[Callable[[Any], T]] = None,
100+
) -> Optional[T]:
101101
url = f"{self._url}/{path}"
102102
headers = {**self._headers, **(headers or {})}
103103
if API_VERSION_HEADER_NAME not in headers:

0 commit comments

Comments
 (0)