dara-core 1.18.3__py3-none-any.whl → 1.18.4__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/defaults.py +2 -0
- dara/core/definitions.py +36 -2
- dara/core/umd/dara.core.umd.js +18 -8
- dara/core/visual/components/fallback.py +28 -2
- dara/core/visual/components/for_cmp.py +4 -1
- dara/core/visual/dynamic_component.py +4 -4
- {dara_core-1.18.3.dist-info → dara_core-1.18.4.dist-info}/METADATA +10 -10
- {dara_core-1.18.3.dist-info → dara_core-1.18.4.dist-info}/RECORD +11 -11
- {dara_core-1.18.3.dist-info → dara_core-1.18.4.dist-info}/LICENSE +0 -0
- {dara_core-1.18.3.dist-info → dara_core-1.18.4.dist-info}/WHEEL +0 -0
- {dara_core-1.18.3.dist-info → dara_core-1.18.4.dist-info}/entry_points.txt +0 -0
dara/core/defaults.py
CHANGED
|
@@ -53,6 +53,7 @@ from dara.core.visual.components import (
|
|
|
53
53
|
TopBarFrame,
|
|
54
54
|
TopBarFrameDef,
|
|
55
55
|
)
|
|
56
|
+
from dara.core.visual.components.fallback import CustomFallbackDef
|
|
56
57
|
from dara.core.visual.template import TemplateBuilder
|
|
57
58
|
|
|
58
59
|
if TYPE_CHECKING:
|
|
@@ -79,6 +80,7 @@ CORE_COMPONENTS: Dict[str, ComponentTypeAnnotation] = {
|
|
|
79
80
|
TopBarFrame.__name__: TopBarFrameDef,
|
|
80
81
|
cast(str, Fallback.Default.py_component): DefaultFallbackDef,
|
|
81
82
|
cast(str, Fallback.Row.py_component): RowFallbackDef,
|
|
83
|
+
cast(str, Fallback.Custom.py_component): CustomFallbackDef,
|
|
82
84
|
For.__name__: ForDef,
|
|
83
85
|
}
|
|
84
86
|
|
dara/core/definitions.py
CHANGED
|
@@ -174,7 +174,7 @@ class ComponentInstance(BaseModel):
|
|
|
174
174
|
error_handler: Optional[ErrorHandlingConfig] = None
|
|
175
175
|
"""Configure the error handling for the component"""
|
|
176
176
|
|
|
177
|
-
fallback: Optional[BaseFallback] = None
|
|
177
|
+
fallback: Optional[Union[BaseFallback, ComponentInstance]] = None
|
|
178
178
|
"""
|
|
179
179
|
Fallback component to render in place of the actual UI if it has not finished loading
|
|
180
180
|
"""
|
|
@@ -196,6 +196,23 @@ class ComponentInstance(BaseModel):
|
|
|
196
196
|
def __repr__(self):
|
|
197
197
|
return '__dara__' + json.dumps(jsonable_encoder(self))
|
|
198
198
|
|
|
199
|
+
@field_validator('fallback', mode='before')
|
|
200
|
+
@classmethod
|
|
201
|
+
def validate_fallback(cls, fallback):
|
|
202
|
+
if fallback is None:
|
|
203
|
+
return None
|
|
204
|
+
|
|
205
|
+
if isinstance(fallback, BaseFallback):
|
|
206
|
+
return fallback
|
|
207
|
+
|
|
208
|
+
# wrap custom component in fallback.custom
|
|
209
|
+
if isinstance(fallback, ComponentInstance):
|
|
210
|
+
from dara.core.visual.components.fallback import Fallback
|
|
211
|
+
|
|
212
|
+
return Fallback.Custom(component=fallback)
|
|
213
|
+
|
|
214
|
+
raise ValueError(f'fallback must be a BaseFallback or ComponentInstance, got {type(fallback)}')
|
|
215
|
+
|
|
199
216
|
@field_validator('raw_css', mode='before')
|
|
200
217
|
@classmethod
|
|
201
218
|
def parse_css(cls, css: Optional[Any]):
|
|
@@ -458,13 +475,30 @@ class PyComponentDef(BaseModel):
|
|
|
458
475
|
func: Optional[Callable[..., Any]] = None
|
|
459
476
|
name: str
|
|
460
477
|
dynamic_kwargs: Optional[Mapping[str, AnyVariable]] = None
|
|
461
|
-
fallback: Optional[BaseFallback] = None
|
|
478
|
+
fallback: Optional[Union[BaseFallback, ComponentInstance]] = None
|
|
462
479
|
polling_interval: Optional[int] = None
|
|
463
480
|
render_component: Callable[..., Awaitable[Any]]
|
|
464
481
|
"""Handler to render the component. Defaults to dara.core.visual.dynamic_component.render_component"""
|
|
465
482
|
|
|
466
483
|
type: Literal[ComponentType.PY] = ComponentType.PY
|
|
467
484
|
|
|
485
|
+
@field_validator('fallback', mode='before')
|
|
486
|
+
@classmethod
|
|
487
|
+
def validate_fallback(cls, fallback):
|
|
488
|
+
if fallback is None:
|
|
489
|
+
return None
|
|
490
|
+
|
|
491
|
+
if isinstance(fallback, BaseFallback):
|
|
492
|
+
return fallback
|
|
493
|
+
|
|
494
|
+
# wrap custom component in fallback.custom
|
|
495
|
+
if isinstance(fallback, ComponentInstance):
|
|
496
|
+
from dara.core.visual.components.fallback import Fallback
|
|
497
|
+
|
|
498
|
+
return Fallback.Custom(component=fallback)
|
|
499
|
+
|
|
500
|
+
raise ValueError(f'fallback must be a BaseFallback or ComponentInstance, got {type(fallback)}')
|
|
501
|
+
|
|
468
502
|
|
|
469
503
|
# Helper type annotation for working with components
|
|
470
504
|
ComponentTypeAnnotation = Union[PyComponentDef, JsComponentDef]
|
dara/core/umd/dara.core.umd.js
CHANGED
|
@@ -54659,7 +54659,7 @@ Inferred class string: "${iconClasses}."`
|
|
|
54659
54659
|
return /* @__PURE__ */ React__default.default.createElement(Wrapper$2, { className: props.className, style: props.style }, /* @__PURE__ */ React__default.default.createElement(FlashingDots, { "data-testid": "LOADING" }));
|
|
54660
54660
|
}
|
|
54661
54661
|
const StyledDots$1 = injectCss(Dots);
|
|
54662
|
-
function DefaultFallback(props) {
|
|
54662
|
+
function DefaultFallback$1(props) {
|
|
54663
54663
|
const [style, css2] = useComponentStyles(props);
|
|
54664
54664
|
return /* @__PURE__ */ React__default.default.createElement(StyledDots$1, { $rawCss: css2, style });
|
|
54665
54665
|
}
|
|
@@ -54958,11 +54958,11 @@ Inferred class string: "${iconClasses}."`
|
|
|
54958
54958
|
}
|
|
54959
54959
|
);
|
|
54960
54960
|
}
|
|
54961
|
-
return isLoading ? /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null) : children;
|
|
54961
|
+
return isLoading ? /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null) : children;
|
|
54962
54962
|
}
|
|
54963
54963
|
function DynamicAuthComponent(props) {
|
|
54964
54964
|
const importers = React.useContext(importersCtx);
|
|
54965
|
-
const [component, setComponent] = React.useState(() => /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null));
|
|
54965
|
+
const [component, setComponent] = React.useState(() => /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null));
|
|
54966
54966
|
React.useEffect(() => {
|
|
54967
54967
|
const importer = importers[props.component.py_module];
|
|
54968
54968
|
if (!importer) {
|
|
@@ -54993,7 +54993,7 @@ Inferred class string: "${iconClasses}."`
|
|
|
54993
54993
|
setSessionToken(getToken());
|
|
54994
54994
|
}
|
|
54995
54995
|
if (isLoading) {
|
|
54996
|
-
return /* @__PURE__ */ React__default.default.createElement(Center, null, /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null));
|
|
54996
|
+
return /* @__PURE__ */ React__default.default.createElement(Center, null, /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null));
|
|
54997
54997
|
}
|
|
54998
54998
|
const { login, logout, ...extraRoutes } = authConfig.auth_components;
|
|
54999
54999
|
return /* @__PURE__ */ React__default.default.createElement(Switch$1, null, /* @__PURE__ */ React__default.default.createElement(Route, { path: "/login" }, /* @__PURE__ */ React__default.default.createElement(DynamicAuthComponent, { component: login })), /* @__PURE__ */ React__default.default.createElement(Route, { path: "/logout" }, /* @__PURE__ */ React__default.default.createElement(DynamicAuthComponent, { component: logout })), Object.entries(extraRoutes).map(([path, component]) => /* @__PURE__ */ React__default.default.createElement(Route, { key: path, path: `/${path}` }, /* @__PURE__ */ React__default.default.createElement(DynamicAuthComponent, { component }))), /* @__PURE__ */ React__default.default.createElement(Route, { component: ErrorPage, path: "/error" }), /* @__PURE__ */ React__default.default.createElement(Route, { path: "/", render: () => /* @__PURE__ */ React__default.default.createElement(PrivateRoute, null, props.children) }));
|
|
@@ -55293,7 +55293,7 @@ Inferred class string: "${iconClasses}."`
|
|
|
55293
55293
|
}
|
|
55294
55294
|
}, []);
|
|
55295
55295
|
if (isVerifyingToken) {
|
|
55296
|
-
return /* @__PURE__ */ React__default.default.createElement(Center, null, /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null));
|
|
55296
|
+
return /* @__PURE__ */ React__default.default.createElement(Center, null, /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null));
|
|
55297
55297
|
}
|
|
55298
55298
|
return /* @__PURE__ */ React__default.default.createElement(Wrapper$1, null, /* @__PURE__ */ React__default.default.createElement(Card, null, /* @__PURE__ */ React__default.default.createElement(FormWrapper, null, /* @__PURE__ */ React__default.default.createElement(
|
|
55299
55299
|
Form,
|
|
@@ -55373,7 +55373,7 @@ Inferred class string: "${iconClasses}."`
|
|
|
55373
55373
|
getNewToken();
|
|
55374
55374
|
}
|
|
55375
55375
|
}, []);
|
|
55376
|
-
return /* @__PURE__ */ React__default.default.createElement(Center, null, /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null));
|
|
55376
|
+
return /* @__PURE__ */ React__default.default.createElement(Center, null, /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null));
|
|
55377
55377
|
}
|
|
55378
55378
|
function isTaskResponse(response) {
|
|
55379
55379
|
return response && typeof response === "object" && "task_id" in response;
|
|
@@ -56145,7 +56145,7 @@ Inferred class string: "${iconClasses}."`
|
|
|
56145
56145
|
}
|
|
56146
56146
|
}
|
|
56147
56147
|
function getFallbackComponent(fallback, track_progress, variablesRef) {
|
|
56148
|
-
let fallbackComponent = /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null);
|
|
56148
|
+
let fallbackComponent = /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null);
|
|
56149
56149
|
if (fallback) {
|
|
56150
56150
|
fallbackComponent = /* @__PURE__ */ React__default.default.createElement(DynamicComponent, { component: fallback });
|
|
56151
56151
|
}
|
|
@@ -82563,6 +82563,9 @@ Inferred class string: "${iconClasses}."`
|
|
|
82563
82563
|
const [style, css2] = useComponentStyles(props);
|
|
82564
82564
|
return /* @__PURE__ */ React__default.default.createElement(StyledDots, { $rawCss: css2, style });
|
|
82565
82565
|
}
|
|
82566
|
+
function DefaultFallback(props) {
|
|
82567
|
+
return /* @__PURE__ */ React__default.default.createElement(DynamicComponent$1, { component: props.component });
|
|
82568
|
+
}
|
|
82566
82569
|
const createItemData = (items, renderer, markers, getItemKey) => ({
|
|
82567
82570
|
items,
|
|
82568
82571
|
renderer,
|
|
@@ -82612,6 +82615,12 @@ Inferred class string: "${iconClasses}."`
|
|
|
82612
82615
|
},
|
|
82613
82616
|
[props.virtualization, items]
|
|
82614
82617
|
);
|
|
82618
|
+
if (items.length === 0) {
|
|
82619
|
+
if (!props.placeholder) {
|
|
82620
|
+
return null;
|
|
82621
|
+
}
|
|
82622
|
+
return /* @__PURE__ */ React__namespace.createElement(DynamicComponent$1, { component: props.placeholder });
|
|
82623
|
+
}
|
|
82615
82624
|
if (props.virtualization === null) {
|
|
82616
82625
|
return /* @__PURE__ */ React__namespace.createElement(fallbackCtx.Provider, { value: { suspend: props.suspend } }, items.map((_, index2) => /* @__PURE__ */ React__namespace.createElement(ForChild, { key: getItemKey(index2, itemData), data: itemData, index: index2, style: {} })));
|
|
82617
82626
|
}
|
|
@@ -82640,10 +82649,11 @@ Inferred class string: "${iconClasses}."`
|
|
|
82640
82649
|
exports.Center = Center;
|
|
82641
82650
|
exports.ComponentType = ComponentType;
|
|
82642
82651
|
exports.ConditionOperator = ConditionOperator;
|
|
82652
|
+
exports.CustomFallback = DefaultFallback;
|
|
82643
82653
|
exports.DARA_JWT_TOKEN = DARA_JWT_TOKEN;
|
|
82644
82654
|
exports.DEFAULT_BUS = DEFAULT_BUS;
|
|
82645
82655
|
exports.DefaultAuthLogin = DefaultAuthLogin;
|
|
82646
|
-
exports.DefaultFallback = DefaultFallback;
|
|
82656
|
+
exports.DefaultFallback = DefaultFallback$1;
|
|
82647
82657
|
exports.DirectionCtx = directionCtx;
|
|
82648
82658
|
exports.DisplayCtx = displayCtx;
|
|
82649
82659
|
exports.DownloadVariable = DownloadVariable;
|
|
@@ -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, Union
|
|
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:
|
|
@@ -73,3 +74,28 @@ class Fallback:
|
|
|
73
74
|
"""
|
|
74
75
|
|
|
75
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
|
|
@@ -73,8 +73,8 @@ def py_component(function: Callable) -> Callable[..., PyComponentInstance]: ...
|
|
|
73
73
|
def py_component(
|
|
74
74
|
function: None = None,
|
|
75
75
|
*,
|
|
76
|
-
placeholder: Optional[BaseFallback] = None,
|
|
77
|
-
fallback: Optional[BaseFallback] = None,
|
|
76
|
+
placeholder: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
77
|
+
fallback: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
78
78
|
track_progress: Optional[bool] = False,
|
|
79
79
|
polling_interval: Optional[int] = None,
|
|
80
80
|
) -> Callable[[Callable], Callable[..., PyComponentInstance]]: ...
|
|
@@ -83,8 +83,8 @@ def py_component(
|
|
|
83
83
|
def py_component(
|
|
84
84
|
function: Optional[Callable] = None,
|
|
85
85
|
*,
|
|
86
|
-
placeholder: Optional[BaseFallback] = None,
|
|
87
|
-
fallback: Optional[BaseFallback] = None,
|
|
86
|
+
placeholder: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
87
|
+
fallback: Optional[Union[BaseFallback, ComponentInstance]] = None,
|
|
88
88
|
track_progress: Optional[bool] = False,
|
|
89
89
|
polling_interval: Optional[int] = None,
|
|
90
90
|
) -> Union[Callable[..., PyComponentInstance], Callable[[Callable], Callable[..., PyComponentInstance]]]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dara-core
|
|
3
|
-
Version: 1.18.
|
|
3
|
+
Version: 1.18.4
|
|
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,<6.0.0)
|
|
|
21
21
|
Requires-Dist: certifi (>=2024.7.4)
|
|
22
22
|
Requires-Dist: click (==8.1.3)
|
|
23
23
|
Requires-Dist: colorama (>=0.4.6,<0.5.0)
|
|
24
|
-
Requires-Dist: create-dara-app (==1.18.
|
|
24
|
+
Requires-Dist: create-dara-app (==1.18.4)
|
|
25
25
|
Requires-Dist: croniter (>=1.0.15,<3.0.0)
|
|
26
26
|
Requires-Dist: cryptography (>=42.0.4)
|
|
27
|
-
Requires-Dist: dara-components (==1.18.
|
|
27
|
+
Requires-Dist: dara-components (==1.18.4) ; extra == "all"
|
|
28
28
|
Requires-Dist: exceptiongroup (>=1.1.3,<2.0.0)
|
|
29
29
|
Requires-Dist: fastapi (>=0.115.0,<0.116.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.18.
|
|
58
|
+
<img src="https://github.com/causalens/dara/blob/v1.18.4/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.18.
|
|
149
|
+
More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.18.4/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.18.
|
|
153
|
+
Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.18.4/LICENSE).
|
|
154
154
|
|
|
@@ -11,8 +11,8 @@ dara/core/cli.py,sha256=V__LAK3ozWGsVTEQHqvJwqSfpC3o6R76YGABJ-YVoSE,8185
|
|
|
11
11
|
dara/core/configuration.py,sha256=gi5AmdxyRSgegcNKFtnHshsMRz8fznswt60JlNZp-3s,22374
|
|
12
12
|
dara/core/css.py,sha256=UkNZ6n7RDBLsHmpZvn_a3K2nAwxVggQJbQMKNbgXONA,1753
|
|
13
13
|
dara/core/data_utils.py,sha256=cQpaNoXrvwkhXUozfIMJNdvy1lAayr-zZGH8duNCy5I,12630
|
|
14
|
-
dara/core/defaults.py,sha256=
|
|
15
|
-
dara/core/definitions.py,sha256=
|
|
14
|
+
dara/core/defaults.py,sha256=Sa7ZU4QvPndaJm-oXrVn9gRfkdUgFtsX8RkSRhf16JQ,4306
|
|
15
|
+
dara/core/definitions.py,sha256=Kq0RaUdc_SLWbqpv0URUbZSHbSFLx0LZ1v5oxGDUep8,18851
|
|
16
16
|
dara/core/http.py,sha256=-OzbCHlYSnfVnw2492C_UmaWOI5oSONfWk03eEGxSRI,4761
|
|
17
17
|
dara/core/interactivity/__init__.py,sha256=4gD69m5nRf6lefKdNx9K_fRJOqmsAwjALZqKiPtvutk,2415
|
|
18
18
|
dara/core/interactivity/actions.py,sha256=7CwHN2gmdzffQzggsWqWW7ppNfdJ0MGSChZiVP9-gbc,47973
|
|
@@ -83,13 +83,13 @@ dara/core/metrics/cache.py,sha256=c1PSst_oZZvuVzBXYWdpf8Sbb97u6q0HS2dlsEVLpQU,26
|
|
|
83
83
|
dara/core/metrics/runtime.py,sha256=YP-6Dz0GeI9_Yr7bUk_-OqShyFySGH_AKpDO126l6es,1833
|
|
84
84
|
dara/core/metrics/utils.py,sha256=inR1Ab5hmWZY2lsgGwLCQOEdyhCD9PumU52X2JbwlKY,2251
|
|
85
85
|
dara/core/persistence.py,sha256=qINdOxpyvlPGBB9Vy09TPWQnmk0ej4SzUx03AV1YbX0,18561
|
|
86
|
-
dara/core/umd/dara.core.umd.js,sha256=
|
|
86
|
+
dara/core/umd/dara.core.umd.js,sha256=zeryoG8N_4RfL89wMeNcRxwQeLf23fFXNUF_MdKDt4o,4731880
|
|
87
87
|
dara/core/umd/style.css,sha256=YQtQ4veiSktnyONl0CU1iU1kKfcQhreH4iASi1MP7Ak,4095007
|
|
88
88
|
dara/core/visual/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
|
|
89
89
|
dara/core/visual/components/__init__.py,sha256=wuGRk8bogiLWPOXAF-Fo4F6_L__0tBrI2p2SqgH2lnE,2385
|
|
90
90
|
dara/core/visual/components/dynamic_component.py,sha256=w7rxrM9ZTNvkHymkAto_s9UKg7EE8VrlpL9QdRe4sgY,692
|
|
91
|
-
dara/core/visual/components/fallback.py,sha256=
|
|
92
|
-
dara/core/visual/components/for_cmp.py,sha256=
|
|
91
|
+
dara/core/visual/components/fallback.py,sha256=cnuPcblmQ1gyzZHrwHtrD5C5Bo7-JXeiMO0KZ1ACbPM,4764
|
|
92
|
+
dara/core/visual/components/for_cmp.py,sha256=HykNfue2YzjZjWiWaJakLZmbdd_M7IfUi9kNhG2mLOE,6347
|
|
93
93
|
dara/core/visual/components/invalid_component.py,sha256=Q6O9rAwVUNZXjEmliAKLfWf2lsyYK5JhgQvMM6jVco8,901
|
|
94
94
|
dara/core/visual/components/menu.py,sha256=ied87GzIoZgmEINgX3WahBqofn-WK1PIBZAgMjR-Bxg,928
|
|
95
95
|
dara/core/visual/components/progress_tracker.py,sha256=5p_nEJf7RK2oPimXL4YhAN7v0Jcx2HHQzlLxPr7Co38,1705
|
|
@@ -100,15 +100,15 @@ dara/core/visual/components/topbar_frame.py,sha256=7L4Bi7Ba_gdfS6yoduXQ3k0-XQaNu
|
|
|
100
100
|
dara/core/visual/components/types.py,sha256=uH2IGufr4-I8cNbZgnEd3YbqoPFgyqG91rfNXZVG7a0,686
|
|
101
101
|
dara/core/visual/css/Property.py,sha256=XJzlMeASyrquhXmaQZvrsgin3xlVfm94dHRY9aJkhXk,43028
|
|
102
102
|
dara/core/visual/css/__init__.py,sha256=r2W1B5yRQhmxBRoRyldzOopaobb2sgkEh_mUjWUvtko,367328
|
|
103
|
-
dara/core/visual/dynamic_component.py,sha256=
|
|
103
|
+
dara/core/visual/dynamic_component.py,sha256=WzZoVRGaHVPUZ94D1-eihnCK1huEJh3T9eRUXtZ-4gg,13723
|
|
104
104
|
dara/core/visual/progress_updater.py,sha256=IdtWihnMYk8hqsHqDd0nzuuHeQu8wjnZT42s0oSq9ro,5895
|
|
105
105
|
dara/core/visual/template.py,sha256=y0KJU2913Q10y1TVMpTVnIxIoUsabzYfpUHEGuX2QyM,5707
|
|
106
106
|
dara/core/visual/themes/__init__.py,sha256=aM4mgoIYo2neBSw5FRzswsht7PUKjLthiHLmFIkyRKw,794
|
|
107
107
|
dara/core/visual/themes/dark.py,sha256=UQGDooOc8ric73eHs9E0ltYP4UCrwqQ3QxqN_fb4PwY,1942
|
|
108
108
|
dara/core/visual/themes/definitions.py,sha256=nS_gQvOzCt5hTmj74d0_siq_9QWuj6wNuir4VCHy0Dk,2779
|
|
109
109
|
dara/core/visual/themes/light.py,sha256=-Tviq8oEwGbdFULoDOqPuHO0UpAZGsBy8qFi0kAGolQ,1944
|
|
110
|
-
dara_core-1.18.
|
|
111
|
-
dara_core-1.18.
|
|
112
|
-
dara_core-1.18.
|
|
113
|
-
dara_core-1.18.
|
|
114
|
-
dara_core-1.18.
|
|
110
|
+
dara_core-1.18.4.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
|
|
111
|
+
dara_core-1.18.4.dist-info/METADATA,sha256=1WaQBIaUdrC_fYFqaGEvrDQ2VzmcGEx-fF8UxeQGuTs,7540
|
|
112
|
+
dara_core-1.18.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
113
|
+
dara_core-1.18.4.dist-info/entry_points.txt,sha256=H__D5sNIGuPIhVam0DChNL-To5k8Y7nY7TAFz9Mz6cc,139
|
|
114
|
+
dara_core-1.18.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|