dara-core 1.20.1a1__py3-none-any.whl → 1.20.1a3__py3-none-any.whl
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.
- dara/core/__init__.py +3 -0
- dara/core/actions.py +1 -2
- dara/core/auth/basic.py +22 -16
- dara/core/auth/definitions.py +2 -2
- dara/core/auth/routes.py +5 -5
- dara/core/auth/utils.py +5 -5
- dara/core/base_definitions.py +22 -64
- dara/core/cli.py +8 -7
- dara/core/configuration.py +5 -2
- dara/core/css.py +1 -2
- dara/core/data_utils.py +18 -19
- dara/core/defaults.py +6 -7
- dara/core/definitions.py +50 -19
- dara/core/http.py +7 -3
- dara/core/interactivity/__init__.py +6 -0
- dara/core/interactivity/actions.py +52 -50
- dara/core/interactivity/any_data_variable.py +7 -134
- dara/core/interactivity/any_variable.py +5 -8
- dara/core/interactivity/client_variable.py +71 -0
- dara/core/interactivity/data_variable.py +8 -266
- dara/core/interactivity/derived_data_variable.py +7 -290
- dara/core/interactivity/derived_variable.py +416 -176
- dara/core/interactivity/filtering.py +46 -27
- dara/core/interactivity/loop_variable.py +2 -2
- dara/core/interactivity/non_data_variable.py +5 -68
- dara/core/interactivity/plain_variable.py +89 -15
- dara/core/interactivity/server_variable.py +325 -0
- dara/core/interactivity/state_variable.py +69 -0
- dara/core/interactivity/switch_variable.py +19 -19
- dara/core/interactivity/tabular_variable.py +94 -0
- dara/core/interactivity/url_variable.py +10 -90
- dara/core/internal/cache_store/base_impl.py +2 -1
- dara/core/internal/cache_store/cache_store.py +22 -25
- dara/core/internal/cache_store/keep_all.py +4 -1
- dara/core/internal/cache_store/lru.py +5 -1
- dara/core/internal/cache_store/ttl.py +4 -1
- dara/core/internal/cgroup.py +1 -1
- dara/core/internal/dependency_resolution.py +60 -66
- dara/core/internal/devtools.py +12 -5
- dara/core/internal/download.py +13 -4
- dara/core/internal/encoder_registry.py +7 -7
- dara/core/internal/execute_action.py +13 -13
- dara/core/internal/hashing.py +1 -3
- dara/core/internal/import_discovery.py +3 -4
- dara/core/internal/multi_resource_lock.py +70 -0
- dara/core/internal/normalization.py +9 -18
- dara/core/internal/pandas_utils.py +107 -5
- dara/core/internal/pool/definitions.py +1 -1
- dara/core/internal/pool/task_pool.py +25 -16
- dara/core/internal/pool/utils.py +21 -18
- dara/core/internal/pool/worker.py +3 -2
- dara/core/internal/port_utils.py +1 -1
- dara/core/internal/registries.py +12 -6
- dara/core/internal/registry.py +4 -2
- dara/core/internal/registry_lookup.py +11 -5
- dara/core/internal/routing.py +109 -145
- dara/core/internal/scheduler.py +13 -8
- dara/core/internal/settings.py +2 -2
- dara/core/internal/store.py +2 -29
- dara/core/internal/tasks.py +379 -195
- dara/core/internal/utils.py +36 -13
- dara/core/internal/websocket.py +21 -20
- dara/core/js_tooling/js_utils.py +28 -26
- dara/core/js_tooling/templates/vite.config.template.ts +12 -3
- dara/core/logging.py +13 -12
- dara/core/main.py +14 -11
- dara/core/metrics/cache.py +1 -1
- dara/core/metrics/utils.py +3 -3
- dara/core/persistence.py +27 -5
- dara/core/umd/dara.core.umd.js +68291 -64718
- dara/core/visual/components/__init__.py +2 -2
- dara/core/visual/components/fallback.py +30 -4
- dara/core/visual/components/for_cmp.py +4 -1
- dara/core/visual/css/__init__.py +30 -31
- dara/core/visual/dynamic_component.py +31 -28
- dara/core/visual/progress_updater.py +4 -3
- {dara_core-1.20.1a1.dist-info → dara_core-1.20.1a3.dist-info}/METADATA +12 -11
- dara_core-1.20.1a3.dist-info/RECORD +119 -0
- dara_core-1.20.1a1.dist-info/RECORD +0 -114
- {dara_core-1.20.1a1.dist-info → dara_core-1.20.1a3.dist-info}/LICENSE +0 -0
- {dara_core-1.20.1a1.dist-info → dara_core-1.20.1a3.dist-info}/WHEEL +0 -0
- {dara_core-1.20.1a1.dist-info → dara_core-1.20.1a3.dist-info}/entry_points.txt +0 -0
|
@@ -16,11 +16,11 @@ limitations under the License.
|
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
from inspect import isclass
|
|
19
|
-
from typing import Optional # needed for model_rebuild
|
|
19
|
+
from typing import Optional # needed for model_rebuild # noqa: F401
|
|
20
20
|
|
|
21
21
|
from pydantic import BaseModel
|
|
22
22
|
|
|
23
|
-
from dara.core.interactivity import Variable # needed for model_rebuild
|
|
23
|
+
from dara.core.interactivity import Variable # needed for model_rebuild # noqa: F401
|
|
24
24
|
from dara.core.visual.components.dynamic_component import (
|
|
25
25
|
DynamicComponent,
|
|
26
26
|
DynamicComponentDef,
|
|
@@ -15,12 +15,13 @@ See the License for the specific language governing permissions and
|
|
|
15
15
|
limitations under the License.
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
|
-
from typing import ClassVar
|
|
18
|
+
from typing import ClassVar, Optional, Union # noqa: F401
|
|
19
19
|
|
|
20
|
-
from dara.core.definitions import BaseFallback, JsComponentDef
|
|
20
|
+
from dara.core.definitions import BaseFallback, ComponentInstance, JsComponentDef, StyledComponentInstance # noqa: F401
|
|
21
21
|
|
|
22
22
|
DefaultFallbackDef = JsComponentDef(name='DefaultFallback', js_module='@darajs/core', py_module='dara.core')
|
|
23
23
|
RowFallbackDef = JsComponentDef(name='RowFallback', js_module='@darajs/core', py_module='dara.core')
|
|
24
|
+
CustomFallbackDef = JsComponentDef(name='CustomFallback', js_module='@darajs/core', py_module='dara.core')
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
class Fallback:
|
|
@@ -47,7 +48,7 @@ class Fallback:
|
|
|
47
48
|
but will suspend and show a fallback UI after the given timeout if the new state is not ready.
|
|
48
49
|
"""
|
|
49
50
|
|
|
50
|
-
py_component: ClassVar[str] = 'DefaultFallback'
|
|
51
|
+
py_component: ClassVar[Union[str, None]] = 'DefaultFallback'
|
|
51
52
|
|
|
52
53
|
class Row(BaseFallback):
|
|
53
54
|
"""
|
|
@@ -72,4 +73,29 @@ class Fallback:
|
|
|
72
73
|
but will suspend and show a fallback UI after the given timeout if the new state is not ready.
|
|
73
74
|
"""
|
|
74
75
|
|
|
75
|
-
py_component: ClassVar[str] = 'RowFallback'
|
|
76
|
+
py_component: ClassVar[Union[str, None]] = 'RowFallback'
|
|
77
|
+
|
|
78
|
+
class Custom(BaseFallback):
|
|
79
|
+
"""
|
|
80
|
+
Custom placeholder for a row of content.
|
|
81
|
+
Accepts any other Dara component in `component` prop.
|
|
82
|
+
|
|
83
|
+
:param component: The component to render in place of the actual UI if it has not finished loading.
|
|
84
|
+
:param suspend_render: bool or int, optional
|
|
85
|
+
|
|
86
|
+
Determines the suspense behavior of the component during state updates.
|
|
87
|
+
|
|
88
|
+
- If True, the component will always use suspense during state updates.
|
|
89
|
+
This means the component will suspend rendering and show a fallback UI until the new state is ready.
|
|
90
|
+
|
|
91
|
+
- If False, the component will always show the previous state while loading the new state.
|
|
92
|
+
This means the component will never suspend during state updates. The fallback UI will only
|
|
93
|
+
be shown on the first render.
|
|
94
|
+
|
|
95
|
+
- If a positive integer (default is 200), this denotes the threshold in milliseconds.
|
|
96
|
+
The component will show the previous state while loading the new state,
|
|
97
|
+
but will suspend and show a fallback UI after the given timeout if the new state is not ready.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
py_component: ClassVar[Union[str, None]] = 'CustomFallback'
|
|
101
|
+
component: StyledComponentInstance
|
|
@@ -39,7 +39,8 @@ class For(ComponentInstance):
|
|
|
39
39
|
# Renders a list of Text component where each item is the corresponding item in the list
|
|
40
40
|
For(
|
|
41
41
|
items=my_list,
|
|
42
|
-
renderer=Text(text=my_list.list_item)
|
|
42
|
+
renderer=Text(text=my_list.list_item),
|
|
43
|
+
placeholder=Text('No items') # fallback component to render if the data source is empty
|
|
43
44
|
)
|
|
44
45
|
```
|
|
45
46
|
|
|
@@ -139,6 +140,7 @@ class For(ComponentInstance):
|
|
|
139
140
|
|
|
140
141
|
:param items: The data source to render the template component for.
|
|
141
142
|
:param renderer: The template component to render for each item in the data source.
|
|
143
|
+
:param placeholder: The component to render if the data source is empty, i.e. there are no items.
|
|
142
144
|
:param key_accessor: The key accessor to use for the data source. If not provided, the key will be the index of the item in the data source.
|
|
143
145
|
Can be a dotted path to access a nested path in the list item.
|
|
144
146
|
:param virtualization: The virtualization configuration for the component. If provided, the component will be virtualized.
|
|
@@ -146,5 +148,6 @@ class For(ComponentInstance):
|
|
|
146
148
|
|
|
147
149
|
items: AnyVariable
|
|
148
150
|
renderer: ComponentInstance
|
|
151
|
+
placeholder: Optional[ComponentInstance] = None
|
|
149
152
|
key_accessor: Optional[str] = None
|
|
150
153
|
virtualization: Optional[VirtualizationConfig] = None
|
dara/core/visual/css/__init__.py
CHANGED
|
@@ -18,7 +18,6 @@ limitations under the License.
|
|
|
18
18
|
# generated by datamodel-codegen:
|
|
19
19
|
# filename: css-schema.json
|
|
20
20
|
# timestamp: 2022-07-07T11:51:57+00:00
|
|
21
|
-
# pylint: disable=line-too-long
|
|
22
21
|
|
|
23
22
|
from __future__ import annotations
|
|
24
23
|
|
|
@@ -383,11 +382,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
383
382
|
default=None,
|
|
384
383
|
description='The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules describing the animation or animations to apply to the element.\n\n**Syntax**: `[ none | <keyframes-name> ]#`\n\n**Initial value**: `none`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :-----: | :-----: | :-----: | :----: | :----: |\n| **43** | **16** | **9** | **12** | **10** |\n| 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |',
|
|
385
384
|
)
|
|
386
|
-
animationPlayState: Literal[
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
385
|
+
animationPlayState: Literal['-moz-initial', 'inherit', 'initial', 'paused', 'revert', 'running', 'unset', None] = (
|
|
386
|
+
Field(
|
|
387
|
+
default=None,
|
|
388
|
+
description='The **`animation-play-state`** CSS property sets whether an animation is running or paused.\n\n**Syntax**: `<single-animation-play-state>#`\n\n**Initial value**: `running`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :-----: | :-----: | :-----: | :----: | :----: |\n| **43** | **16** | **9** | **12** | **10** |\n| 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |',
|
|
389
|
+
)
|
|
391
390
|
)
|
|
392
391
|
animationTimingFunction: Literal[
|
|
393
392
|
'-moz-initial',
|
|
@@ -3507,11 +3506,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
3507
3506
|
)
|
|
3508
3507
|
colorInterpolation: Optional[Property.ColorInterpolation] = None
|
|
3509
3508
|
colorRendering: Optional[Property.ColorRendering] = None
|
|
3510
|
-
colorScheme: Literal[
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
|
|
3509
|
+
colorScheme: Literal['-moz-initial', 'dark', 'inherit', 'initial', 'light', 'normal', 'revert', 'unset', None] = (
|
|
3510
|
+
Field(
|
|
3511
|
+
default=None,
|
|
3512
|
+
description='The **`color-scheme`** CSS property allows an element to indicate which color schemes it can comfortably be rendered in.\n\n**Syntax**: `normal | [ light | dark | <custom-ident> ]+`\n\n**Initial value**: `normal`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :-: |\n| **81** | No | **13** | **81** | No |',
|
|
3513
|
+
)
|
|
3515
3514
|
)
|
|
3516
3515
|
columnCount: Literal['-moz-initial', 'auto', 'inherit', 'initial', 'revert', 'unset', None] = Field(
|
|
3517
3516
|
default=None,
|
|
@@ -4422,11 +4421,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
4422
4421
|
default=None,
|
|
4423
4422
|
description='The **`font-stretch`** CSS property selects a normal, condensed, or expanded face from a font.\n\n**Syntax**: `<font-stretch-absolute>`\n\n**Initial value**: `normal`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :---: |\n| **60** | **9** | **11** | **12** | **9** |',
|
|
4424
4423
|
)
|
|
4425
|
-
fontStyle: Literal[
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4424
|
+
fontStyle: Literal['-moz-initial', 'inherit', 'initial', 'italic', 'normal', 'oblique', 'revert', 'unset', None] = (
|
|
4425
|
+
Field(
|
|
4426
|
+
default=None,
|
|
4427
|
+
description='The **`font-style`** CSS property sets whether a font should be styled with a normal, italic, or oblique face from its `font-family`.\n\n**Syntax**: `normal | italic | oblique <angle>?`\n\n**Initial value**: `normal`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :---: |\n| **1** | **1** | **1** | **12** | **4** |',
|
|
4428
|
+
)
|
|
4430
4429
|
)
|
|
4431
4430
|
fontSynthesis: Literal[
|
|
4432
4431
|
'-moz-initial', 'inherit', 'initial', 'none', 'revert', 'small-caps', 'style', 'unset', 'weight', None
|
|
@@ -4586,11 +4585,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
4586
4585
|
default=None,
|
|
4587
4586
|
description='The **`grid-auto-columns`** CSS property specifies the size of an implicitly-created grid column track or pattern of tracks.\n\n**Syntax**: `<track-size>+`\n\n**Initial value**: `auto`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :------: | :----: | :-------------------------: |\n| **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-columns)_ |',
|
|
4588
4587
|
)
|
|
4589
|
-
gridAutoFlow: Literal[
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4588
|
+
gridAutoFlow: Literal['-moz-initial', 'column', 'dense', 'inherit', 'initial', 'revert', 'row', 'unset', None] = (
|
|
4589
|
+
Field(
|
|
4590
|
+
default=None,
|
|
4591
|
+
description='The **`grid-auto-flow`** CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.\n\n**Syntax**: `[ row | column ] || dense`\n\n**Initial value**: `row`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :------: | :----: | :-: |\n| **57** | **52** | **10.1** | **16** | No |',
|
|
4592
|
+
)
|
|
4594
4593
|
)
|
|
4595
4594
|
gridAutoRows: Optional[Union[float_, str]] = Field(
|
|
4596
4595
|
default=None,
|
|
@@ -4662,11 +4661,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
4662
4661
|
default=None,
|
|
4663
4662
|
description='The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate.\n\n**Syntax**: `none | manual | auto`\n\n**Initial value**: `manual`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :------: | :-----: | :-----------: | :----: | :----------: |\n| **55** | **43** | **5.1** _-x-_ | **79** | **10** _-x-_ |\n| 13 _-x-_ | 6 _-x-_ | | | |',
|
|
4664
4663
|
)
|
|
4665
|
-
imageOrientation: Literal[
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4664
|
+
imageOrientation: Literal['-moz-initial', 'flip', 'from-image', 'inherit', 'initial', 'revert', 'unset', None] = (
|
|
4665
|
+
Field(
|
|
4666
|
+
default=None,
|
|
4667
|
+
description='The **`image-orientation`** CSS property specifies a layout-independent correction to the orientation of an image. It should _not_ be used for any other orientation adjustments; instead, the `transform` property should be used with the `rotate` `<transform-function>`.\n\n**Syntax**: `from-image | <angle> | [ <angle>? flip ]`\n\n**Initial value**: `from-image`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :------: | :----: | :-: |\n| **81** | **26** | **13.1** | **81** | No |',
|
|
4668
|
+
)
|
|
4670
4669
|
)
|
|
4671
4670
|
imageRendering: Optional[Property.ImageRendering] = Field(
|
|
4672
4671
|
default=None,
|
|
@@ -5024,11 +5023,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
5024
5023
|
default=None,
|
|
5025
5024
|
description='The **`line-height-step`** CSS property sets the step unit for line box heights. When the property is set, line box heights are rounded up to the closest multiple of the unit.\n\n**Syntax**: `<length>`\n\n**Initial value**: `0`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :--: | :-: |\n| n/a | No | No | n/a | No |',
|
|
5026
5025
|
)
|
|
5027
|
-
listStyle: Literal[
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5026
|
+
listStyle: Literal['-moz-initial', 'inherit', 'initial', 'inside', 'none', 'outside', 'revert', 'unset', None] = (
|
|
5027
|
+
Field(
|
|
5028
|
+
default=None,
|
|
5029
|
+
description="The **`list-style`** CSS shorthand property allows you set all the list style properties at once.\n\n**Syntax**: `<'list-style-type'> || <'list-style-position'> || <'list-style-image'>`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :---: |\n| **1** | **1** | **1** | **12** | **4** |",
|
|
5030
|
+
)
|
|
5032
5031
|
)
|
|
5033
5032
|
listStyleImage: Literal['-moz-initial', 'inherit', 'initial', 'none', 'revert', 'unset', None] = Field(
|
|
5034
5033
|
default=None,
|
|
@@ -14,8 +14,12 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
14
14
|
See the License for the specific language governing permissions and
|
|
15
15
|
limitations under the License.
|
|
16
16
|
"""
|
|
17
|
+
|
|
18
|
+
import contextlib
|
|
17
19
|
import json
|
|
18
20
|
import uuid
|
|
21
|
+
from collections import OrderedDict
|
|
22
|
+
from collections.abc import Mapping
|
|
19
23
|
from contextvars import ContextVar
|
|
20
24
|
from functools import wraps
|
|
21
25
|
from inspect import Parameter, Signature, isclass, signature
|
|
@@ -24,24 +28,18 @@ from typing import (
|
|
|
24
28
|
Callable,
|
|
25
29
|
ClassVar,
|
|
26
30
|
Dict,
|
|
27
|
-
Mapping,
|
|
28
31
|
Optional,
|
|
29
|
-
OrderedDict,
|
|
30
32
|
Union,
|
|
31
33
|
overload,
|
|
32
34
|
)
|
|
33
35
|
|
|
36
|
+
import anyio
|
|
34
37
|
from fastapi.encoders import jsonable_encoder
|
|
35
38
|
|
|
36
39
|
from dara.core.base_definitions import BaseTask
|
|
37
40
|
from dara.core.definitions import BaseFallback, ComponentInstance, PyComponentDef
|
|
38
|
-
from dara.core.interactivity import
|
|
39
|
-
|
|
40
|
-
AnyVariable,
|
|
41
|
-
DerivedVariable,
|
|
42
|
-
UrlVariable,
|
|
43
|
-
Variable,
|
|
44
|
-
)
|
|
41
|
+
from dara.core.interactivity import AnyVariable
|
|
42
|
+
from dara.core.interactivity.state_variable import StateVariable
|
|
45
43
|
from dara.core.internal.cache_store import CacheStore
|
|
46
44
|
from dara.core.internal.dependency_resolution import resolve_dependency
|
|
47
45
|
from dara.core.internal.encoder_registry import deserialize
|
|
@@ -63,8 +61,7 @@ class PyComponentInstance(ComponentInstance):
|
|
|
63
61
|
|
|
64
62
|
# sync/async simple
|
|
65
63
|
@overload
|
|
66
|
-
def py_component(function: Callable) -> Callable[..., PyComponentInstance]:
|
|
67
|
-
...
|
|
64
|
+
def py_component(function: Callable) -> Callable[..., PyComponentInstance]: ...
|
|
68
65
|
|
|
69
66
|
|
|
70
67
|
# sync/async with args
|
|
@@ -72,19 +69,18 @@ def py_component(function: Callable) -> Callable[..., PyComponentInstance]:
|
|
|
72
69
|
def py_component(
|
|
73
70
|
function: None = None,
|
|
74
71
|
*,
|
|
75
|
-
placeholder: Optional[BaseFallback] = None,
|
|
76
|
-
fallback: Optional[BaseFallback] = None,
|
|
72
|
+
placeholder: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
73
|
+
fallback: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
77
74
|
track_progress: Optional[bool] = False,
|
|
78
75
|
polling_interval: Optional[int] = None,
|
|
79
|
-
) -> Callable[[Callable], Callable[..., PyComponentInstance]]:
|
|
80
|
-
...
|
|
76
|
+
) -> Callable[[Callable], Callable[..., PyComponentInstance]]: ...
|
|
81
77
|
|
|
82
78
|
|
|
83
79
|
def py_component(
|
|
84
80
|
function: Optional[Callable] = None,
|
|
85
81
|
*,
|
|
86
|
-
placeholder: Optional[BaseFallback] = None,
|
|
87
|
-
fallback: Optional[BaseFallback] = None,
|
|
82
|
+
placeholder: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
83
|
+
fallback: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
88
84
|
track_progress: Optional[bool] = False,
|
|
89
85
|
polling_interval: Optional[int] = None,
|
|
90
86
|
) -> Union[Callable[..., PyComponentInstance], Callable[[Callable], Callable[..., PyComponentInstance]]]:
|
|
@@ -160,10 +156,9 @@ def py_component(
|
|
|
160
156
|
for key, value in all_kwargs.items():
|
|
161
157
|
if key in func.__annotations__:
|
|
162
158
|
valid_value = True
|
|
163
|
-
|
|
159
|
+
# The type is either not set or something tricky to verify, e.g. union
|
|
160
|
+
with contextlib.suppress(Exception):
|
|
164
161
|
valid_value = isinstance(value, (func.__annotations__[key], AnyVariable))
|
|
165
|
-
except Exception:
|
|
166
|
-
pass # The type is either not set or something tricky to verify, e.g. union
|
|
167
162
|
if not valid_value:
|
|
168
163
|
raise TypeError(
|
|
169
164
|
f'Argument: {key} was passed as a {type(value)}, but it should be '
|
|
@@ -174,6 +169,12 @@ def py_component(
|
|
|
174
169
|
dynamic_kwargs: Dict[str, AnyVariable] = {}
|
|
175
170
|
static_kwargs: Dict[str, Any] = {}
|
|
176
171
|
for key, kwarg in all_kwargs.items():
|
|
172
|
+
if isinstance(kwarg, StateVariable):
|
|
173
|
+
raise ValueError(
|
|
174
|
+
'StateVariable cannot be used as input to py_component. '
|
|
175
|
+
'StateVariables are internal variables for tracking DerivedVariable client state and using them as inputs would create complex dependencies that are '
|
|
176
|
+
'difficult to debug. Consider using the StateVariable with an If component or SwitchVariable.'
|
|
177
|
+
)
|
|
177
178
|
if isinstance(kwarg, AnyVariable):
|
|
178
179
|
dynamic_kwargs[key] = kwarg
|
|
179
180
|
else:
|
|
@@ -200,9 +201,7 @@ def py_component(
|
|
|
200
201
|
params = OrderedDict()
|
|
201
202
|
for var_name, typ in func.__annotations__.items():
|
|
202
203
|
if isclass(typ):
|
|
203
|
-
new_type = Union[
|
|
204
|
-
typ, Variable[typ], DerivedVariable[typ], UrlVariable[typ], AnyDataVariable # type: ignore
|
|
205
|
-
]
|
|
204
|
+
new_type = Union[typ, AnyVariable]
|
|
206
205
|
if old_signature.parameters.get(var_name) is not None:
|
|
207
206
|
params[var_name] = old_signature.parameters[var_name].replace(annotation=new_type)
|
|
208
207
|
new_annotations[var_name] = new_type
|
|
@@ -210,8 +209,8 @@ def py_component(
|
|
|
210
209
|
_inner_func.__signature__ = Signature( # type: ignore
|
|
211
210
|
parameters=list(params.values()), return_annotation=old_signature.return_annotation
|
|
212
211
|
)
|
|
213
|
-
_inner_func.__wrapped_by__ = py_component
|
|
214
|
-
return _inner_func
|
|
212
|
+
_inner_func.__wrapped_by__ = py_component # type: ignore
|
|
213
|
+
return _inner_func # type: ignore
|
|
215
214
|
|
|
216
215
|
# If decorator is called with no optional argument then the function is passed as first argument
|
|
217
216
|
if function:
|
|
@@ -251,12 +250,15 @@ async def render_component(
|
|
|
251
250
|
annotations = definition.func.__annotations__
|
|
252
251
|
resolved_dyn_kwargs = {}
|
|
253
252
|
|
|
254
|
-
|
|
255
|
-
val = await resolve_dependency(
|
|
253
|
+
async def _resolve_kwarg(val: Any, key: str):
|
|
254
|
+
val = await resolve_dependency(val, store, task_mgr)
|
|
256
255
|
typ = annotations.get(key)
|
|
257
|
-
|
|
258
256
|
resolved_dyn_kwargs[key] = deserialize(val, typ)
|
|
259
257
|
|
|
258
|
+
async with anyio.create_task_group() as tg:
|
|
259
|
+
for key, value in values.items():
|
|
260
|
+
tg.start_soon(_resolve_kwarg, value, key)
|
|
261
|
+
|
|
260
262
|
# Merge resolved dynamic kwargs with static kwargs received
|
|
261
263
|
resolved_kwargs = {**resolved_dyn_kwargs, **static_kwargs}
|
|
262
264
|
|
|
@@ -290,6 +292,7 @@ async def render_component(
|
|
|
290
292
|
eng_logger.info(
|
|
291
293
|
f'PyComponent {definition.func.__name__} returning task', {'uid': definition.name, 'task_id': task}
|
|
292
294
|
)
|
|
295
|
+
task_mgr.register_task(task)
|
|
293
296
|
|
|
294
297
|
return task
|
|
295
298
|
|
|
@@ -16,9 +16,10 @@ limitations under the License.
|
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
import inspect
|
|
19
|
+
from collections import OrderedDict
|
|
19
20
|
from functools import wraps
|
|
20
21
|
from inspect import Signature, signature
|
|
21
|
-
from typing import Callable
|
|
22
|
+
from typing import Callable
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class ProgressUpdater:
|
|
@@ -145,13 +146,13 @@ def track_progress(func=None):
|
|
|
145
146
|
|
|
146
147
|
_inner_func = _sync_inner_func
|
|
147
148
|
|
|
148
|
-
_inner_func.__signature__ = Signature(
|
|
149
|
+
_inner_func.__signature__ = Signature( # type: ignore
|
|
149
150
|
parameters=list(params.values()),
|
|
150
151
|
return_annotation=old_signature.return_annotation,
|
|
151
152
|
)
|
|
152
153
|
|
|
153
154
|
# Store metadata on the wrapped function - keep a reference to the function wrapped and the decorator itself
|
|
154
155
|
_inner_func.__wrapped__ = func
|
|
155
|
-
_inner_func.__wrapped_by__ = track_progress
|
|
156
|
+
_inner_func.__wrapped_by__ = track_progress # type: ignore
|
|
156
157
|
|
|
157
158
|
return _inner_func
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dara-core
|
|
3
|
-
Version: 1.20.
|
|
3
|
+
Version: 1.20.1a3
|
|
4
4
|
Summary: Dara Framework Core
|
|
5
5
|
Home-page: https://dara.causalens.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -17,13 +17,14 @@ Provides-Extra: all
|
|
|
17
17
|
Requires-Dist: aiorwlock (>=1.4.0,<2.0.0)
|
|
18
18
|
Requires-Dist: anyio (>=4.0.0)
|
|
19
19
|
Requires-Dist: async-asgi-testclient (>=1.4.11,<2.0.0)
|
|
20
|
+
Requires-Dist: cachetools (>=5.0.0,<6.0.0)
|
|
20
21
|
Requires-Dist: certifi (>=2024.7.4)
|
|
21
22
|
Requires-Dist: click (==8.1.3)
|
|
22
23
|
Requires-Dist: colorama (>=0.4.6,<0.5.0)
|
|
23
|
-
Requires-Dist: create-dara-app (==1.20.1-alpha.
|
|
24
|
+
Requires-Dist: create-dara-app (==1.20.1-alpha.3)
|
|
24
25
|
Requires-Dist: croniter (>=1.0.15,<3.0.0)
|
|
25
26
|
Requires-Dist: cryptography (>=42.0.4)
|
|
26
|
-
Requires-Dist: dara-components (==1.20.1-alpha.
|
|
27
|
+
Requires-Dist: dara-components (==1.20.1-alpha.3) ; extra == "all"
|
|
27
28
|
Requires-Dist: exceptiongroup (>=1.1.3,<2.0.0)
|
|
28
29
|
Requires-Dist: fastapi (>=0.115.0,<0.116.0)
|
|
29
30
|
Requires-Dist: fastapi_vite_dara (==0.4.0)
|
|
@@ -33,7 +34,7 @@ Requires-Dist: jinja2 (>=2.1.1,<3.2.0)
|
|
|
33
34
|
Requires-Dist: jsonpatch (>=1.33)
|
|
34
35
|
Requires-Dist: odfpy
|
|
35
36
|
Requires-Dist: openpyxl
|
|
36
|
-
Requires-Dist: packaging (>=23.1
|
|
37
|
+
Requires-Dist: packaging (>=23.1)
|
|
37
38
|
Requires-Dist: pandas (>=1.1.0,<3.0.0)
|
|
38
39
|
Requires-Dist: prometheus-client (>=0.14.1,<0.15.0)
|
|
39
40
|
Requires-Dist: pyarrow
|
|
@@ -54,7 +55,7 @@ Description-Content-Type: text/markdown
|
|
|
54
55
|
|
|
55
56
|
# Dara Application Framework
|
|
56
57
|
|
|
57
|
-
<img src="https://github.com/causalens/dara/blob/v1.20.1-alpha.
|
|
58
|
+
<img src="https://github.com/causalens/dara/blob/v1.20.1-alpha.3/img/dara_light.svg?raw=true">
|
|
58
59
|
|
|
59
60
|

|
|
60
61
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
@@ -99,7 +100,7 @@ source .venv/bin/activate
|
|
|
99
100
|
dara start
|
|
100
101
|
```
|
|
101
102
|
|
|
102
|
-

|
|
103
104
|
|
|
104
105
|
Note: `pip` installation uses [PEP 660](https://peps.python.org/pep-0660/) `pyproject.toml`-based editable installs which require `pip >= 21.3` and `setuptools >= 64.0.0`. You can upgrade both with:
|
|
105
106
|
|
|
@@ -116,9 +117,9 @@ Explore some of our favorite apps - a great way of getting started and getting t
|
|
|
116
117
|
|
|
117
118
|
| Dara App | Description |
|
|
118
119
|
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
119
|
-
|  | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
|
|
121
|
+
|  | Demonstrates how to enable the user to interact with plots, trigger actions based on clicks, mouse movements and other interactions with `Bokeh` or `Plotly` plots |
|
|
122
|
+
|  | Demonstrates how to use the `CausalGraphViewer` component to display your graphs or networks, customising the displayed information through colors and tooltips, and updating the page based on user interaction. |
|
|
122
123
|
|
|
123
124
|
Check out our [App Gallery](https://dara.causalens.com/gallery) for more inspiration!
|
|
124
125
|
|
|
@@ -145,9 +146,9 @@ And the supporting UI packages and tools.
|
|
|
145
146
|
- `ui-utils` - miscellaneous utility functions
|
|
146
147
|
- `ui-widgets` - widget components
|
|
147
148
|
|
|
148
|
-
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.20.1-alpha.
|
|
149
|
+
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.20.1-alpha.3/CONTRIBUTING.md) file.
|
|
149
150
|
|
|
150
151
|
## License
|
|
151
152
|
|
|
152
|
-
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.20.1-alpha.
|
|
153
|
+
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.20.1-alpha.3/LICENSE).
|
|
153
154
|
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
dara/core/__init__.py,sha256=wcVLfKdziyk6yH50o55A4kAsaJIBoIMGd9RR4igTttw,2159
|
|
2
|
+
dara/core/actions.py,sha256=rC5Tu79AFNWMv0CJuchBnoy6pETIFh_1RTSqxrolArI,947
|
|
3
|
+
dara/core/auth/__init__.py,sha256=H0bJoXff5wIRZmHvvQ3y9p5SXA9lM8OuLCGceYGqfb0,851
|
|
4
|
+
dara/core/auth/base.py,sha256=qxmiIzx-n2g4ZWicgxsYtHjiB14AemOWM_GNxcr98mE,3294
|
|
5
|
+
dara/core/auth/basic.py,sha256=8ebWpHx53ObkuzTHIKSRdtsmKq0R5v8RuQXhZcnpTsA,4933
|
|
6
|
+
dara/core/auth/definitions.py,sha256=wTsFWzX7bGHTU_vxGW50pqcmB_AmhETIIUdGB5UrMBU,3467
|
|
7
|
+
dara/core/auth/routes.py,sha256=0o5KXApRbkL0F5qFsarQk_cq5lbQ3QfIHR_mwLRgBEY,7217
|
|
8
|
+
dara/core/auth/utils.py,sha256=iEWP5qwfH17Mi-5t3sP-DNMUrWN0oSRk96NhieY2Zw4,7334
|
|
9
|
+
dara/core/base_definitions.py,sha256=ptc6OSx-qElWWSuZB4-06kWmnj6hekpKR47eeB36igQ,16915
|
|
10
|
+
dara/core/cli.py,sha256=V__LAK3ozWGsVTEQHqvJwqSfpC3o6R76YGABJ-YVoSE,8185
|
|
11
|
+
dara/core/configuration.py,sha256=gi5AmdxyRSgegcNKFtnHshsMRz8fznswt60JlNZp-3s,22374
|
|
12
|
+
dara/core/css.py,sha256=UkNZ6n7RDBLsHmpZvn_a3K2nAwxVggQJbQMKNbgXONA,1753
|
|
13
|
+
dara/core/data_utils.py,sha256=RD5_GdyGyGr1LVThCo8mpuOMWrd9_c1iyRqjuyoarXM,12578
|
|
14
|
+
dara/core/defaults.py,sha256=Sa7ZU4QvPndaJm-oXrVn9gRfkdUgFtsX8RkSRhf16JQ,4306
|
|
15
|
+
dara/core/definitions.py,sha256=ykxPR4qYXafzsDxN4j3AN-pScSm-1Tx3SS3OWdFJ_k8,18839
|
|
16
|
+
dara/core/http.py,sha256=-OzbCHlYSnfVnw2492C_UmaWOI5oSONfWk03eEGxSRI,4761
|
|
17
|
+
dara/core/interactivity/__init__.py,sha256=ZppwTvxaCsaAdf0qX6j1qTcmbj6wxVcbiaMZfwTVKtU,2679
|
|
18
|
+
dara/core/interactivity/actions.py,sha256=1emp5K18R1DK1b8R_j_8wVrVlNdRlHe7D3mVOTfwb_o,48188
|
|
19
|
+
dara/core/interactivity/any_data_variable.py,sha256=GhT6lzCDRlQtYG2gNNUHq4th7K3RacqDfkjaq7o4mCc,317
|
|
20
|
+
dara/core/interactivity/any_variable.py,sha256=b6aMOZZc9Q4IFPPjuIbFgqYdw52-6QRsxNRj5ohZeL0,13648
|
|
21
|
+
dara/core/interactivity/client_variable.py,sha256=bFc4gmKKVfAvZHmv5Y2ME1VMTxSM_v_0lcmyRNTLOKk,2320
|
|
22
|
+
dara/core/interactivity/condition.py,sha256=69tdxgLqNbU-AlwHTWFdp-hvxGDugNnb_McDrz0mDtE,1575
|
|
23
|
+
dara/core/interactivity/data_variable.py,sha256=cJ7ssuNotvbK01MJFPYJ_0zBAC4PAIOERIVR948G0Dk,2535
|
|
24
|
+
dara/core/interactivity/derived_data_variable.py,sha256=N2cNcFmHxmNixJ_sfF_VGqYrzEA4b90aNL0RUmuMpRA,3696
|
|
25
|
+
dara/core/interactivity/derived_variable.py,sha256=RTessKdELHfKK-ApC4KfhUS8neMADctCE0WXJirqHa4,32393
|
|
26
|
+
dara/core/interactivity/filtering.py,sha256=rXv9ye_HqYFdZCDJ5x22AKSS_gIXB-zJDxxi4FuqAvo,9752
|
|
27
|
+
dara/core/interactivity/loop_variable.py,sha256=eiw9AVYzE7-qkBtww0qxYAGtG5SknKs_MMd6GD1gi8M,2994
|
|
28
|
+
dara/core/interactivity/non_data_variable.py,sha256=I-Nm5nEbt06X62xiUeAZsiutH-nPTY0iGJDurzbQB3M,189
|
|
29
|
+
dara/core/interactivity/plain_variable.py,sha256=MlfQpmI1HBrKI3xOI_BDlvrdXpoTKdqj4sQ0kZOqlr0,12603
|
|
30
|
+
dara/core/interactivity/server_variable.py,sha256=jtE0BqfNXz9W4BaWuaP29hqNRW_LZpYPROV2Xv-JL1E,11223
|
|
31
|
+
dara/core/interactivity/state_variable.py,sha256=1sSQjjjwedR9_IVPIk9h39ywR4hklYoTUMPy3FA6TVU,2487
|
|
32
|
+
dara/core/interactivity/switch_variable.py,sha256=RTFVeB5joWh7-zjx-miP0OjYmDW8GbgkWZHLUsMasiY,14177
|
|
33
|
+
dara/core/interactivity/tabular_variable.py,sha256=aw9wIzhkoWA-YyAfNWTZPmW0OAa-4yOb_dN55jrhu9w,3366
|
|
34
|
+
dara/core/interactivity/url_variable.py,sha256=iJ78QC2J_fCJ1K_hjksMwyzGBHOywBLAHBWdw-PYL1I,2301
|
|
35
|
+
dara/core/internal/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
|
|
36
|
+
dara/core/internal/cache_store/__init__.py,sha256=7JCmQwNIMzfyLZGnsk0BbT1EdDFO_PRZz86E9ATcC6c,139
|
|
37
|
+
dara/core/internal/cache_store/base_impl.py,sha256=LsUht9zS6lU8i6FO8JPTNNQTvMHH0PbFxxW_WjPZ_o4,1367
|
|
38
|
+
dara/core/internal/cache_store/cache_store.py,sha256=MtaPHDMKnN_4O9axU4CO2Q-SmzqpHbDQxVxWGNFhqRc,8617
|
|
39
|
+
dara/core/internal/cache_store/keep_all.py,sha256=gzxDozXTpDInGySQLKB-1BrUsXYsQgzOKoujmwKxbDM,2469
|
|
40
|
+
dara/core/internal/cache_store/lru.py,sha256=YRzmBIG5l5a5_MZxMoa3ajLImmKhA0I8IdCNBsMIV5A,5366
|
|
41
|
+
dara/core/internal/cache_store/ttl.py,sha256=m2w6ElfKemD6uysLyZAfXytnstUdI8oJP8Up4GuWCQY,4985
|
|
42
|
+
dara/core/internal/cgroup.py,sha256=yKCTY8RxyxnNy-Mw4tfzeZew1dL8qw381gHBVE96-OA,3217
|
|
43
|
+
dara/core/internal/custom_response.py,sha256=aSPonh8AdRjioTk1MaPwdaJHkO4R4aG_osGAGCIHbtg,1341
|
|
44
|
+
dara/core/internal/dependency_resolution.py,sha256=7_M1Mrhdb17wuuOHnbKjnCu1a0okAr904HkBiQxo0I8,10326
|
|
45
|
+
dara/core/internal/devtools.py,sha256=kzbmkDd-PHc2epCQ6D-bTm7G_2algxDOiyhzJWK0QlI,2620
|
|
46
|
+
dara/core/internal/download.py,sha256=_AciKp4ZsJxq60LRnvhLsA7KNWMDAXRbSKpin8-vBmU,3589
|
|
47
|
+
dara/core/internal/encoder_registry.py,sha256=KTYBLIGHpJDOLzCp_9899D7EIISK0zxCKbn4Gktllxk,11200
|
|
48
|
+
dara/core/internal/execute_action.py,sha256=luO5mTFj5Pl5H1Pxtsw5qNBnb64kL5fKBLad5tpzT6Q,7018
|
|
49
|
+
dara/core/internal/hashing.py,sha256=Iz3FyiroHc_bC8AEtSUFFAIHh6j4Bq_EvxLqInIkAUM,1124
|
|
50
|
+
dara/core/internal/import_discovery.py,sha256=oyBZayWhfZma4bg-8bamnS4QO1Oba9geGtez_BHut38,8128
|
|
51
|
+
dara/core/internal/multi_resource_lock.py,sha256=mUoc6KKk8mpLGCXfa6nFd60yNuas4b6wsAk8VrvGDxI,2496
|
|
52
|
+
dara/core/internal/normalization.py,sha256=N7NNzrOCIuCHqFBxZ3s5kKBeP57_949FzI-B6onTLAo,6071
|
|
53
|
+
dara/core/internal/pandas_utils.py,sha256=-t7wa7ydPqA_yJlF3ib1awJRfm7m69ULIeZwkWWD_f4,6549
|
|
54
|
+
dara/core/internal/pool/__init__.py,sha256=pBbXE5GR3abVC9Lg3i0QxfdmsrBDMJUYAYb0SiAEBkk,657
|
|
55
|
+
dara/core/internal/pool/channel.py,sha256=TbyIE-PnfzzsQYhl3INOs5UIHHbF_h9bMFne5FjbWlQ,4948
|
|
56
|
+
dara/core/internal/pool/definitions.py,sha256=27dtsyHsztc7zgr2axMWCn1O9pBNI_VKByGxjvKHBGc,4649
|
|
57
|
+
dara/core/internal/pool/task_pool.py,sha256=MqzUtoGEjeXdpCdTmBXQmQt582u0suiL5vwrsj1slhY,17780
|
|
58
|
+
dara/core/internal/pool/utils.py,sha256=HoNlHy2V0VmX5Xm2cqsFbPIOV74E2MslzTFgyNRmiB0,5411
|
|
59
|
+
dara/core/internal/pool/worker.py,sha256=eBi3FS652goZxu9chaRT89eHDvqJW0aHjt8I5UgyESA,6808
|
|
60
|
+
dara/core/internal/port_utils.py,sha256=3NN94CubNrIYQKmPM4SEwstY-UMqsbbe1M_JhyPcncA,1654
|
|
61
|
+
dara/core/internal/registries.py,sha256=1lY9xrggiyUlM32pPyzFEfflW3_37QGOxTDrfWQ4CN4,3659
|
|
62
|
+
dara/core/internal/registry.py,sha256=TJsD6eUQIBvcuTn_x3371pF-gxo6VtHUX5h-haca-00,4372
|
|
63
|
+
dara/core/internal/registry_lookup.py,sha256=RlT6Np658GCykdOXeLA6Gm1BTBcdDbhtOJDwJUB3Tkc,2430
|
|
64
|
+
dara/core/internal/routing.py,sha256=qe0U-gqXnzkm6osvpipJV6DE2ePqhtXBVGD1JSRrTOo,21148
|
|
65
|
+
dara/core/internal/scheduler.py,sha256=rmj-NnHHToWBPuteKlf0RmKcav2Hz0Z9-l4uyrAGKSI,13069
|
|
66
|
+
dara/core/internal/settings.py,sha256=DxRvXcelawaKemTcX6JIVIilibn0XO5Bd98dCXau4zg,3937
|
|
67
|
+
dara/core/internal/store.py,sha256=Z4EUMwHR0DR-TVCL9csSGYE3toxh15iRpBP2c7MUgr8,6442
|
|
68
|
+
dara/core/internal/tasks.py,sha256=WgQcgyChnUe4Dy16dw4LpFAcSECVoxFjVJHkPnfZFaA,34790
|
|
69
|
+
dara/core/internal/utils.py,sha256=nUnwy1BLW9HUQro9ASAYb-AlNJkbaT_bQ1bE2e1q1wo,9088
|
|
70
|
+
dara/core/internal/websocket.py,sha256=rcipt5XY48akMuLHFdvUUIgNLqzJx7ovLeiPsYVMELM,21953
|
|
71
|
+
dara/core/jinja/index.html,sha256=1gkCFiihXOUH7vp7tT5gH8mKeJB4KqNg394xO3a0usI,1208
|
|
72
|
+
dara/core/jinja/index_autojs.html,sha256=u1diDUnRT4djZqN1T6lIE01GhlfL6SJ_yLYcyapruss,1342
|
|
73
|
+
dara/core/js_tooling/custom_js_scaffold/index.tsx,sha256=FEzSV5o5Nyzxw6eXvGLi7BkEBkXf3brV34_7ATLnY7o,68
|
|
74
|
+
dara/core/js_tooling/custom_js_scaffold/local-js-component.tsx,sha256=Ojsyeh9MYJnH_XJXGkSc8PAUZIqJcqcGTu_uRITo_88,709
|
|
75
|
+
dara/core/js_tooling/js_utils.py,sha256=X8KZLGjdrVk7K8SEg-lrGbbT6W-rp81YMq9lHhK60Jo,26948
|
|
76
|
+
dara/core/js_tooling/statics/favicon.ico,sha256=CJP26erMMIwQB8FFmyhoUJ-Cx1cXEopiVGxFwyxcpo0,47068
|
|
77
|
+
dara/core/js_tooling/statics/tsconfig.json,sha256=ubnFjwvPHbx2F7wVWsU2VHLDeEnnOwXkTIk7hLNY8ZM,446
|
|
78
|
+
dara/core/js_tooling/templates/.npmrc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
|
+
dara/core/js_tooling/templates/_entry.template.tsx,sha256=oTeiSLDmq4J-2pM7qjA2RgUocT6Rla7BNwyEAJGvdCc,161
|
|
80
|
+
dara/core/js_tooling/templates/_entry_autojs.template.tsx,sha256=c9eNln0iLHUjhxsgXsF67hPcu4coloh0luvrhdM4ETM,202
|
|
81
|
+
dara/core/js_tooling/templates/dara.config.json,sha256=RZG_R_xJv_5rYIoz2QZulcG49wD0JURTzshtAzG_di4,84
|
|
82
|
+
dara/core/js_tooling/templates/vite.config.template.ts,sha256=W-R9LtXPMv7vQkqMawMmeFrjaQ22xrGU0iYyS_nHkh4,1199
|
|
83
|
+
dara/core/log_configs/logging.yaml,sha256=YJyD18psAmSVz6587dcEOyoulLuRFFu1g8yMXl1ylM0,706
|
|
84
|
+
dara/core/logging.py,sha256=8kJPQfRpivxzJXpmsK6-sYnWjR_VBDHzIelD1rstIeM,13260
|
|
85
|
+
dara/core/main.py,sha256=uw1BI4dSN-TowmnIUNLMDqL6I5t-3qeQsnVN9J73nGc,18507
|
|
86
|
+
dara/core/metrics/__init__.py,sha256=2UqpWHv-Ie58QLJIHJ9Szfjq8xifAuwy5FYGUIFwWtI,823
|
|
87
|
+
dara/core/metrics/cache.py,sha256=c1PSst_oZZvuVzBXYWdpf8Sbb97u6q0HS2dlsEVLpQU,2632
|
|
88
|
+
dara/core/metrics/runtime.py,sha256=YP-6Dz0GeI9_Yr7bUk_-OqShyFySGH_AKpDO126l6es,1833
|
|
89
|
+
dara/core/metrics/utils.py,sha256=inR1Ab5hmWZY2lsgGwLCQOEdyhCD9PumU52X2JbwlKY,2251
|
|
90
|
+
dara/core/persistence.py,sha256=10Hrvb2z5c9r0Hof7gpiiWfuKAAu6TLqLKoiZA9KpZo,18901
|
|
91
|
+
dara/core/umd/dara.core.umd.js,sha256=2FPBTzK4IaVT56k3R9TcMQJh8z2wYbjJSm39LzAMLHQ,4722215
|
|
92
|
+
dara/core/umd/style.css,sha256=YQtQ4veiSktnyONl0CU1iU1kKfcQhreH4iASi1MP7Ak,4095007
|
|
93
|
+
dara/core/visual/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
|
|
94
|
+
dara/core/visual/components/__init__.py,sha256=wuGRk8bogiLWPOXAF-Fo4F6_L__0tBrI2p2SqgH2lnE,2385
|
|
95
|
+
dara/core/visual/components/dynamic_component.py,sha256=w7rxrM9ZTNvkHymkAto_s9UKg7EE8VrlpL9QdRe4sgY,692
|
|
96
|
+
dara/core/visual/components/fallback.py,sha256=cnuPcblmQ1gyzZHrwHtrD5C5Bo7-JXeiMO0KZ1ACbPM,4764
|
|
97
|
+
dara/core/visual/components/for_cmp.py,sha256=HykNfue2YzjZjWiWaJakLZmbdd_M7IfUi9kNhG2mLOE,6347
|
|
98
|
+
dara/core/visual/components/invalid_component.py,sha256=Q6O9rAwVUNZXjEmliAKLfWf2lsyYK5JhgQvMM6jVco8,901
|
|
99
|
+
dara/core/visual/components/menu.py,sha256=ied87GzIoZgmEINgX3WahBqofn-WK1PIBZAgMjR-Bxg,928
|
|
100
|
+
dara/core/visual/components/progress_tracker.py,sha256=5p_nEJf7RK2oPimXL4YhAN7v0Jcx2HHQzlLxPr7Co38,1705
|
|
101
|
+
dara/core/visual/components/raw_string.py,sha256=jtG9hDZz3s-sCg__Eg4__XkD80OhnNaWiRo-W88LK4M,921
|
|
102
|
+
dara/core/visual/components/router_content.py,sha256=ZFJBuT-Vpn4yvbzgt5IGQbBqiWFhYfHa6mgB2O8Xt8I,978
|
|
103
|
+
dara/core/visual/components/sidebar_frame.py,sha256=rXkPQF9TORuAgbMMx-BL_XDVE-CKcZHY9XV9-gZr_FI,1242
|
|
104
|
+
dara/core/visual/components/topbar_frame.py,sha256=7L4Bi7Ba_gdfS6yoduXQ3k0-XQaNuahmkumyfzlpzzY,1255
|
|
105
|
+
dara/core/visual/components/types.py,sha256=uH2IGufr4-I8cNbZgnEd3YbqoPFgyqG91rfNXZVG7a0,686
|
|
106
|
+
dara/core/visual/css/Property.py,sha256=XJzlMeASyrquhXmaQZvrsgin3xlVfm94dHRY9aJkhXk,43028
|
|
107
|
+
dara/core/visual/css/__init__.py,sha256=r2W1B5yRQhmxBRoRyldzOopaobb2sgkEh_mUjWUvtko,367328
|
|
108
|
+
dara/core/visual/dynamic_component.py,sha256=hlOBRm3V1DlDAzyi--wWDOqC_bD-ofq5LXa4Mn5hBk0,14302
|
|
109
|
+
dara/core/visual/progress_updater.py,sha256=IdtWihnMYk8hqsHqDd0nzuuHeQu8wjnZT42s0oSq9ro,5895
|
|
110
|
+
dara/core/visual/template.py,sha256=y0KJU2913Q10y1TVMpTVnIxIoUsabzYfpUHEGuX2QyM,5707
|
|
111
|
+
dara/core/visual/themes/__init__.py,sha256=aM4mgoIYo2neBSw5FRzswsht7PUKjLthiHLmFIkyRKw,794
|
|
112
|
+
dara/core/visual/themes/dark.py,sha256=UQGDooOc8ric73eHs9E0ltYP4UCrwqQ3QxqN_fb4PwY,1942
|
|
113
|
+
dara/core/visual/themes/definitions.py,sha256=nS_gQvOzCt5hTmj74d0_siq_9QWuj6wNuir4VCHy0Dk,2779
|
|
114
|
+
dara/core/visual/themes/light.py,sha256=-Tviq8oEwGbdFULoDOqPuHO0UpAZGsBy8qFi0kAGolQ,1944
|
|
115
|
+
dara_core-1.20.1a3.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
|
|
116
|
+
dara_core-1.20.1a3.dist-info/METADATA,sha256=Jrg1bcuLIad7biNR3YcRyqnkL5t3GMIPEZ3QxZqp9Fo,7608
|
|
117
|
+
dara_core-1.20.1a3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
118
|
+
dara_core-1.20.1a3.dist-info/entry_points.txt,sha256=H__D5sNIGuPIhVam0DChNL-To5k8Y7nY7TAFz9Mz6cc,139
|
|
119
|
+
dara_core-1.20.1a3.dist-info/RECORD,,
|