13
13
# limitations under the License.
14
14
15
15
import copy
16
+ import logging
16
17
import time
17
18
from typing import Any
18
19
from typing import Optional
28
29
from .session import Session
29
30
from .state import State
30
31
32
+ logger = logging .getLogger (__name__ )
33
+
31
34
32
35
class InMemorySessionService (BaseSessionService ):
33
36
"""An in-memory implementation of the session service."""
34
37
35
38
def __init__ (self ):
36
- # A map from app name to a map from user ID to a map from session ID to session.
39
+ # A map from app name to a map from user ID to a map from session ID to
40
+ # session.
37
41
self .sessions : dict [str , dict [str , dict [str , Session ]]] = {}
38
42
# A map from app name to a map from user ID to a map from key to the value.
39
43
self .user_state : dict [str , dict [str , dict [str , Any ]]] = {}
@@ -48,6 +52,37 @@ def create_session(
48
52
user_id : str ,
49
53
state : Optional [dict [str , Any ]] = None ,
50
54
session_id : Optional [str ] = None ,
55
+ ) -> Session :
56
+ return self ._create_session_impl (
57
+ app_name = app_name ,
58
+ user_id = user_id ,
59
+ state = state ,
60
+ session_id = session_id ,
61
+ )
62
+
63
+ def create_session_sync (
64
+ self ,
65
+ * ,
66
+ app_name : str ,
67
+ user_id : str ,
68
+ state : Optional [dict [str , Any ]] = None ,
69
+ session_id : Optional [str ] = None ,
70
+ ) -> Session :
71
+ logger .warning ('Deprecated. Please migrate to the async method.' )
72
+ return self ._create_session_impl (
73
+ app_name = app_name ,
74
+ user_id = user_id ,
75
+ state = state ,
76
+ session_id = session_id ,
77
+ )
78
+
79
+ def _create_session_impl (
80
+ self ,
81
+ * ,
82
+ app_name : str ,
83
+ user_id : str ,
84
+ state : Optional [dict [str , Any ]] = None ,
85
+ session_id : Optional [str ] = None ,
51
86
) -> Session :
52
87
session_id = (
53
88
session_id .strip ()
@@ -79,6 +114,37 @@ def get_session(
79
114
user_id : str ,
80
115
session_id : str ,
81
116
config : Optional [GetSessionConfig ] = None ,
117
+ ) -> Session :
118
+ return self ._get_session_impl (
119
+ app_name = app_name ,
120
+ user_id = user_id ,
121
+ session_id = session_id ,
122
+ config = config ,
123
+ )
124
+
125
+ def get_session_sync (
126
+ self ,
127
+ * ,
128
+ app_name : str ,
129
+ user_id : str ,
130
+ session_id : str ,
131
+ config : Optional [GetSessionConfig ] = None ,
132
+ ) -> Session :
133
+ logger .warning ('Deprecated. Please migrate to the async method.' )
134
+ return self ._get_session_impl (
135
+ app_name = app_name ,
136
+ user_id = user_id ,
137
+ session_id = session_id ,
138
+ config = config ,
139
+ )
140
+
141
+ def _get_session_impl (
142
+ self ,
143
+ * ,
144
+ app_name : str ,
145
+ user_id : str ,
146
+ session_id : str ,
147
+ config : Optional [GetSessionConfig ] = None ,
82
148
) -> Session :
83
149
if app_name not in self .sessions :
84
150
return None
@@ -130,6 +196,17 @@ def _merge_state(self, app_name: str, user_id: str, copied_session: Session):
130
196
@override
131
197
def list_sessions (
132
198
self , * , app_name : str , user_id : str
199
+ ) -> ListSessionsResponse :
200
+ return self ._list_sessions_impl (app_name = app_name , user_id = user_id )
201
+
202
+ def list_sessions_sync (
203
+ self , * , app_name : str , user_id : str
204
+ ) -> ListSessionsResponse :
205
+ logger .warning ('Deprecated. Please migrate to the async method.' )
206
+ return self ._list_sessions_impl (app_name = app_name , user_id = user_id )
207
+
208
+ def _list_sessions_impl (
209
+ self , * , app_name : str , user_id : str
133
210
) -> ListSessionsResponse :
134
211
empty_response = ListSessionsResponse ()
135
212
if app_name not in self .sessions :
@@ -145,9 +222,23 @@ def list_sessions(
145
222
sessions_without_events .append (copied_session )
146
223
return ListSessionsResponse (sessions = sessions_without_events )
147
224
148
- @override
149
225
def delete_session (
150
226
self , * , app_name : str , user_id : str , session_id : str
227
+ ) -> None :
228
+ self ._delete_session_impl (
229
+ app_name = app_name , user_id = user_id , session_id = session_id
230
+ )
231
+
232
+ def delete_session_sync (
233
+ self , * , app_name : str , user_id : str , session_id : str
234
+ ) -> None :
235
+ logger .warning ('Deprecated. Please migrate to the async method.' )
236
+ self ._delete_session_impl (
237
+ app_name = app_name , user_id = user_id , session_id = session_id
238
+ )
239
+
240
+ def _delete_session_impl (
241
+ self , * , app_name : str , user_id : str , session_id : str
151
242
) -> None :
152
243
if (
153
244
self .get_session (
@@ -161,6 +252,13 @@ def delete_session(
161
252
162
253
@override
163
254
def append_event (self , session : Session , event : Event ) -> Event :
255
+ return self ._append_event_impl (session = session , event = event )
256
+
257
+ def append_event_sync (self , session : Session , event : Event ) -> Event :
258
+ logger .warning ('Deprecated. Please migrate to the async method.' )
259
+ return self ._append_event_impl (session = session , event = event )
260
+
261
+ def _append_event_impl (self , session : Session , event : Event ) -> Event :
164
262
# Update the in-memory session.
165
263
super ().append_event (session = session , event = event )
166
264
session .last_update_time = event .timestamp
0 commit comments