dara-core 1.20.0__py3-none-any.whl → 1.20.1a1__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 +0 -3
- dara/core/actions.py +2 -1
- dara/core/auth/basic.py +16 -22
- 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 +64 -22
- dara/core/cli.py +7 -8
- dara/core/configuration.py +2 -5
- dara/core/css.py +2 -1
- dara/core/data_utils.py +19 -18
- dara/core/defaults.py +7 -6
- dara/core/definitions.py +19 -50
- dara/core/http.py +3 -7
- dara/core/interactivity/__init__.py +0 -6
- dara/core/interactivity/actions.py +50 -52
- dara/core/interactivity/any_data_variable.py +134 -7
- dara/core/interactivity/any_variable.py +8 -5
- dara/core/interactivity/data_variable.py +266 -8
- dara/core/interactivity/derived_data_variable.py +290 -7
- dara/core/interactivity/derived_variable.py +176 -416
- dara/core/interactivity/filtering.py +27 -46
- dara/core/interactivity/loop_variable.py +2 -2
- dara/core/interactivity/non_data_variable.py +68 -5
- dara/core/interactivity/plain_variable.py +15 -89
- dara/core/interactivity/switch_variable.py +19 -19
- dara/core/interactivity/url_variable.py +90 -10
- dara/core/internal/cache_store/base_impl.py +1 -2
- dara/core/internal/cache_store/cache_store.py +25 -22
- dara/core/internal/cache_store/keep_all.py +1 -4
- dara/core/internal/cache_store/lru.py +1 -5
- dara/core/internal/cache_store/ttl.py +1 -4
- dara/core/internal/cgroup.py +1 -1
- dara/core/internal/dependency_resolution.py +66 -60
- dara/core/internal/devtools.py +5 -12
- dara/core/internal/download.py +4 -13
- dara/core/internal/encoder_registry.py +7 -7
- dara/core/internal/execute_action.py +13 -13
- dara/core/internal/hashing.py +3 -1
- dara/core/internal/import_discovery.py +4 -3
- dara/core/internal/normalization.py +18 -9
- dara/core/internal/pandas_utils.py +5 -107
- dara/core/internal/pool/definitions.py +1 -1
- dara/core/internal/pool/task_pool.py +16 -25
- dara/core/internal/pool/utils.py +18 -21
- dara/core/internal/pool/worker.py +2 -3
- dara/core/internal/port_utils.py +1 -1
- dara/core/internal/registries.py +6 -12
- dara/core/internal/registry.py +2 -4
- dara/core/internal/registry_lookup.py +5 -11
- dara/core/internal/routing.py +145 -109
- dara/core/internal/scheduler.py +8 -13
- dara/core/internal/settings.py +2 -2
- dara/core/internal/store.py +29 -2
- dara/core/internal/tasks.py +195 -379
- dara/core/internal/utils.py +13 -36
- dara/core/internal/websocket.py +20 -21
- dara/core/js_tooling/js_utils.py +26 -28
- dara/core/js_tooling/templates/vite.config.template.ts +3 -12
- dara/core/logging.py +12 -13
- dara/core/main.py +11 -14
- dara/core/metrics/cache.py +1 -1
- dara/core/metrics/utils.py +3 -3
- dara/core/persistence.py +5 -27
- dara/core/umd/dara.core.umd.js +55428 -59098
- dara/core/visual/components/__init__.py +2 -2
- dara/core/visual/components/fallback.py +4 -30
- dara/core/visual/components/for_cmp.py +1 -4
- dara/core/visual/css/__init__.py +31 -30
- dara/core/visual/dynamic_component.py +28 -31
- dara/core/visual/progress_updater.py +3 -4
- {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.dist-info}/METADATA +11 -12
- dara_core-1.20.1a1.dist-info/RECORD +114 -0
- dara/core/interactivity/client_variable.py +0 -71
- dara/core/interactivity/server_variable.py +0 -325
- dara/core/interactivity/state_variable.py +0 -69
- dara/core/interactivity/tabular_variable.py +0 -94
- dara/core/internal/multi_resource_lock.py +0 -70
- dara_core-1.20.0.dist-info/RECORD +0 -119
- {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.dist-info}/LICENSE +0 -0
- {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.dist-info}/WHEEL +0 -0
- {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.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
|
|
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
|
|
24
24
|
from dara.core.visual.components.dynamic_component import (
|
|
25
25
|
DynamicComponent,
|
|
26
26
|
DynamicComponentDef,
|
|
@@ -15,13 +15,12 @@ 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
|
|
19
19
|
|
|
20
|
-
from dara.core.definitions import BaseFallback,
|
|
20
|
+
from dara.core.definitions import BaseFallback, JsComponentDef
|
|
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')
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
class Fallback:
|
|
@@ -48,7 +47,7 @@ class Fallback:
|
|
|
48
47
|
but will suspend and show a fallback UI after the given timeout if the new state is not ready.
|
|
49
48
|
"""
|
|
50
49
|
|
|
51
|
-
py_component: ClassVar[
|
|
50
|
+
py_component: ClassVar[str] = 'DefaultFallback'
|
|
52
51
|
|
|
53
52
|
class Row(BaseFallback):
|
|
54
53
|
"""
|
|
@@ -73,29 +72,4 @@ class Fallback:
|
|
|
73
72
|
but will suspend and show a fallback UI after the given timeout if the new state is not ready.
|
|
74
73
|
"""
|
|
75
74
|
|
|
76
|
-
py_component: ClassVar[
|
|
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
|
|
75
|
+
py_component: ClassVar[str] = 'RowFallback'
|
|
@@ -39,8 +39,7 @@ 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)
|
|
43
|
-
placeholder=Text('No items') # fallback component to render if the data source is empty
|
|
42
|
+
renderer=Text(text=my_list.list_item)
|
|
44
43
|
)
|
|
45
44
|
```
|
|
46
45
|
|
|
@@ -140,7 +139,6 @@ class For(ComponentInstance):
|
|
|
140
139
|
|
|
141
140
|
:param items: The data source to render the template component for.
|
|
142
141
|
: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.
|
|
144
142
|
: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.
|
|
145
143
|
Can be a dotted path to access a nested path in the list item.
|
|
146
144
|
:param virtualization: The virtualization configuration for the component. If provided, the component will be virtualized.
|
|
@@ -148,6 +146,5 @@ class For(ComponentInstance):
|
|
|
148
146
|
|
|
149
147
|
items: AnyVariable
|
|
150
148
|
renderer: ComponentInstance
|
|
151
|
-
placeholder: Optional[ComponentInstance] = None
|
|
152
149
|
key_accessor: Optional[str] = None
|
|
153
150
|
virtualization: Optional[VirtualizationConfig] = None
|
dara/core/visual/css/__init__.py
CHANGED
|
@@ -18,6 +18,7 @@ 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
|
|
21
22
|
|
|
22
23
|
from __future__ import annotations
|
|
23
24
|
|
|
@@ -382,11 +383,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
382
383
|
default=None,
|
|
383
384
|
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-_ | | |',
|
|
384
385
|
)
|
|
385
|
-
animationPlayState: Literal[
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
386
|
+
animationPlayState: Literal[
|
|
387
|
+
'-moz-initial', 'inherit', 'initial', 'paused', 'revert', 'running', 'unset', None
|
|
388
|
+
] = Field(
|
|
389
|
+
default=None,
|
|
390
|
+
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-_ | | |',
|
|
390
391
|
)
|
|
391
392
|
animationTimingFunction: Literal[
|
|
392
393
|
'-moz-initial',
|
|
@@ -3506,11 +3507,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
3506
3507
|
)
|
|
3507
3508
|
colorInterpolation: Optional[Property.ColorInterpolation] = None
|
|
3508
3509
|
colorRendering: Optional[Property.ColorRendering] = None
|
|
3509
|
-
colorScheme: Literal[
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3510
|
+
colorScheme: Literal[
|
|
3511
|
+
'-moz-initial', 'dark', 'inherit', 'initial', 'light', 'normal', 'revert', 'unset', None
|
|
3512
|
+
] = Field(
|
|
3513
|
+
default=None,
|
|
3514
|
+
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 |',
|
|
3514
3515
|
)
|
|
3515
3516
|
columnCount: Literal['-moz-initial', 'auto', 'inherit', 'initial', 'revert', 'unset', None] = Field(
|
|
3516
3517
|
default=None,
|
|
@@ -4421,11 +4422,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
4421
4422
|
default=None,
|
|
4422
4423
|
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** |',
|
|
4423
4424
|
)
|
|
4424
|
-
fontStyle: Literal[
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4425
|
+
fontStyle: Literal[
|
|
4426
|
+
'-moz-initial', 'inherit', 'initial', 'italic', 'normal', 'oblique', 'revert', 'unset', None
|
|
4427
|
+
] = Field(
|
|
4428
|
+
default=None,
|
|
4429
|
+
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** |',
|
|
4429
4430
|
)
|
|
4430
4431
|
fontSynthesis: Literal[
|
|
4431
4432
|
'-moz-initial', 'inherit', 'initial', 'none', 'revert', 'small-caps', 'style', 'unset', 'weight', None
|
|
@@ -4585,11 +4586,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
4585
4586
|
default=None,
|
|
4586
4587
|
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)_ |',
|
|
4587
4588
|
)
|
|
4588
|
-
gridAutoFlow: Literal[
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4589
|
+
gridAutoFlow: Literal[
|
|
4590
|
+
'-moz-initial', 'column', 'dense', 'inherit', 'initial', 'revert', 'row', 'unset', None
|
|
4591
|
+
] = Field(
|
|
4592
|
+
default=None,
|
|
4593
|
+
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 |',
|
|
4593
4594
|
)
|
|
4594
4595
|
gridAutoRows: Optional[Union[float_, str]] = Field(
|
|
4595
4596
|
default=None,
|
|
@@ -4661,11 +4662,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
4661
4662
|
default=None,
|
|
4662
4663
|
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-_ | | | |',
|
|
4663
4664
|
)
|
|
4664
|
-
imageOrientation: Literal[
|
|
4665
|
-
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4665
|
+
imageOrientation: Literal[
|
|
4666
|
+
'-moz-initial', 'flip', 'from-image', 'inherit', 'initial', 'revert', 'unset', None
|
|
4667
|
+
] = Field(
|
|
4668
|
+
default=None,
|
|
4669
|
+
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 |',
|
|
4669
4670
|
)
|
|
4670
4671
|
imageRendering: Optional[Property.ImageRendering] = Field(
|
|
4671
4672
|
default=None,
|
|
@@ -5023,11 +5024,11 @@ class CSSProperties(DaraBaseModel):
|
|
|
5023
5024
|
default=None,
|
|
5024
5025
|
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 |',
|
|
5025
5026
|
)
|
|
5026
|
-
listStyle: Literal[
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5027
|
+
listStyle: Literal[
|
|
5028
|
+
'-moz-initial', 'inherit', 'initial', 'inside', 'none', 'outside', 'revert', 'unset', None
|
|
5029
|
+
] = Field(
|
|
5030
|
+
default=None,
|
|
5031
|
+
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** |",
|
|
5031
5032
|
)
|
|
5032
5033
|
listStyleImage: Literal['-moz-initial', 'inherit', 'initial', 'none', 'revert', 'unset', None] = Field(
|
|
5033
5034
|
default=None,
|
|
@@ -14,12 +14,8 @@ 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
|
|
19
17
|
import json
|
|
20
18
|
import uuid
|
|
21
|
-
from collections import OrderedDict
|
|
22
|
-
from collections.abc import Mapping
|
|
23
19
|
from contextvars import ContextVar
|
|
24
20
|
from functools import wraps
|
|
25
21
|
from inspect import Parameter, Signature, isclass, signature
|
|
@@ -28,18 +24,24 @@ from typing import (
|
|
|
28
24
|
Callable,
|
|
29
25
|
ClassVar,
|
|
30
26
|
Dict,
|
|
27
|
+
Mapping,
|
|
31
28
|
Optional,
|
|
29
|
+
OrderedDict,
|
|
32
30
|
Union,
|
|
33
31
|
overload,
|
|
34
32
|
)
|
|
35
33
|
|
|
36
|
-
import anyio
|
|
37
34
|
from fastapi.encoders import jsonable_encoder
|
|
38
35
|
|
|
39
36
|
from dara.core.base_definitions import BaseTask
|
|
40
37
|
from dara.core.definitions import BaseFallback, ComponentInstance, PyComponentDef
|
|
41
|
-
from dara.core.interactivity import
|
|
42
|
-
|
|
38
|
+
from dara.core.interactivity import (
|
|
39
|
+
AnyDataVariable,
|
|
40
|
+
AnyVariable,
|
|
41
|
+
DerivedVariable,
|
|
42
|
+
UrlVariable,
|
|
43
|
+
Variable,
|
|
44
|
+
)
|
|
43
45
|
from dara.core.internal.cache_store import CacheStore
|
|
44
46
|
from dara.core.internal.dependency_resolution import resolve_dependency
|
|
45
47
|
from dara.core.internal.encoder_registry import deserialize
|
|
@@ -61,7 +63,8 @@ class PyComponentInstance(ComponentInstance):
|
|
|
61
63
|
|
|
62
64
|
# sync/async simple
|
|
63
65
|
@overload
|
|
64
|
-
def py_component(function: Callable) -> Callable[..., PyComponentInstance]:
|
|
66
|
+
def py_component(function: Callable) -> Callable[..., PyComponentInstance]:
|
|
67
|
+
...
|
|
65
68
|
|
|
66
69
|
|
|
67
70
|
# sync/async with args
|
|
@@ -69,18 +72,19 @@ def py_component(function: Callable) -> Callable[..., PyComponentInstance]: ...
|
|
|
69
72
|
def py_component(
|
|
70
73
|
function: None = None,
|
|
71
74
|
*,
|
|
72
|
-
placeholder: Optional[
|
|
73
|
-
fallback: Optional[
|
|
75
|
+
placeholder: Optional[BaseFallback] = None,
|
|
76
|
+
fallback: Optional[BaseFallback] = None,
|
|
74
77
|
track_progress: Optional[bool] = False,
|
|
75
78
|
polling_interval: Optional[int] = None,
|
|
76
|
-
) -> Callable[[Callable], Callable[..., PyComponentInstance]]:
|
|
79
|
+
) -> Callable[[Callable], Callable[..., PyComponentInstance]]:
|
|
80
|
+
...
|
|
77
81
|
|
|
78
82
|
|
|
79
83
|
def py_component(
|
|
80
84
|
function: Optional[Callable] = None,
|
|
81
85
|
*,
|
|
82
|
-
placeholder: Optional[
|
|
83
|
-
fallback: Optional[
|
|
86
|
+
placeholder: Optional[BaseFallback] = None,
|
|
87
|
+
fallback: Optional[BaseFallback] = None,
|
|
84
88
|
track_progress: Optional[bool] = False,
|
|
85
89
|
polling_interval: Optional[int] = None,
|
|
86
90
|
) -> Union[Callable[..., PyComponentInstance], Callable[[Callable], Callable[..., PyComponentInstance]]]:
|
|
@@ -156,9 +160,10 @@ def py_component(
|
|
|
156
160
|
for key, value in all_kwargs.items():
|
|
157
161
|
if key in func.__annotations__:
|
|
158
162
|
valid_value = True
|
|
159
|
-
|
|
160
|
-
with contextlib.suppress(Exception):
|
|
163
|
+
try:
|
|
161
164
|
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
|
|
162
167
|
if not valid_value:
|
|
163
168
|
raise TypeError(
|
|
164
169
|
f'Argument: {key} was passed as a {type(value)}, but it should be '
|
|
@@ -169,12 +174,6 @@ def py_component(
|
|
|
169
174
|
dynamic_kwargs: Dict[str, AnyVariable] = {}
|
|
170
175
|
static_kwargs: Dict[str, Any] = {}
|
|
171
176
|
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
|
-
)
|
|
178
177
|
if isinstance(kwarg, AnyVariable):
|
|
179
178
|
dynamic_kwargs[key] = kwarg
|
|
180
179
|
else:
|
|
@@ -201,7 +200,9 @@ def py_component(
|
|
|
201
200
|
params = OrderedDict()
|
|
202
201
|
for var_name, typ in func.__annotations__.items():
|
|
203
202
|
if isclass(typ):
|
|
204
|
-
new_type = Union[
|
|
203
|
+
new_type = Union[
|
|
204
|
+
typ, Variable[typ], DerivedVariable[typ], UrlVariable[typ], AnyDataVariable # type: ignore
|
|
205
|
+
]
|
|
205
206
|
if old_signature.parameters.get(var_name) is not None:
|
|
206
207
|
params[var_name] = old_signature.parameters[var_name].replace(annotation=new_type)
|
|
207
208
|
new_annotations[var_name] = new_type
|
|
@@ -209,8 +210,8 @@ def py_component(
|
|
|
209
210
|
_inner_func.__signature__ = Signature( # type: ignore
|
|
210
211
|
parameters=list(params.values()), return_annotation=old_signature.return_annotation
|
|
211
212
|
)
|
|
212
|
-
_inner_func.__wrapped_by__ = py_component
|
|
213
|
-
return _inner_func
|
|
213
|
+
_inner_func.__wrapped_by__ = py_component # type: ignore
|
|
214
|
+
return _inner_func # type: ignore
|
|
214
215
|
|
|
215
216
|
# If decorator is called with no optional argument then the function is passed as first argument
|
|
216
217
|
if function:
|
|
@@ -250,14 +251,11 @@ async def render_component(
|
|
|
250
251
|
annotations = definition.func.__annotations__
|
|
251
252
|
resolved_dyn_kwargs = {}
|
|
252
253
|
|
|
253
|
-
|
|
254
|
-
val = await resolve_dependency(
|
|
254
|
+
for key, value in values.items():
|
|
255
|
+
val = await resolve_dependency(value, store, task_mgr)
|
|
255
256
|
typ = annotations.get(key)
|
|
256
|
-
resolved_dyn_kwargs[key] = deserialize(val, typ)
|
|
257
257
|
|
|
258
|
-
|
|
259
|
-
for key, value in values.items():
|
|
260
|
-
tg.start_soon(_resolve_kwarg, value, key)
|
|
258
|
+
resolved_dyn_kwargs[key] = deserialize(val, typ)
|
|
261
259
|
|
|
262
260
|
# Merge resolved dynamic kwargs with static kwargs received
|
|
263
261
|
resolved_kwargs = {**resolved_dyn_kwargs, **static_kwargs}
|
|
@@ -292,7 +290,6 @@ async def render_component(
|
|
|
292
290
|
eng_logger.info(
|
|
293
291
|
f'PyComponent {definition.func.__name__} returning task', {'uid': definition.name, 'task_id': task}
|
|
294
292
|
)
|
|
295
|
-
task_mgr.register_task(task)
|
|
296
293
|
|
|
297
294
|
return task
|
|
298
295
|
|
|
@@ -16,10 +16,9 @@ limitations under the License.
|
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
import inspect
|
|
19
|
-
from collections import OrderedDict
|
|
20
19
|
from functools import wraps
|
|
21
20
|
from inspect import Signature, signature
|
|
22
|
-
from typing import Callable
|
|
21
|
+
from typing import Callable, OrderedDict
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
class ProgressUpdater:
|
|
@@ -146,13 +145,13 @@ def track_progress(func=None):
|
|
|
146
145
|
|
|
147
146
|
_inner_func = _sync_inner_func
|
|
148
147
|
|
|
149
|
-
_inner_func.__signature__ = Signature(
|
|
148
|
+
_inner_func.__signature__ = Signature(
|
|
150
149
|
parameters=list(params.values()),
|
|
151
150
|
return_annotation=old_signature.return_annotation,
|
|
152
151
|
)
|
|
153
152
|
|
|
154
153
|
# Store metadata on the wrapped function - keep a reference to the function wrapped and the decorator itself
|
|
155
154
|
_inner_func.__wrapped__ = func
|
|
156
|
-
_inner_func.__wrapped_by__ = track_progress
|
|
155
|
+
_inner_func.__wrapped_by__ = track_progress
|
|
157
156
|
|
|
158
157
|
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.1a1
|
|
4
4
|
Summary: Dara Framework Core
|
|
5
5
|
Home-page: https://dara.causalens.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -17,14 +17,13 @@ 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)
|
|
21
20
|
Requires-Dist: certifi (>=2024.7.4)
|
|
22
21
|
Requires-Dist: click (==8.1.3)
|
|
23
22
|
Requires-Dist: colorama (>=0.4.6,<0.5.0)
|
|
24
|
-
Requires-Dist: create-dara-app (==1.20.
|
|
23
|
+
Requires-Dist: create-dara-app (==1.20.1-alpha.1)
|
|
25
24
|
Requires-Dist: croniter (>=1.0.15,<3.0.0)
|
|
26
25
|
Requires-Dist: cryptography (>=42.0.4)
|
|
27
|
-
Requires-Dist: dara-components (==1.20.
|
|
26
|
+
Requires-Dist: dara-components (==1.20.1-alpha.1) ; extra == "all"
|
|
28
27
|
Requires-Dist: exceptiongroup (>=1.1.3,<2.0.0)
|
|
29
28
|
Requires-Dist: fastapi (>=0.115.0,<0.116.0)
|
|
30
29
|
Requires-Dist: fastapi_vite_dara (==0.4.0)
|
|
@@ -34,7 +33,7 @@ Requires-Dist: jinja2 (>=2.1.1,<3.2.0)
|
|
|
34
33
|
Requires-Dist: jsonpatch (>=1.33)
|
|
35
34
|
Requires-Dist: odfpy
|
|
36
35
|
Requires-Dist: openpyxl
|
|
37
|
-
Requires-Dist: packaging (>=23.1)
|
|
36
|
+
Requires-Dist: packaging (>=23.1,<24.0)
|
|
38
37
|
Requires-Dist: pandas (>=1.1.0,<3.0.0)
|
|
39
38
|
Requires-Dist: prometheus-client (>=0.14.1,<0.15.0)
|
|
40
39
|
Requires-Dist: pyarrow
|
|
@@ -55,7 +54,7 @@ Description-Content-Type: text/markdown
|
|
|
55
54
|
|
|
56
55
|
# Dara Application Framework
|
|
57
56
|
|
|
58
|
-
<img src="https://github.com/causalens/dara/blob/v1.20.
|
|
57
|
+
<img src="https://github.com/causalens/dara/blob/v1.20.1-alpha.1/img/dara_light.svg?raw=true">
|
|
59
58
|
|
|
60
59
|

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

|
|
104
103
|
|
|
105
104
|
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:
|
|
106
105
|
|
|
@@ -117,9 +116,9 @@ Explore some of our favorite apps - a great way of getting started and getting t
|
|
|
117
116
|
|
|
118
117
|
| Dara App | Description |
|
|
119
118
|
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
120
|
-
|  | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
|
|
120
|
+
|  | 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 |
|
|
121
|
+
|  | 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. |
|
|
123
122
|
|
|
124
123
|
Check out our [App Gallery](https://dara.causalens.com/gallery) for more inspiration!
|
|
125
124
|
|
|
@@ -146,9 +145,9 @@ And the supporting UI packages and tools.
|
|
|
146
145
|
- `ui-utils` - miscellaneous utility functions
|
|
147
146
|
- `ui-widgets` - widget components
|
|
148
147
|
|
|
149
|
-
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.20.
|
|
148
|
+
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.20.1-alpha.1/CONTRIBUTING.md) file.
|
|
150
149
|
|
|
151
150
|
## License
|
|
152
151
|
|
|
153
|
-
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.20.
|
|
152
|
+
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.20.1-alpha.1/LICENSE).
|
|
154
153
|
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
dara/core/__init__.py,sha256=Hib2omvNFpEk72wyYMWQrbf18-uKyn4GW8LlcAtBMoI,2111
|
|
2
|
+
dara/core/actions.py,sha256=gARcrrtzYuBAVJUCtuHwpFc6PPVPb7x3ITIISCLw0GA,965
|
|
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=IMkoC1OeeRmnmjIqPHpybs8zSdbLlNKYLRvj08ajirg,4692
|
|
6
|
+
dara/core/auth/definitions.py,sha256=7SoUBlYQhccop4Rl0XlHjSBjBU41ZbCZHS7Y-fL9g84,3501
|
|
7
|
+
dara/core/auth/routes.py,sha256=1gOe1Z2Vv5MtpW5uvUYvyYWTJ_BDoLRllji1Plk4nss,7180
|
|
8
|
+
dara/core/auth/utils.py,sha256=sFQWbkclDi2842mhauTeLh5g5RsSrzS7AxlKSSnzhYM,7320
|
|
9
|
+
dara/core/base_definitions.py,sha256=wNYPDUFHHhjE4gH2fm1z2wba04Lrl3-7JDua01j-zCs,18062
|
|
10
|
+
dara/core/cli.py,sha256=hgzy8zrEB_JR2GF_nBBfs9d2I9LmjJt0OQJYOOCc284,8158
|
|
11
|
+
dara/core/configuration.py,sha256=bWD9oL_lqCEq88I2Zr39cPt_8jZIwq5vUAyLFrsmVYQ,22297
|
|
12
|
+
dara/core/css.py,sha256=KWCJTPpx4tTezP9VJO3k-RSVhWwomJr-4USoLz9vNAs,1771
|
|
13
|
+
dara/core/data_utils.py,sha256=5GGz4vk6srLO8HMySiAEk_xZCvmf0SeTTgVi-N4qaKY,12636
|
|
14
|
+
dara/core/defaults.py,sha256=UkjWwIbo8GLyn8RZRoD3cJe174-3wHZYzvMB0hQCnMg,4150
|
|
15
|
+
dara/core/definitions.py,sha256=JOtmltnKVHYNXBFNfcZ3il3CCT9WzNTiLauJQLV7YCI,17663
|
|
16
|
+
dara/core/http.py,sha256=LR1Kr5Hca-Z6klNl-M8R8Q1eOfFh3hLrjVS3kVrRsKA,4658
|
|
17
|
+
dara/core/interactivity/__init__.py,sha256=4gD69m5nRf6lefKdNx9K_fRJOqmsAwjALZqKiPtvutk,2415
|
|
18
|
+
dara/core/interactivity/actions.py,sha256=niNMt-IE_YXTtLpYrueTNCT60KelmNCGpUn7-WTVDQ4,48020
|
|
19
|
+
dara/core/interactivity/any_data_variable.py,sha256=1dLLxLuDErRsgaFPSTXxZHvpVucKKty90twQE6N-_NI,5286
|
|
20
|
+
dara/core/interactivity/any_variable.py,sha256=LOGhbDdYffujlRxF4LR9ZuWdai03R-EXuGsTEJAwfo0,13544
|
|
21
|
+
dara/core/interactivity/condition.py,sha256=69tdxgLqNbU-AlwHTWFdp-hvxGDugNnb_McDrz0mDtE,1575
|
|
22
|
+
dara/core/interactivity/data_variable.py,sha256=lIn2v3MSSfbhTtR-9qCqUP8VSzjVj5_wMClpgS1-UZQ,11834
|
|
23
|
+
dara/core/interactivity/derived_data_variable.py,sha256=u2HOts5rtmzK3D1K383YfYYQnb4pHZF3rTu1lfwMpPA,15323
|
|
24
|
+
dara/core/interactivity/derived_variable.py,sha256=x_vdt8hvgubDEISX6GfpR5CS7n2Vxq3oZIkVd8Daiw0,21927
|
|
25
|
+
dara/core/interactivity/filtering.py,sha256=BZsWsQvXPhn6WUoAFpAtgN6hXlGDudPbi4h97Qao2ic,9197
|
|
26
|
+
dara/core/interactivity/loop_variable.py,sha256=EqZX3bMCwKmI2Yu4pQ7TJG9hf3PY2AlAIBLxEzHFbTw,2998
|
|
27
|
+
dara/core/interactivity/non_data_variable.py,sha256=IMH5cNce2O6RUbu4HB_VLT-BBnDnGHr3lp09XU_lWa4,2378
|
|
28
|
+
dara/core/interactivity/plain_variable.py,sha256=ZIg9LhgfKEY1mfcWwysAXzeMRbVoFF61OYHt_od-9n0,9248
|
|
29
|
+
dara/core/interactivity/switch_variable.py,sha256=mC91kBoZON3JGBczv-YPvA5A6zY0mKqEr_7d3Sa_YMg,14194
|
|
30
|
+
dara/core/interactivity/url_variable.py,sha256=1ZPFHO3gq7ZuATHt4S9x5ijmk4GBVlUv5KJN6DkM49w,4357
|
|
31
|
+
dara/core/internal/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
|
|
32
|
+
dara/core/internal/cache_store/__init__.py,sha256=7JCmQwNIMzfyLZGnsk0BbT1EdDFO_PRZz86E9ATcC6c,139
|
|
33
|
+
dara/core/internal/cache_store/base_impl.py,sha256=gQ3N2diA4QihkLctP82vxfsSBntQy4cbjsAmmcSEPP4,1237
|
|
34
|
+
dara/core/internal/cache_store/cache_store.py,sha256=X6VMB-vFZkuxvYCS_mjmMuz8gs1Mqn49I5dXYqu9jHQ,8445
|
|
35
|
+
dara/core/internal/cache_store/keep_all.py,sha256=hFT2jjkVtV2UFedYNjdzAw1VqZo4c0F7OoKWqocO_GA,2231
|
|
36
|
+
dara/core/internal/cache_store/lru.py,sha256=V0KkpsU9oJ_vJ2j7iKFTxxihF1zCxVTvKBfi3m9kDlU,5143
|
|
37
|
+
dara/core/internal/cache_store/ttl.py,sha256=7zcVYR9a2M5qOTWuhor-TgKBKERPn6qsZsDnoUyazfM,4755
|
|
38
|
+
dara/core/internal/cgroup.py,sha256=o1Qqn5LV3TOPK7lQ0xbQj01zYT1pv-X_edGx8VhFvEw,3218
|
|
39
|
+
dara/core/internal/custom_response.py,sha256=aSPonh8AdRjioTk1MaPwdaJHkO4R4aG_osGAGCIHbtg,1341
|
|
40
|
+
dara/core/internal/dependency_resolution.py,sha256=YoDPvnEM5HXSJ1asrX8zrgceqj6EM1o5YVSWaFE8zUc,11161
|
|
41
|
+
dara/core/internal/devtools.py,sha256=YmJdYKEqfxrpXFYAM5sJ2wUtUhfvaCMbb9PuDcqFdt4,2441
|
|
42
|
+
dara/core/internal/download.py,sha256=2_fNIWDsV9f0BptTQRhBuIFXOO4th9pcYaIB7lsPcJU,3183
|
|
43
|
+
dara/core/internal/encoder_registry.py,sha256=tq2ka9RjStEFsxTdsWF6kSOU7rycggEq8YfDlzSyzKk,11277
|
|
44
|
+
dara/core/internal/execute_action.py,sha256=4lcU4ElyMlaybIv5oDlahsncJA4PM-6hLOKbtEpHPRI,7021
|
|
45
|
+
dara/core/internal/hashing.py,sha256=bKskv9n7s83uYVRxva77EC9exMbMZudmWsrsTPmg8W8,1139
|
|
46
|
+
dara/core/internal/import_discovery.py,sha256=XOknoeBsTSa4MgyklG26JGZhVAKhkjcnA7QIWqZlEps,8148
|
|
47
|
+
dara/core/internal/normalization.py,sha256=_PmPfJTp4--tpX_ltVKbNOuKMqeA1OoacG3ElvLly6U,6360
|
|
48
|
+
dara/core/internal/pandas_utils.py,sha256=hWOGZbfuakDulviMpaedpi4mhP45hpe9HSRCiDhlF44,2913
|
|
49
|
+
dara/core/internal/pool/__init__.py,sha256=pBbXE5GR3abVC9Lg3i0QxfdmsrBDMJUYAYb0SiAEBkk,657
|
|
50
|
+
dara/core/internal/pool/channel.py,sha256=TbyIE-PnfzzsQYhl3INOs5UIHHbF_h9bMFne5FjbWlQ,4948
|
|
51
|
+
dara/core/internal/pool/definitions.py,sha256=ICw_Krf-ziVGkzKl4qvvIgKC0Z06bvUehELH5-VMjV0,4645
|
|
52
|
+
dara/core/internal/pool/task_pool.py,sha256=rglSumeyWmY_rK3KSJKZGPp1kPSH4s8LADtWbxC5DuQ,17452
|
|
53
|
+
dara/core/internal/pool/utils.py,sha256=5a_F8fCtEtHD5iz_ZmwlxRm9GjhatvxE0E45-7H1ylU,5230
|
|
54
|
+
dara/core/internal/pool/worker.py,sha256=CkDZRoqkl-6BsJLeJCyYCoBaaOaX9i3Cq5v8qe1ztdI,6778
|
|
55
|
+
dara/core/internal/port_utils.py,sha256=AQOUNiFNBYKVUwQ7i9UlY1NQ3sWb5xh5GkO6P1Bm6zU,1655
|
|
56
|
+
dara/core/internal/registries.py,sha256=9WDczIsNeSmzi6aViIq_b14lmmYGGkdsUGHpv0Sg9zo,3278
|
|
57
|
+
dara/core/internal/registry.py,sha256=ONCDusqaL0q59Py_r8-fFVN3vbkkDf5TXzNvbB9SrGQ,4305
|
|
58
|
+
dara/core/internal/registry_lookup.py,sha256=8snHu2wUUsngXjHyHh6eZqL_WwonTTQB6-WBX-R_WZg,2238
|
|
59
|
+
dara/core/internal/routing.py,sha256=D2HFfwPKKpDuvvIwXInDWKoq2-zweMVmt4MiVBzorO0,23189
|
|
60
|
+
dara/core/internal/scheduler.py,sha256=tKpyN_yhtEepfqfkNTfFep055dl-Lq1_Itte6FTkH9o,12978
|
|
61
|
+
dara/core/internal/settings.py,sha256=ViEni6lVXvbP6Ofb0VoTaWXkI0XajmD-LBpqz1LzwpA,3923
|
|
62
|
+
dara/core/internal/store.py,sha256=kLRDuYEFwqpJMS0CmL5jGmETs645Xcug4jlelJqk5w4,7706
|
|
63
|
+
dara/core/internal/tasks.py,sha256=5NdUWGwy11Dd0riPBxiUP9IMb6Is7bfSnD40WLVRFik,25328
|
|
64
|
+
dara/core/internal/utils.py,sha256=b1YYkn8qHl6-GY6cCm2MS1NXRS9j_rElYCKMZOxJgrY,8232
|
|
65
|
+
dara/core/internal/websocket.py,sha256=qeW7KOeJ_FPkpAJNZaVwxIN_DqDv7XK7uyjTxJ8HIno,22043
|
|
66
|
+
dara/core/jinja/index.html,sha256=1gkCFiihXOUH7vp7tT5gH8mKeJB4KqNg394xO3a0usI,1208
|
|
67
|
+
dara/core/jinja/index_autojs.html,sha256=u1diDUnRT4djZqN1T6lIE01GhlfL6SJ_yLYcyapruss,1342
|
|
68
|
+
dara/core/js_tooling/custom_js_scaffold/index.tsx,sha256=FEzSV5o5Nyzxw6eXvGLi7BkEBkXf3brV34_7ATLnY7o,68
|
|
69
|
+
dara/core/js_tooling/custom_js_scaffold/local-js-component.tsx,sha256=Ojsyeh9MYJnH_XJXGkSc8PAUZIqJcqcGTu_uRITo_88,709
|
|
70
|
+
dara/core/js_tooling/js_utils.py,sha256=689PxGwjYbO0RiL_UbAfQNVmDiwIBuR6Kz66Q657oyI,26786
|
|
71
|
+
dara/core/js_tooling/statics/favicon.ico,sha256=CJP26erMMIwQB8FFmyhoUJ-Cx1cXEopiVGxFwyxcpo0,47068
|
|
72
|
+
dara/core/js_tooling/statics/tsconfig.json,sha256=ubnFjwvPHbx2F7wVWsU2VHLDeEnnOwXkTIk7hLNY8ZM,446
|
|
73
|
+
dara/core/js_tooling/templates/.npmrc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
|
+
dara/core/js_tooling/templates/_entry.template.tsx,sha256=oTeiSLDmq4J-2pM7qjA2RgUocT6Rla7BNwyEAJGvdCc,161
|
|
75
|
+
dara/core/js_tooling/templates/_entry_autojs.template.tsx,sha256=c9eNln0iLHUjhxsgXsF67hPcu4coloh0luvrhdM4ETM,202
|
|
76
|
+
dara/core/js_tooling/templates/dara.config.json,sha256=RZG_R_xJv_5rYIoz2QZulcG49wD0JURTzshtAzG_di4,84
|
|
77
|
+
dara/core/js_tooling/templates/vite.config.template.ts,sha256=-_GgbqPAcg_rTL2JsWjqYqZa4w6p2fKa2nyqGnjqj18,888
|
|
78
|
+
dara/core/log_configs/logging.yaml,sha256=YJyD18psAmSVz6587dcEOyoulLuRFFu1g8yMXl1ylM0,706
|
|
79
|
+
dara/core/logging.py,sha256=HiEbksFvlsSunlJd7wZrYrhKzR0Y4il0982rIwg5wOo,13099
|
|
80
|
+
dara/core/main.py,sha256=LxWLueYonVMnstz8JnpiGACEvB8LXl75JGqfUCnmSEM,18382
|
|
81
|
+
dara/core/metrics/__init__.py,sha256=2UqpWHv-Ie58QLJIHJ9Szfjq8xifAuwy5FYGUIFwWtI,823
|
|
82
|
+
dara/core/metrics/cache.py,sha256=bGXwjO_rSc-FkS3PnPi1mvIZf1x-hvmG113dAUk1g-Y,2616
|
|
83
|
+
dara/core/metrics/runtime.py,sha256=YP-6Dz0GeI9_Yr7bUk_-OqShyFySGH_AKpDO126l6es,1833
|
|
84
|
+
dara/core/metrics/utils.py,sha256=aKaa_hskV3M3h4xOGZYvegDLq_OWOEUlslkQKrrPQiI,2281
|
|
85
|
+
dara/core/persistence.py,sha256=-lnksbGfHwabeRjbJkceoFd0kHfCu4gK2fud8dkeDTg,18538
|
|
86
|
+
dara/core/umd/dara.core.umd.js,sha256=wgnDHKFgS8KS-sFTthsybUJIpDTkM_w2CyVaICdW3Sw,4730587
|
|
87
|
+
dara/core/umd/style.css,sha256=YQtQ4veiSktnyONl0CU1iU1kKfcQhreH4iASi1MP7Ak,4095007
|
|
88
|
+
dara/core/visual/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
|
|
89
|
+
dara/core/visual/components/__init__.py,sha256=eg6M2YcH1o-I2H3IqLaD32ExfZcXhKuH5KTM52Ow6RM,2359
|
|
90
|
+
dara/core/visual/components/dynamic_component.py,sha256=w7rxrM9ZTNvkHymkAto_s9UKg7EE8VrlpL9QdRe4sgY,692
|
|
91
|
+
dara/core/visual/components/fallback.py,sha256=9bhDbyGrWjdSuMX_8eSggkicSjgIa8mP75y9oFNIXK8,3303
|
|
92
|
+
dara/core/visual/components/for_cmp.py,sha256=jf1zgeg0FbpqFBtJQDPUyWIJBxcuMv25qJShEEshC58,6096
|
|
93
|
+
dara/core/visual/components/invalid_component.py,sha256=Q6O9rAwVUNZXjEmliAKLfWf2lsyYK5JhgQvMM6jVco8,901
|
|
94
|
+
dara/core/visual/components/menu.py,sha256=ied87GzIoZgmEINgX3WahBqofn-WK1PIBZAgMjR-Bxg,928
|
|
95
|
+
dara/core/visual/components/progress_tracker.py,sha256=5p_nEJf7RK2oPimXL4YhAN7v0Jcx2HHQzlLxPr7Co38,1705
|
|
96
|
+
dara/core/visual/components/raw_string.py,sha256=jtG9hDZz3s-sCg__Eg4__XkD80OhnNaWiRo-W88LK4M,921
|
|
97
|
+
dara/core/visual/components/router_content.py,sha256=ZFJBuT-Vpn4yvbzgt5IGQbBqiWFhYfHa6mgB2O8Xt8I,978
|
|
98
|
+
dara/core/visual/components/sidebar_frame.py,sha256=rXkPQF9TORuAgbMMx-BL_XDVE-CKcZHY9XV9-gZr_FI,1242
|
|
99
|
+
dara/core/visual/components/topbar_frame.py,sha256=7L4Bi7Ba_gdfS6yoduXQ3k0-XQaNuahmkumyfzlpzzY,1255
|
|
100
|
+
dara/core/visual/components/types.py,sha256=uH2IGufr4-I8cNbZgnEd3YbqoPFgyqG91rfNXZVG7a0,686
|
|
101
|
+
dara/core/visual/css/Property.py,sha256=XJzlMeASyrquhXmaQZvrsgin3xlVfm94dHRY9aJkhXk,43028
|
|
102
|
+
dara/core/visual/css/__init__.py,sha256=OfxYRjeQweul_cF2Zgh6U9E-v933mO2MCKeh5rVZkyI,367276
|
|
103
|
+
dara/core/visual/dynamic_component.py,sha256=M9HQOE0gJYbZFIV97L0kT6WCY4dJ2juT9R9YZ1TB1EA,13584
|
|
104
|
+
dara/core/visual/progress_updater.py,sha256=35_fb_F68YjtYf8MMRA76FoajjfPAlutmqz5fUNgTPs,5840
|
|
105
|
+
dara/core/visual/template.py,sha256=y0KJU2913Q10y1TVMpTVnIxIoUsabzYfpUHEGuX2QyM,5707
|
|
106
|
+
dara/core/visual/themes/__init__.py,sha256=aM4mgoIYo2neBSw5FRzswsht7PUKjLthiHLmFIkyRKw,794
|
|
107
|
+
dara/core/visual/themes/dark.py,sha256=UQGDooOc8ric73eHs9E0ltYP4UCrwqQ3QxqN_fb4PwY,1942
|
|
108
|
+
dara/core/visual/themes/definitions.py,sha256=nS_gQvOzCt5hTmj74d0_siq_9QWuj6wNuir4VCHy0Dk,2779
|
|
109
|
+
dara/core/visual/themes/light.py,sha256=-Tviq8oEwGbdFULoDOqPuHO0UpAZGsBy8qFi0kAGolQ,1944
|
|
110
|
+
dara_core-1.20.1a1.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
|
|
111
|
+
dara_core-1.20.1a1.dist-info/METADATA,sha256=7FOUXA157rHYFal84dWui3qOCnssft26MiyuTgQHBjg,7571
|
|
112
|
+
dara_core-1.20.1a1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
113
|
+
dara_core-1.20.1a1.dist-info/entry_points.txt,sha256=H__D5sNIGuPIhVam0DChNL-To5k8Y7nY7TAFz9Mz6cc,139
|
|
114
|
+
dara_core-1.20.1a1.dist-info/RECORD,,
|