1
+ from __future__ import annotations
2
+
1
3
import logging
2
4
import os
3
5
import sys
4
- from typing import Dict , Optional
6
+ from typing import Any
5
7
6
8
from aiohttp import ClientSession
9
+ from yarl import URL
7
10
8
- from .components import HttpComponent , MetablockResponseError
11
+ from .components import Callback , HttpComponent , MetablockResponseError
9
12
from .extensions import Extensions , Plugins
10
13
from .orgs import Orgs
11
14
from .spaces import Blocks , Domains , Space , Spaces
@@ -24,17 +27,17 @@ class Metablock(HttpComponent):
24
27
25
28
def __init__ (
26
29
self ,
27
- url : Optional [ str ] = None ,
30
+ url : str | None = None ,
28
31
auth_key : str = "" ,
29
32
auth_key_name : str = "x-metablock-api-key" ,
30
- session : Optional [ ClientSession ] = None ,
33
+ session : ClientSession | None = None ,
31
34
user_agent : str = DEFAULT_USER_AGENT ,
32
35
) -> None :
33
36
self .url : str = url if url is not None else self .url
34
37
self .auth_key : str = auth_key or self .auth_key
35
38
self .auth_key_name = auth_key_name
36
- self .session : Optional [ ClientSession ] = session
37
- self .default_headers : Dict [str , str ] = {
39
+ self .session = session
40
+ self .default_headers : dict [str , str ] = {
38
41
"user-agent" : user_agent ,
39
42
"accept" : "application/json" ,
40
43
}
@@ -52,32 +55,31 @@ def __repr__(self) -> str:
52
55
__str__ = __repr__
53
56
54
57
@property
55
- def cli (self ):
58
+ def cli (self ) -> Metablock :
56
59
return self
57
60
58
61
async def close (self ) -> None :
59
62
if self .session :
60
63
await self .session .close ()
61
64
62
- async def __aenter__ (self ) -> object :
65
+ async def __aenter__ (self ) -> Metablock :
63
66
return self
64
67
65
- async def __aexit__ (self , exc_type , exc_val , exc_tb ) -> None :
68
+ async def __aexit__ (self , exc_type : type , exc_val : Any , exc_tb : Any ) -> None :
66
69
await self .close ()
67
70
68
- async def spec (self ):
71
+ async def spec (self ) -> dict :
69
72
return await self .execute (f"{ self .url } /spec" )
70
73
71
74
async def execute (
72
75
self ,
73
- url : str ,
76
+ url : str | URL ,
74
77
method : str = "" ,
75
- headers : Optional [Dict [str , str ]] = None ,
76
- callback = None ,
77
- wrap = None ,
78
- timeout = None ,
79
- ** kw ,
80
- ):
78
+ headers : dict [str , str ] | None = None ,
79
+ callback : Callback | None = None ,
80
+ wrap : Any = None ,
81
+ ** kw : Any ,
82
+ ) -> Any :
81
83
if not self .session :
82
84
self .session = ClientSession ()
83
85
method = method or "GET"
@@ -98,28 +100,28 @@ async def execute(
98
100
data = await response .json ()
99
101
return wrap (data ) if wrap else data
100
102
101
- async def get_user (self , callback = None ) -> Dict :
103
+ async def get_user (self , callback : Callback | None = None ) -> dict :
102
104
return await self .get (f"{ self .url } /user" , callback = callback , wrap = self ._user )
103
105
104
- async def get_space (self , callback = None ) -> Dict :
106
+ async def get_space (self , callback : Callback | None = None ) -> dict :
105
107
return await self .get (f"{ self .url } /space" , callback = callback , wrap = self ._space )
106
108
107
- async def update_user (self , callback = None , ** data ) -> Dict :
109
+ async def update_user (self , callback : Callback | None = None , ** data : Any ) -> dict :
108
110
return await self .patch (
109
111
f"{ self .url } /user" , json = data , callback = callback , wrap = self ._user
110
112
)
111
113
112
- async def delete_user (self , callback = None ) -> None :
114
+ async def delete_user (self , callback : Callback | None = None ) -> None :
113
115
return await self .delete (f"{ self .url } /user" , callback = callback )
114
116
115
- def get_default_headers (self ) -> Dict [str , str ]:
117
+ def get_default_headers (self ) -> dict [str , str ]:
116
118
headers = self .default_headers .copy ()
117
119
if self .auth_key :
118
120
headers [self .auth_key_name ] = self .auth_key
119
121
return headers
120
122
121
- def _user (self , data : Dict ) -> User :
123
+ def _user (self , data : dict ) -> User :
122
124
return User (self , data )
123
125
124
- def _space (self , data : Dict ) -> Space :
126
+ def _space (self , data : dict ) -> Space :
125
127
return Space (self .spaces , data )
0 commit comments