dara-core 1.25.0__py3-none-any.whl → 1.25.2__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/_assets/auto_js/dara.core.umd.cjs +817 -381
- dara/core/interactivity/derived_variable.py +20 -3
- dara/core/interactivity/plain_variable.py +20 -5
- dara/core/interactivity/stream_variable.py +25 -5
- dara/core/internal/dependency_resolution.py +18 -6
- dara/core/internal/normalization.py +17 -3
- dara/core/router/dependency_graph.py +18 -0
- {dara_core-1.25.0.dist-info → dara_core-1.25.2.dist-info}/METADATA +10 -10
- {dara_core-1.25.0.dist-info → dara_core-1.25.2.dist-info}/RECORD +12 -12
- {dara_core-1.25.0.dist-info → dara_core-1.25.2.dist-info}/LICENSE +0 -0
- {dara_core-1.25.0.dist-info → dara_core-1.25.2.dist-info}/WHEEL +0 -0
- {dara_core-1.25.0.dist-info → dara_core-1.25.2.dist-info}/entry_points.txt +0 -0
|
@@ -22,6 +22,7 @@ import uuid
|
|
|
22
22
|
from collections.abc import Awaitable, Callable
|
|
23
23
|
from inspect import Parameter, signature
|
|
24
24
|
from typing import (
|
|
25
|
+
TYPE_CHECKING,
|
|
25
26
|
Any,
|
|
26
27
|
Generic,
|
|
27
28
|
Protocol,
|
|
@@ -41,6 +42,15 @@ from pydantic import (
|
|
|
41
42
|
)
|
|
42
43
|
from typing_extensions import TypedDict, TypeVar, runtime_checkable
|
|
43
44
|
|
|
45
|
+
if TYPE_CHECKING:
|
|
46
|
+
from dara.core.interactivity.loop_variable import LoopVariable
|
|
47
|
+
|
|
48
|
+
# Type alias for static type checking
|
|
49
|
+
NestedKey = str | LoopVariable
|
|
50
|
+
else:
|
|
51
|
+
# At runtime, use Any to avoid forward reference issues with Pydantic
|
|
52
|
+
NestedKey = Any
|
|
53
|
+
|
|
44
54
|
from dara.core.base_definitions import (
|
|
45
55
|
BaseCachePolicy,
|
|
46
56
|
BaseTask,
|
|
@@ -172,7 +182,7 @@ class DerivedVariable(ClientVariable, Generic[VariableType]):
|
|
|
172
182
|
variables: list[AnyVariable]
|
|
173
183
|
polling_interval: int | None
|
|
174
184
|
deps: list[AnyVariable] | None = Field(validate_default=True)
|
|
175
|
-
nested: list[
|
|
185
|
+
nested: list[NestedKey] = Field(default_factory=list)
|
|
176
186
|
uid: str
|
|
177
187
|
model_config = ConfigDict(extra='forbid', use_enum_values=True, arbitrary_types_allowed=True)
|
|
178
188
|
|
|
@@ -185,7 +195,7 @@ class DerivedVariable(ClientVariable, Generic[VariableType]):
|
|
|
185
195
|
polling_interval: int | None = None,
|
|
186
196
|
deps: list[AnyVariable] | None = None,
|
|
187
197
|
uid: str | None = None,
|
|
188
|
-
nested: list[
|
|
198
|
+
nested: list[NestedKey] | None = None,
|
|
189
199
|
filter_resolver: FilterResolver | None = None,
|
|
190
200
|
**kwargs,
|
|
191
201
|
):
|
|
@@ -271,7 +281,14 @@ class DerivedVariable(ClientVariable, Generic[VariableType]):
|
|
|
271
281
|
|
|
272
282
|
return deps
|
|
273
283
|
|
|
274
|
-
def get(self, key:
|
|
284
|
+
def get(self, key: NestedKey):
|
|
285
|
+
"""
|
|
286
|
+
Create a copy of this DerivedVariable that points to a nested key.
|
|
287
|
+
|
|
288
|
+
The key can be a string or a LoopVariable for dynamic access within a For loop.
|
|
289
|
+
|
|
290
|
+
:param key: the key to access; can be a string or LoopVariable
|
|
291
|
+
"""
|
|
275
292
|
return self.model_copy(update={'nested': [*self.nested, key]}, deep=True)
|
|
276
293
|
|
|
277
294
|
def trigger(self, force: bool = True):
|
|
@@ -21,7 +21,7 @@ import warnings
|
|
|
21
21
|
from collections.abc import Callable
|
|
22
22
|
from contextlib import contextmanager
|
|
23
23
|
from contextvars import ContextVar
|
|
24
|
-
from typing import Any, Generic
|
|
24
|
+
from typing import TYPE_CHECKING, Any, Generic
|
|
25
25
|
|
|
26
26
|
from fastapi.encoders import jsonable_encoder
|
|
27
27
|
from pydantic import (
|
|
@@ -40,6 +40,15 @@ from dara.core.internal.utils import call_async
|
|
|
40
40
|
from dara.core.logging import dev_logger
|
|
41
41
|
from dara.core.persistence import BackendStore, BrowserStore, PersistenceStore
|
|
42
42
|
|
|
43
|
+
if TYPE_CHECKING:
|
|
44
|
+
from dara.core.interactivity.loop_variable import LoopVariable
|
|
45
|
+
|
|
46
|
+
# Type alias for static type checking
|
|
47
|
+
NestedKey = str | LoopVariable
|
|
48
|
+
else:
|
|
49
|
+
# At runtime, use Any to avoid forward reference issues with Pydantic
|
|
50
|
+
NestedKey = Any
|
|
51
|
+
|
|
43
52
|
VARIABLE_INIT_OVERRIDE = ContextVar[Callable[[dict], dict] | None]('VARIABLE_INIT_OVERRIDE', default=None)
|
|
44
53
|
|
|
45
54
|
VariableType = TypeVar('VariableType')
|
|
@@ -56,7 +65,7 @@ class Variable(ClientVariable, Generic[VariableType, PersistenceStoreType_co]):
|
|
|
56
65
|
default: VariableType | None = None
|
|
57
66
|
store: SerializeAsAny[PersistenceStoreType_co | None] = None
|
|
58
67
|
uid: str
|
|
59
|
-
nested: list[
|
|
68
|
+
nested: list[NestedKey] = Field(default_factory=list)
|
|
60
69
|
model_config = ConfigDict(extra='forbid')
|
|
61
70
|
|
|
62
71
|
def __init__(
|
|
@@ -65,7 +74,7 @@ class Variable(ClientVariable, Generic[VariableType, PersistenceStoreType_co]):
|
|
|
65
74
|
persist_value: bool | None = False,
|
|
66
75
|
uid: str | None = None,
|
|
67
76
|
store: PersistenceStoreType_co | None = None,
|
|
68
|
-
nested: list[
|
|
77
|
+
nested: list[NestedKey] | None = None,
|
|
69
78
|
**kwargs,
|
|
70
79
|
):
|
|
71
80
|
"""
|
|
@@ -144,11 +153,13 @@ class Variable(ClientVariable, Generic[VariableType, PersistenceStoreType_co]):
|
|
|
144
153
|
yield
|
|
145
154
|
VARIABLE_INIT_OVERRIDE.reset(token)
|
|
146
155
|
|
|
147
|
-
def get(self, key:
|
|
156
|
+
def get(self, key: NestedKey):
|
|
148
157
|
"""
|
|
149
158
|
Create a copy of this Variable that points to a nested key. This is useful when
|
|
150
159
|
storing e.g. a dictionary in a Variable and wanting to access a specific key.
|
|
151
160
|
|
|
161
|
+
The key can be a string or a LoopVariable for dynamic access within a For loop.
|
|
162
|
+
|
|
152
163
|
```python
|
|
153
164
|
from dara.core import Variable, UpdateVariable
|
|
154
165
|
from dara_dashboarding_extension import Input, Text, Stack, Button
|
|
@@ -177,7 +188,11 @@ class Variable(ClientVariable, Generic[VariableType, PersistenceStoreType_co]):
|
|
|
177
188
|
)
|
|
178
189
|
)
|
|
179
190
|
|
|
180
|
-
|
|
191
|
+
# Dynamic access using LoopVariable
|
|
192
|
+
items = Variable([{'id': 'a'}, {'id': 'b'}])
|
|
193
|
+
For(items=items, renderer=Input(value=state.get(items.list_item.get('id'))))
|
|
194
|
+
|
|
195
|
+
:param key: the key to access; can be a string or LoopVariable
|
|
181
196
|
```
|
|
182
197
|
"""
|
|
183
198
|
return self.model_copy(update={'nested': [*self.nested, key]}, deep=True)
|
|
@@ -21,12 +21,21 @@ import asyncio
|
|
|
21
21
|
import contextlib
|
|
22
22
|
from collections.abc import AsyncGenerator, Callable
|
|
23
23
|
from dataclasses import dataclass
|
|
24
|
-
from typing import Any, Generic, Literal
|
|
24
|
+
from typing import TYPE_CHECKING, Any, Generic, Literal
|
|
25
25
|
|
|
26
26
|
from fastapi import Request
|
|
27
27
|
from pydantic import ConfigDict, Field, SerializerFunctionWrapHandler, field_validator, model_serializer
|
|
28
28
|
from typing_extensions import TypeVar
|
|
29
29
|
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
from dara.core.interactivity.loop_variable import LoopVariable
|
|
32
|
+
|
|
33
|
+
# Type alias for static type checking
|
|
34
|
+
NestedKey = str | LoopVariable
|
|
35
|
+
else:
|
|
36
|
+
# At runtime, use Any to avoid forward reference issues with Pydantic
|
|
37
|
+
NestedKey = Any
|
|
38
|
+
|
|
30
39
|
from dara.core.base_definitions import BaseTask
|
|
31
40
|
from dara.core.interactivity.any_variable import AnyVariable
|
|
32
41
|
from dara.core.interactivity.client_variable import ClientVariable
|
|
@@ -119,7 +128,7 @@ class StreamVariable(ClientVariable, Generic[VariableType]):
|
|
|
119
128
|
uid: str
|
|
120
129
|
variables: list[AnyVariable] = Field(default_factory=list)
|
|
121
130
|
key_accessor: str | None = None
|
|
122
|
-
nested: list[
|
|
131
|
+
nested: list[NestedKey] = Field(default_factory=list)
|
|
123
132
|
|
|
124
133
|
model_config = ConfigDict(extra='forbid')
|
|
125
134
|
|
|
@@ -160,7 +169,7 @@ class StreamVariable(ClientVariable, Generic[VariableType]):
|
|
|
160
169
|
variables: list[AnyVariable] | None = None,
|
|
161
170
|
key_accessor: str | None = None,
|
|
162
171
|
uid: str | None = None,
|
|
163
|
-
nested: list[
|
|
172
|
+
nested: list[NestedKey] | None = None,
|
|
164
173
|
**kwargs,
|
|
165
174
|
):
|
|
166
175
|
"""
|
|
@@ -201,13 +210,15 @@ class StreamVariable(ClientVariable, Generic[VariableType]):
|
|
|
201
210
|
),
|
|
202
211
|
)
|
|
203
212
|
|
|
204
|
-
def get(self, *keys:
|
|
213
|
+
def get(self, *keys: NestedKey) -> StreamVariable[Any]:
|
|
205
214
|
"""
|
|
206
215
|
Access a nested value within the stream's accumulated state.
|
|
207
216
|
|
|
208
217
|
This is useful when the stream accumulates complex state (via snapshot/patch)
|
|
209
218
|
and you want to access a specific part of it.
|
|
210
219
|
|
|
220
|
+
Keys can be strings or LoopVariables for dynamic access within a For loop.
|
|
221
|
+
|
|
211
222
|
Example::
|
|
212
223
|
|
|
213
224
|
dashboard = StreamVariable(dashboard_stream, variables=[id_var])
|
|
@@ -215,11 +226,20 @@ class StreamVariable(ClientVariable, Generic[VariableType]):
|
|
|
215
226
|
# Access nested value
|
|
216
227
|
Text(dashboard.get('meta', 'count'))
|
|
217
228
|
|
|
229
|
+
# Dynamic access using LoopVariable
|
|
230
|
+
items = Variable([{'id': 'a'}, {'id': 'b'}])
|
|
231
|
+
For(items=items, renderer=Text(dashboard.get(items.list_item.get('id'))))
|
|
232
|
+
|
|
218
233
|
:param keys: One or more keys to traverse into the nested structure.
|
|
234
|
+
Can be strings or LoopVariables.
|
|
219
235
|
:return: A new StreamVariable pointing to the nested path.
|
|
220
236
|
"""
|
|
237
|
+
from dara.core.interactivity.loop_variable import LoopVariable
|
|
238
|
+
|
|
239
|
+
# Preserve LoopVariables as-is, convert other types to strings
|
|
240
|
+
processed_keys: list[NestedKey] = [k if isinstance(k, LoopVariable) else str(k) for k in keys]
|
|
221
241
|
return self.model_copy(
|
|
222
|
-
update={'nested': [*self.nested, *
|
|
242
|
+
update={'nested': [*self.nested, *processed_keys]},
|
|
223
243
|
deep=True,
|
|
224
244
|
)
|
|
225
245
|
|
|
@@ -17,6 +17,7 @@ limitations under the License.
|
|
|
17
17
|
|
|
18
18
|
from typing import Any, Literal, TypeGuard
|
|
19
19
|
|
|
20
|
+
from pydantic import BaseModel
|
|
20
21
|
from typing_extensions import TypedDict
|
|
21
22
|
|
|
22
23
|
from dara.core.base_definitions import BaseTask, PendingTask
|
|
@@ -75,16 +76,27 @@ def _resolve_nested(value: Any, nested: list[str] | None) -> Any:
|
|
|
75
76
|
if not nested or len(nested) == 0:
|
|
76
77
|
return value
|
|
77
78
|
|
|
78
|
-
# Not a dict
|
|
79
|
-
if value is None or not isinstance(value, dict):
|
|
79
|
+
# Not a dict/model
|
|
80
|
+
if value is None or not isinstance(value, (dict, BaseModel)):
|
|
80
81
|
return value
|
|
81
82
|
|
|
82
83
|
result = value
|
|
83
84
|
for key in nested:
|
|
84
|
-
#
|
|
85
|
-
if
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
# Defensive check: LoopVariable should have been resolved by frontend templating
|
|
86
|
+
if isinstance(key, dict):
|
|
87
|
+
raise ValueError(
|
|
88
|
+
'LoopVariable found in nested path during backend resolution. '
|
|
89
|
+
'This should have been resolved by frontend templating.'
|
|
90
|
+
)
|
|
91
|
+
# Can recurse into a dict or a pydantic model
|
|
92
|
+
if isinstance(result, dict):
|
|
93
|
+
# Path does not exist, resolve to None
|
|
94
|
+
if key not in result:
|
|
95
|
+
return None
|
|
96
|
+
result = result[key]
|
|
97
|
+
elif isinstance(result, BaseModel):
|
|
98
|
+
# fall back to None, if key doesn't exist/is None, we'll skip iterating anyway
|
|
99
|
+
result = getattr(result, key, None)
|
|
88
100
|
|
|
89
101
|
return result
|
|
90
102
|
|
|
@@ -21,7 +21,6 @@ from typing import (
|
|
|
21
21
|
Generic,
|
|
22
22
|
TypeGuard,
|
|
23
23
|
TypeVar,
|
|
24
|
-
cast,
|
|
25
24
|
overload,
|
|
26
25
|
)
|
|
27
26
|
|
|
@@ -57,13 +56,26 @@ class Referrable(TypedDict):
|
|
|
57
56
|
|
|
58
57
|
|
|
59
58
|
class ReferrableWithNested(Referrable):
|
|
60
|
-
nested: list[str]
|
|
59
|
+
nested: list[str | dict] # dict represents serialized LoopVariable
|
|
61
60
|
|
|
62
61
|
|
|
63
62
|
class ReferrableWithFilters(Referrable):
|
|
64
63
|
filters: dict
|
|
65
64
|
|
|
66
65
|
|
|
66
|
+
def _serialize_nested_key(key: str | dict) -> str:
|
|
67
|
+
"""
|
|
68
|
+
Serialize a single nested key for identifier computation.
|
|
69
|
+
|
|
70
|
+
Handles both string keys and LoopVariable dicts.
|
|
71
|
+
"""
|
|
72
|
+
if isinstance(key, dict) and key.get('__typename') == 'LoopVariable':
|
|
73
|
+
# Format: LoopVar:uid:nested.joined
|
|
74
|
+
loop_nested = ','.join(key.get('nested', []))
|
|
75
|
+
return f'LoopVar:{key["uid"]}:{loop_nested}'
|
|
76
|
+
return str(key)
|
|
77
|
+
|
|
78
|
+
|
|
67
79
|
def _get_identifier(obj: Referrable) -> str:
|
|
68
80
|
"""
|
|
69
81
|
Get a unique identifier from a 'referrable' object
|
|
@@ -74,7 +86,9 @@ def _get_identifier(obj: Referrable) -> str:
|
|
|
74
86
|
|
|
75
87
|
# If it's a Variable with 'nested', the property should be included in the identifier
|
|
76
88
|
if _is_referrable_nested(obj) and len(obj['nested']) > 0:
|
|
77
|
-
|
|
89
|
+
# Handle mixed string/LoopVariable nested
|
|
90
|
+
nested_parts = [_serialize_nested_key(k) for k in obj['nested']]
|
|
91
|
+
nested = ','.join(nested_parts)
|
|
78
92
|
identifier = f'{identifier}:{nested}'
|
|
79
93
|
|
|
80
94
|
return identifier
|
|
@@ -4,6 +4,14 @@ from dara.core.definitions import ComponentInstance
|
|
|
4
4
|
from dara.core.interactivity.derived_variable import DerivedVariable
|
|
5
5
|
from dara.core.visual.dynamic_component import PyComponentInstance
|
|
6
6
|
|
|
7
|
+
# Control flow components have conditional children that shouldn't be preloaded
|
|
8
|
+
# since only one branch will actually render at runtime
|
|
9
|
+
CONTROL_FLOW_SKIP_ATTRS: dict[str, set[str]] = {
|
|
10
|
+
'If': {'true_children', 'false_children'},
|
|
11
|
+
'Match': {'when', 'default'},
|
|
12
|
+
'For': {'renderer', 'placeholder'},
|
|
13
|
+
}
|
|
14
|
+
|
|
7
15
|
|
|
8
16
|
class DependencyGraph(BaseModel):
|
|
9
17
|
"""
|
|
@@ -33,6 +41,9 @@ class DependencyGraph(BaseModel):
|
|
|
33
41
|
def _analyze_component_dependencies(component: ComponentInstance, graph: DependencyGraph) -> None:
|
|
34
42
|
"""
|
|
35
43
|
Recursively analyze a component tree to build a dependency graph of DerivedVariables and PyComponentInstances.
|
|
44
|
+
|
|
45
|
+
Note: Control flow components (If, Match, For) are treated as boundaries - their conditional
|
|
46
|
+
child properties are not recursed into since only one branch will render at runtime.
|
|
36
47
|
"""
|
|
37
48
|
try:
|
|
38
49
|
from dara.components import Table
|
|
@@ -45,8 +56,15 @@ def _analyze_component_dependencies(component: ComponentInstance, graph: Depende
|
|
|
45
56
|
graph.py_components[component.uid] = component
|
|
46
57
|
return
|
|
47
58
|
|
|
59
|
+
# Get properties to skip for control flow components
|
|
60
|
+
component_name = type(component).__name__
|
|
61
|
+
skip_attrs = CONTROL_FLOW_SKIP_ATTRS.get(component_name, set())
|
|
62
|
+
|
|
48
63
|
# otherwise check each field
|
|
49
64
|
for attr in component.model_fields_set:
|
|
65
|
+
# Skip conditional child properties of control flow components
|
|
66
|
+
if attr in skip_attrs:
|
|
67
|
+
continue
|
|
50
68
|
value = getattr(component, attr, None)
|
|
51
69
|
|
|
52
70
|
# Handle encountered variables and py_components
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dara-core
|
|
3
|
-
Version: 1.25.
|
|
3
|
+
Version: 1.25.2
|
|
4
4
|
Summary: Dara Framework Core
|
|
5
5
|
Home-page: https://dara.causalens.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -21,10 +21,10 @@ Requires-Dist: cachetools (>=5.0.0)
|
|
|
21
21
|
Requires-Dist: certifi (>=2024.7.4)
|
|
22
22
|
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
23
23
|
Requires-Dist: colorama (>=0.4.6,<0.5.0)
|
|
24
|
-
Requires-Dist: create-dara-app (==1.25.
|
|
24
|
+
Requires-Dist: create-dara-app (==1.25.2)
|
|
25
25
|
Requires-Dist: croniter (>=6.0.0,<7.0.0)
|
|
26
26
|
Requires-Dist: cryptography (>=42.0.4)
|
|
27
|
-
Requires-Dist: dara-components (==1.25.
|
|
27
|
+
Requires-Dist: dara-components (==1.25.2) ; extra == "all"
|
|
28
28
|
Requires-Dist: exceptiongroup (>=1.1.3,<2.0.0)
|
|
29
29
|
Requires-Dist: fastapi (>=0.115.0,<0.121.0)
|
|
30
30
|
Requires-Dist: fastapi_vite_dara (==0.4.0)
|
|
@@ -55,7 +55,7 @@ Description-Content-Type: text/markdown
|
|
|
55
55
|
|
|
56
56
|
# Dara Application Framework
|
|
57
57
|
|
|
58
|
-
<img src="https://github.com/causalens/dara/blob/v1.25.
|
|
58
|
+
<img src="https://github.com/causalens/dara/blob/v1.25.2/img/dara_light.svg?raw=true">
|
|
59
59
|
|
|
60
60
|

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

|
|
104
104
|
|
|
105
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:
|
|
106
106
|
|
|
@@ -117,9 +117,9 @@ Explore some of our favorite apps - a great way of getting started and getting t
|
|
|
117
117
|
|
|
118
118
|
| Dara App | Description |
|
|
119
119
|
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
120
|
-
|  | 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. |
|
|
123
123
|
|
|
124
124
|
Check out our [App Gallery](https://dara.causalens.com/gallery) for more inspiration!
|
|
125
125
|
|
|
@@ -146,9 +146,9 @@ And the supporting UI packages and tools.
|
|
|
146
146
|
- `ui-utils` - miscellaneous utility functions
|
|
147
147
|
- `ui-widgets` - widget components
|
|
148
148
|
|
|
149
|
-
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.25.
|
|
149
|
+
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.25.2/CONTRIBUTING.md) file.
|
|
150
150
|
|
|
151
151
|
## License
|
|
152
152
|
|
|
153
|
-
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.25.
|
|
153
|
+
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.25.2/LICENSE).
|
|
154
154
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
dara/core/__init__.py,sha256=yTp-lXT0yy9XqLGYWlmjPgFG5g2eEg2KhKo8KheTHoo,1408
|
|
2
2
|
dara/core/_assets/__init__.py,sha256=13vMoWHvl1zcFcjNHh8lbTwWOvu4f7krYSco978qxwM,723
|
|
3
3
|
dara/core/_assets/auto_js/dara.core.css,sha256=yT3PKpi2sKI2-kQIF8xtVbTPQqgpK7-Ua7tfzDPuSsI,4095881
|
|
4
|
-
dara/core/_assets/auto_js/dara.core.umd.cjs,sha256=
|
|
4
|
+
dara/core/_assets/auto_js/dara.core.umd.cjs,sha256=0vzgGyBGxycyQ7iIG69rUlOKOGoyv6XDsY_qKoWYEGU,5203204
|
|
5
5
|
dara/core/_assets/auto_js/react-dom.development.js,sha256=vR2Fq5LXMKS5JsTo2CMl6oGCJT8scJV2wXSteTtx8aE,1077040
|
|
6
6
|
dara/core/_assets/auto_js/react-is.development.js,sha256=2IRgmaphdMq6wx2MbsmVUQ0UwapGETNjgano3XEkGcc,7932
|
|
7
7
|
dara/core/_assets/auto_js/react-query.development.js,sha256=lI2fTKMvWmjbagGQaVtZYr51_-C_U_so064JwetuDS0,130366
|
|
@@ -37,16 +37,16 @@ dara/core/interactivity/client_variable.py,sha256=Ku59TBDXrqEsMkc-upQ_GspWqHGBdt
|
|
|
37
37
|
dara/core/interactivity/condition.py,sha256=BHfRA5kkULBjLbS9Q2NpkWUxcCicm0aKTTrsEWQQCVE,1567
|
|
38
38
|
dara/core/interactivity/data_variable.py,sha256=FJ6vtsZ-39C2KrOIaxSnjOBCD0mOHjvunMUkUjXon6Q,2500
|
|
39
39
|
dara/core/interactivity/derived_data_variable.py,sha256=nfHYrd2a4dT7penr2JhPVnHAv3MGpKn1pIIF5mh4xQo,3611
|
|
40
|
-
dara/core/interactivity/derived_variable.py,sha256=
|
|
40
|
+
dara/core/interactivity/derived_variable.py,sha256=pTB1w9j9Xlxxv2WoWS4O5ccMkrnsgvcMdjFubwqhxIs,32837
|
|
41
41
|
dara/core/interactivity/filtering.py,sha256=_F0OtECufYCptRI6h98_vDliG9xcPD5SItlQkjiNqR4,9667
|
|
42
42
|
dara/core/interactivity/loop_variable.py,sha256=9AvHUuyuneSLJstscv-o8gMd_FMd8p-U8QK5GqsPCVo,3611
|
|
43
43
|
dara/core/interactivity/non_data_variable.py,sha256=k2yXTowWmH5UhG9iJfYo_bUG7AT5fdKSwX5LcDQ71-4,178
|
|
44
|
-
dara/core/interactivity/plain_variable.py,sha256=
|
|
44
|
+
dara/core/interactivity/plain_variable.py,sha256=naN_7ejDKnbCGxDmyFZ7xkO-B4yFTPKgtj-9so64QXg,13707
|
|
45
45
|
dara/core/interactivity/server_variable.py,sha256=s1OoLIyWIVF0TAId5Pv3b6ZZpBEHjzTotYQufAYHjZI,11109
|
|
46
46
|
dara/core/interactivity/state_variable.py,sha256=Xpiazq25XS12dgvr3m1ojoqSy7svdmMaRMBxABusOzQ,2441
|
|
47
47
|
dara/core/interactivity/stream_event.py,sha256=83zAwf_MqjoWONNvutGW4uoIlTXXBJvLUGg7JuPNIWs,10059
|
|
48
48
|
dara/core/interactivity/stream_utils.py,sha256=xcqr4mQj4IH0bI_hfZ2jb2FImYftJea1qGmC_-Wh1oY,2404
|
|
49
|
-
dara/core/interactivity/stream_variable.py,sha256=
|
|
49
|
+
dara/core/interactivity/stream_variable.py,sha256=pYKakNcwPazIgrTrMZHcMrcDVNFF0mfk6308irKEjpY,13614
|
|
50
50
|
dara/core/interactivity/switch_variable.py,sha256=dhmAnF2KmL4944TJVipV-30BPYSLoD-uxyBP49W3V9Q,14099
|
|
51
51
|
dara/core/interactivity/tabular_variable.py,sha256=rUz9jnU6ya_0J7dhIN8d0VCDfzO7N5AsvksrHNtCO7k,3337
|
|
52
52
|
dara/core/interactivity/url_variable.py,sha256=lAtHgYvLA8RE-eFfv4Ix27T5YLGT5e0c0q9O5eQPOos,2282
|
|
@@ -59,7 +59,7 @@ dara/core/internal/cache_store/lru.py,sha256=6Jd4TmUX1LaEPnOraf8cSnL9Rx-A_LDhjqO
|
|
|
59
59
|
dara/core/internal/cache_store/ttl.py,sha256=WzSZfdhK-nTf0fwCwtaRbJ-9I-FeTNBXgnZgSvZMbKQ,4966
|
|
60
60
|
dara/core/internal/cgroup.py,sha256=yKCTY8RxyxnNy-Mw4tfzeZew1dL8qw381gHBVE96-OA,3217
|
|
61
61
|
dara/core/internal/custom_response.py,sha256=MM0xEX7kVZWyX943Obl7sic3bxXr6kHGLWe6pc5pcYg,1304
|
|
62
|
-
dara/core/internal/dependency_resolution.py,sha256=
|
|
62
|
+
dara/core/internal/dependency_resolution.py,sha256=Y3o9wnvEmFSfTaqc5Dqw2msDzwl5VtCNC2TmCkeLGHQ,11910
|
|
63
63
|
dara/core/internal/devtools.py,sha256=4LsK7sqES33fAqb53dyH3n0OSWang3W-MiPsmo57aXU,2586
|
|
64
64
|
dara/core/internal/download.py,sha256=wBSUapMY6evZ_sA5ZgvnWhaRtzVMIDIC51mPzFCMWuM,3548
|
|
65
65
|
dara/core/internal/encoder_registry.py,sha256=Q8F5Y2uZVkx7EUtk4MZ99wvPBWaMnPKcFZzK92FYNPw,11159
|
|
@@ -67,7 +67,7 @@ dara/core/internal/execute_action.py,sha256=di2WBTHw6smcRRYv1uqJbnnMxPTRq2uxYLdq
|
|
|
67
67
|
dara/core/internal/hashing.py,sha256=LTX249EpWfJ8ikx66o8t4gtSYxvcC00RKLOW6epbqCA,1094
|
|
68
68
|
dara/core/internal/import_discovery.py,sha256=8DFtLulbOIoPr4yxnS1OO431dZA27hLEjylklW_cm6s,8042
|
|
69
69
|
dara/core/internal/multi_resource_lock.py,sha256=mUoc6KKk8mpLGCXfa6nFd60yNuas4b6wsAk8VrvGDxI,2496
|
|
70
|
-
dara/core/internal/normalization.py,sha256=
|
|
70
|
+
dara/core/internal/normalization.py,sha256=aCRCT5G9RZJzPGlVvMgNoqOZVXSs_Ku5QiqVp81hsfY,6583
|
|
71
71
|
dara/core/internal/pandas_utils.py,sha256=1au2ixLfqdvwuFApwah580Y0WD6puw_Q0lBgFtK-Hdo,6514
|
|
72
72
|
dara/core/internal/pool/__init__.py,sha256=pBbXE5GR3abVC9Lg3i0QxfdmsrBDMJUYAYb0SiAEBkk,657
|
|
73
73
|
dara/core/internal/pool/channel.py,sha256=mLYa-R4KBGjRENDc9r1Hym5TpIeLv9y5kLJtjI7YXZA,4911
|
|
@@ -109,7 +109,7 @@ dara/core/persistence.py,sha256=EAEER1T0MHBrtT-iLZ-eXzAsqwu4Klqw5mDlTPSdPkI,1932
|
|
|
109
109
|
dara/core/router/__init__.py,sha256=yGI_MgLQU37ircCtYVNjnhqCjWQxKd5amoNqvMyrhOs,121
|
|
110
110
|
dara/core/router/compat.py,sha256=B83wq46AwQARTDfZwGrpr0slrnQmi_T7shOUNpqltSM,3112
|
|
111
111
|
dara/core/router/components.py,sha256=Wsf_bBnnN-1EE5jhbjPSOyDv_TVKEsY4royyOQOazM4,6132
|
|
112
|
-
dara/core/router/dependency_graph.py,sha256=
|
|
112
|
+
dara/core/router/dependency_graph.py,sha256=iX2f7l_FaEuaTHsEyl2wOl_eboic9EXEOsMXpmduQP4,3368
|
|
113
113
|
dara/core/router/router.py,sha256=ys3k48pIjTdbmch5516O4TAeo8IIUPThdqgeoXC-kMQ,32593
|
|
114
114
|
dara/core/visual/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
|
|
115
115
|
dara/core/visual/components/__init__.py,sha256=Jrh38Q4Lc8iFFVKPuEaDeloYHVLohTTHgK92u1e_ZtY,2515
|
|
@@ -137,8 +137,8 @@ dara/core/visual/themes/__init__.py,sha256=aM4mgoIYo2neBSw5FRzswsht7PUKjLthiHLmF
|
|
|
137
137
|
dara/core/visual/themes/dark.py,sha256=QazCRDqh_SCOyQhdwMkH1wbHf301oL7gCFj91plbLww,2020
|
|
138
138
|
dara/core/visual/themes/definitions.py,sha256=dtET2YUlwXkO6gJ23MqSb8gIq-LxJ343CWsgueWSifM,2787
|
|
139
139
|
dara/core/visual/themes/light.py,sha256=dtHb6Q1HOb5r_AvJfe0vZajikVc-GnBEUrGsTcI5MHA,2022
|
|
140
|
-
dara_core-1.25.
|
|
141
|
-
dara_core-1.25.
|
|
142
|
-
dara_core-1.25.
|
|
143
|
-
dara_core-1.25.
|
|
144
|
-
dara_core-1.25.
|
|
140
|
+
dara_core-1.25.2.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
|
|
141
|
+
dara_core-1.25.2.dist-info/METADATA,sha256=caPbk-_UXnbnQpA4ZXSp7kJiocJYqz7G-tiqS4i-6tY,7523
|
|
142
|
+
dara_core-1.25.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
143
|
+
dara_core-1.25.2.dist-info/entry_points.txt,sha256=nAT9o1kJCmTK1saDh29PFGFD6cbxDDDjTj31HDEDwfU,197
|
|
144
|
+
dara_core-1.25.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|