chainlit 2.0.dev2__tar.gz → 2.0rc0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of chainlit might be problematic. Click here for more details.
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/PKG-INFO +3 -3
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/__init__.py +7 -4
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/cache.py +2 -1
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/callbacks.py +23 -6
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/config.py +15 -11
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/copilot/dist/index.js +553 -255
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/__init__.py +8 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/DailyMotion-D1ipkdPJ.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/DailyMotion-CleI-8Dh.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Facebook-d4TLeTik.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Facebook-C4PuTowX.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/FilePlayer-BcU7tttX.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/FilePlayer-D49YToZz.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Kaltura-DdaRjZrh.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Kaltura-BkZcQEIs.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Mixcloud-BaJoMsaU.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Mixcloud-DzvBFYsm.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Mux-DxPCM5d3.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Mux-UXPyWWYv.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Preview-tUK_Z9pZ.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Preview-0YXzpiVm.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/SoundCloud-K8-lFZC6.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/SoundCloud-CS54COex.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Streamable-hB-AQ54w.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Streamable-DYYShO6Q.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Twitch-pmuNY0J5.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Twitch-DG7403Hm.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Vidyard-BSUm6trV.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Vidyard-C5JbOHIQ.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Vimeo-JIPn71zS.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Vimeo-dFLZbhqH.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/Wistia-D75KkqOG.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/Wistia-143Q9V9c.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/YouTube-CPlwqNm_.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/YouTube-Dct4gpfH.js +1 -1
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/index-CuSbXjG5.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/index-2yAiK0R5.js +4 -4
- chainlit-2.0.dev2/chainlit/frontend/dist/assets/react-plotly-DALmanjC.js → chainlit-2.0rc0/chainlit/frontend/dist/assets/react-plotly-CFHBSMgg.js +1 -1
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/frontend/dist/index.html +1 -1
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/pyproject.toml +7 -6
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/README.md +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/__main__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/_utils.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/action.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/auth.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/chat_context.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/chat_settings.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/cli/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/context.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/copilot/dist/assets/logo_dark-IkGJ_IwC.svg +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/copilot/dist/assets/logo_light-Bb_IPh6r.svg +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/acl.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/base.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/dynamodb.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/literalai.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/sql_alchemy.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/storage_clients/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/storage_clients/azure.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/storage_clients/base.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/storage_clients/s3.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/data/utils.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/discord/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/discord/app.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/element.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/emitter.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/frontend/dist/assets/index-CwmincdQ.css +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/frontend/dist/assets/logo_dark-IkGJ_IwC.svg +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/frontend/dist/assets/logo_light-Bb_IPh6r.svg +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/frontend/dist/favicon.svg +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/haystack/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/haystack/callbacks.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/hello.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/input_widget.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/langchain/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/langchain/callbacks.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/langflow/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/llama_index/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/llama_index/callbacks.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/logger.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/markdown.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/message.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/mistralai/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/oauth_providers.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/openai/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/py.typed +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/secret.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/server.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/session.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/slack/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/slack/app.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/socket.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/step.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/sync.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/teams/__init__.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/teams/app.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/telemetry.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/bn.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/en-US.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/gu.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/he-IL.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/hi.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/kn.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/ml.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/mr.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/ta.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/te.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations/zh-CN.json +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/translations.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/types.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/user.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/user_session.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/utils.py +0 -0
- {chainlit-2.0.dev2 → chainlit-2.0rc0}/chainlit/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: chainlit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.0rc0
|
|
4
4
|
Summary: Build Conversational AI.
|
|
5
5
|
Home-page: https://chainlit.io/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -24,7 +24,7 @@ Requires-Dist: aiofiles (>=23.1.0,<24.0.0)
|
|
|
24
24
|
Requires-Dist: asyncer (>=0.0.7,<0.0.8)
|
|
25
25
|
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
26
26
|
Requires-Dist: dataclasses_json (>=0.6.7,<0.7.0)
|
|
27
|
-
Requires-Dist: fastapi (>=0.
|
|
27
|
+
Requires-Dist: fastapi (>=0.115.3,<0.116)
|
|
28
28
|
Requires-Dist: filetype (>=1.2.0,<2.0.0)
|
|
29
29
|
Requires-Dist: httpx (>=0.23.0)
|
|
30
30
|
Requires-Dist: lazify (>=0.4.0,<0.5.0)
|
|
@@ -37,7 +37,7 @@ Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
|
|
|
37
37
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
38
38
|
Requires-Dist: python-multipart (>=0.0.9,<0.0.10)
|
|
39
39
|
Requires-Dist: python-socketio (>=5.11.0,<6.0.0)
|
|
40
|
-
Requires-Dist: starlette (>=0.
|
|
40
|
+
Requires-Dist: starlette (>=0.41.2,<0.42.0)
|
|
41
41
|
Requires-Dist: syncer (>=2.0.3,<3.0.0)
|
|
42
42
|
Requires-Dist: tomli (>=2.0.1,<3.0.0)
|
|
43
43
|
Requires-Dist: uptrace (>=1.22.0,<2.0.0)
|
|
@@ -14,6 +14,9 @@ if env_found:
|
|
|
14
14
|
import asyncio
|
|
15
15
|
from typing import TYPE_CHECKING, Any, Dict
|
|
16
16
|
|
|
17
|
+
from literalai import ChatGeneration, CompletionGeneration, GenerationMessage
|
|
18
|
+
from pydantic.dataclasses import dataclass
|
|
19
|
+
|
|
17
20
|
import chainlit.input_widget as input_widget
|
|
18
21
|
from chainlit.action import Action
|
|
19
22
|
from chainlit.cache import cache
|
|
@@ -44,22 +47,21 @@ from chainlit.message import (
|
|
|
44
47
|
)
|
|
45
48
|
from chainlit.step import Step, step
|
|
46
49
|
from chainlit.sync import make_async, run_sync
|
|
47
|
-
from chainlit.types import InputAudioChunk, OutputAudioChunk,
|
|
50
|
+
from chainlit.types import ChatProfile, InputAudioChunk, OutputAudioChunk, Starter
|
|
48
51
|
from chainlit.user import PersistedUser, User
|
|
49
52
|
from chainlit.user_session import user_session
|
|
50
53
|
from chainlit.utils import make_module_getattr
|
|
51
54
|
from chainlit.version import __version__
|
|
52
|
-
from literalai import ChatGeneration, CompletionGeneration, GenerationMessage
|
|
53
|
-
from pydantic.dataclasses import dataclass
|
|
54
55
|
|
|
55
56
|
from .callbacks import (
|
|
56
57
|
action_callback,
|
|
57
58
|
author_rename,
|
|
59
|
+
data_layer,
|
|
58
60
|
header_auth_callback,
|
|
59
61
|
oauth_callback,
|
|
60
|
-
on_audio_start,
|
|
61
62
|
on_audio_chunk,
|
|
62
63
|
on_audio_end,
|
|
64
|
+
on_audio_start,
|
|
63
65
|
on_chat_end,
|
|
64
66
|
on_chat_resume,
|
|
65
67
|
on_chat_start,
|
|
@@ -186,6 +188,7 @@ __all__ = [
|
|
|
186
188
|
"on_stop",
|
|
187
189
|
"action_callback",
|
|
188
190
|
"on_settings_update",
|
|
191
|
+
"data_layer",
|
|
189
192
|
]
|
|
190
193
|
|
|
191
194
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import importlib.util
|
|
2
2
|
import os
|
|
3
3
|
import threading
|
|
4
|
+
from typing import Any
|
|
4
5
|
|
|
5
6
|
from chainlit.config import config
|
|
6
7
|
from chainlit.logger import logger
|
|
@@ -22,7 +23,7 @@ def init_lc_cache():
|
|
|
22
23
|
)
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
_cache = {}
|
|
26
|
+
_cache: dict[tuple, Any] = {}
|
|
26
27
|
_cache_lock = threading.Lock()
|
|
27
28
|
|
|
28
29
|
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
from typing import Any, Awaitable, Callable, Dict, List, Optional
|
|
3
3
|
|
|
4
|
+
from fastapi import Request, Response
|
|
5
|
+
from starlette.datastructures import Headers
|
|
6
|
+
|
|
4
7
|
from chainlit.action import Action
|
|
5
8
|
from chainlit.config import config
|
|
9
|
+
from chainlit.data.base import BaseDataLayer
|
|
6
10
|
from chainlit.message import Message
|
|
7
11
|
from chainlit.oauth_providers import get_configured_oauth_providers
|
|
8
12
|
from chainlit.step import Step, step
|
|
@@ -10,13 +14,11 @@ from chainlit.telemetry import trace
|
|
|
10
14
|
from chainlit.types import ChatProfile, Starter, ThreadDict
|
|
11
15
|
from chainlit.user import User
|
|
12
16
|
from chainlit.utils import wrap_user_function
|
|
13
|
-
from fastapi import Request, Response
|
|
14
|
-
from starlette.datastructures import Headers
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
@trace
|
|
18
20
|
def password_auth_callback(
|
|
19
|
-
func: Callable[[str, str], Awaitable[Optional[User]]]
|
|
21
|
+
func: Callable[[str, str], Awaitable[Optional[User]]],
|
|
20
22
|
) -> Callable:
|
|
21
23
|
"""
|
|
22
24
|
Framework agnostic decorator to authenticate the user.
|
|
@@ -38,7 +40,7 @@ def password_auth_callback(
|
|
|
38
40
|
|
|
39
41
|
@trace
|
|
40
42
|
def header_auth_callback(
|
|
41
|
-
func: Callable[[Headers], Awaitable[Optional[User]]]
|
|
43
|
+
func: Callable[[Headers], Awaitable[Optional[User]]],
|
|
42
44
|
) -> Callable:
|
|
43
45
|
"""
|
|
44
46
|
Framework agnostic decorator to authenticate the user via a header
|
|
@@ -177,7 +179,7 @@ def set_chat_profiles(
|
|
|
177
179
|
|
|
178
180
|
@trace
|
|
179
181
|
def set_starters(
|
|
180
|
-
func: Callable[[Optional["User"]], Awaitable[List["Starter"]]]
|
|
182
|
+
func: Callable[[Optional["User"]], Awaitable[List["Starter"]]],
|
|
181
183
|
) -> Callable:
|
|
182
184
|
"""
|
|
183
185
|
Programmatic declaration of the available starter (can depend on the User from the session if authentication is setup).
|
|
@@ -221,6 +223,7 @@ def on_audio_start(func: Callable) -> Callable:
|
|
|
221
223
|
config.code.on_audio_start = wrap_user_function(func, with_task=False)
|
|
222
224
|
return func
|
|
223
225
|
|
|
226
|
+
|
|
224
227
|
@trace
|
|
225
228
|
def on_audio_chunk(func: Callable) -> Callable:
|
|
226
229
|
"""
|
|
@@ -254,7 +257,7 @@ def on_audio_end(func: Callable) -> Callable:
|
|
|
254
257
|
|
|
255
258
|
@trace
|
|
256
259
|
def author_rename(
|
|
257
|
-
func: Callable[[str], Awaitable[str]]
|
|
260
|
+
func: Callable[[str], Awaitable[str]],
|
|
258
261
|
) -> Callable[[str], Awaitable[str]]:
|
|
259
262
|
"""
|
|
260
263
|
Useful to rename the author of message to display more friendly author names in the UI.
|
|
@@ -315,3 +318,17 @@ def on_settings_update(
|
|
|
315
318
|
|
|
316
319
|
config.code.on_settings_update = wrap_user_function(func, with_task=True)
|
|
317
320
|
return func
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
def data_layer(
|
|
324
|
+
func: Callable[[], BaseDataLayer],
|
|
325
|
+
) -> Callable[[], BaseDataLayer]:
|
|
326
|
+
"""
|
|
327
|
+
Hook to configure custom data layer.
|
|
328
|
+
"""
|
|
329
|
+
|
|
330
|
+
# We don't use wrap_user_function here because:
|
|
331
|
+
# 1. We don't need to support async here and;
|
|
332
|
+
# 2. We don't want to change the API for get_data_layer() to be async, everywhere (at this point).
|
|
333
|
+
config.code.data_layer = func
|
|
334
|
+
return func
|
|
@@ -17,21 +17,24 @@ from typing import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
import tomli
|
|
20
|
-
from chainlit.logger import logger
|
|
21
|
-
from chainlit.translations import lint_translation_json
|
|
22
|
-
from chainlit.version import __version__
|
|
23
20
|
from dataclasses_json import DataClassJsonMixin
|
|
24
21
|
from pydantic.dataclasses import Field, dataclass
|
|
25
22
|
from starlette.datastructures import Headers
|
|
26
23
|
|
|
24
|
+
from chainlit.data.base import BaseDataLayer
|
|
25
|
+
from chainlit.logger import logger
|
|
26
|
+
from chainlit.translations import lint_translation_json
|
|
27
|
+
from chainlit.version import __version__
|
|
28
|
+
|
|
27
29
|
from ._utils import is_path_inside
|
|
28
30
|
|
|
29
31
|
if TYPE_CHECKING:
|
|
32
|
+
from fastapi import Request, Response
|
|
33
|
+
|
|
30
34
|
from chainlit.action import Action
|
|
31
35
|
from chainlit.message import Message
|
|
32
|
-
from chainlit.types import
|
|
36
|
+
from chainlit.types import ChatProfile, InputAudioChunk, Starter, ThreadDict
|
|
33
37
|
from chainlit.user import User
|
|
34
|
-
from fastapi import Request, Response
|
|
35
38
|
|
|
36
39
|
|
|
37
40
|
BACKEND_ROOT = os.path.dirname(__file__)
|
|
@@ -272,9 +275,9 @@ class CodeSettings:
|
|
|
272
275
|
password_auth_callback: Optional[
|
|
273
276
|
Callable[[str, str], Awaitable[Optional["User"]]]
|
|
274
277
|
] = None
|
|
275
|
-
header_auth_callback: Optional[
|
|
276
|
-
|
|
277
|
-
|
|
278
|
+
header_auth_callback: Optional[Callable[[Headers], Awaitable[Optional["User"]]]] = (
|
|
279
|
+
None
|
|
280
|
+
)
|
|
278
281
|
oauth_callback: Optional[
|
|
279
282
|
Callable[[str, str, Dict[str, str], "User"], Awaitable[Optional["User"]]]
|
|
280
283
|
] = None
|
|
@@ -293,9 +296,10 @@ class CodeSettings:
|
|
|
293
296
|
set_chat_profiles: Optional[
|
|
294
297
|
Callable[[Optional["User"]], Awaitable[List["ChatProfile"]]]
|
|
295
298
|
] = None
|
|
296
|
-
set_starters: Optional[
|
|
297
|
-
|
|
298
|
-
|
|
299
|
+
set_starters: Optional[Callable[[Optional["User"]], Awaitable[List["Starter"]]]] = (
|
|
300
|
+
None
|
|
301
|
+
)
|
|
302
|
+
data_layer: Optional[Callable[[], BaseDataLayer]] = None
|
|
299
303
|
|
|
300
304
|
|
|
301
305
|
@dataclass()
|