dara-core 1.18.2__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 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]
@@ -52783,7 +52783,11 @@ Inferred class string: "${iconClasses}."`
52783
52783
  Recoil_index_8({
52784
52784
  default: variable.default,
52785
52785
  effects: [
52786
- RecoilSync_index_6({ history: "push", itemKey: variable.query, refine: Refine_index_6(), syncDefault: true })
52786
+ RecoilSync_index_6({
52787
+ history: "push",
52788
+ itemKey: variable.query,
52789
+ refine: Refine_index_6()
52790
+ })
52787
52791
  ],
52788
52792
  key: variable.uid
52789
52793
  })
@@ -54655,7 +54659,7 @@ Inferred class string: "${iconClasses}."`
54655
54659
  return /* @__PURE__ */ React__default.default.createElement(Wrapper$2, { className: props.className, style: props.style }, /* @__PURE__ */ React__default.default.createElement(FlashingDots, { "data-testid": "LOADING" }));
54656
54660
  }
54657
54661
  const StyledDots$1 = injectCss(Dots);
54658
- function DefaultFallback(props) {
54662
+ function DefaultFallback$1(props) {
54659
54663
  const [style, css2] = useComponentStyles(props);
54660
54664
  return /* @__PURE__ */ React__default.default.createElement(StyledDots$1, { $rawCss: css2, style });
54661
54665
  }
@@ -54954,11 +54958,11 @@ Inferred class string: "${iconClasses}."`
54954
54958
  }
54955
54959
  );
54956
54960
  }
54957
- return isLoading ? /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null) : children;
54961
+ return isLoading ? /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null) : children;
54958
54962
  }
54959
54963
  function DynamicAuthComponent(props) {
54960
54964
  const importers = React.useContext(importersCtx);
54961
- 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));
54962
54966
  React.useEffect(() => {
54963
54967
  const importer = importers[props.component.py_module];
54964
54968
  if (!importer) {
@@ -54989,7 +54993,7 @@ Inferred class string: "${iconClasses}."`
54989
54993
  setSessionToken(getToken());
54990
54994
  }
54991
54995
  if (isLoading) {
54992
- 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));
54993
54997
  }
54994
54998
  const { login, logout, ...extraRoutes } = authConfig.auth_components;
54995
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) }));
@@ -55289,7 +55293,7 @@ Inferred class string: "${iconClasses}."`
55289
55293
  }
55290
55294
  }, []);
55291
55295
  if (isVerifyingToken) {
55292
- 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));
55293
55297
  }
55294
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(
55295
55299
  Form,
@@ -55369,7 +55373,7 @@ Inferred class string: "${iconClasses}."`
55369
55373
  getNewToken();
55370
55374
  }
55371
55375
  }, []);
55372
- 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));
55373
55377
  }
55374
55378
  function isTaskResponse(response) {
55375
55379
  return response && typeof response === "object" && "task_id" in response;
@@ -56141,7 +56145,7 @@ Inferred class string: "${iconClasses}."`
56141
56145
  }
56142
56146
  }
56143
56147
  function getFallbackComponent(fallback, track_progress, variablesRef) {
56144
- let fallbackComponent = /* @__PURE__ */ React__default.default.createElement(DefaultFallback, null);
56148
+ let fallbackComponent = /* @__PURE__ */ React__default.default.createElement(DefaultFallback$1, null);
56145
56149
  if (fallback) {
56146
56150
  fallbackComponent = /* @__PURE__ */ React__default.default.createElement(DynamicComponent, { component: fallback });
56147
56151
  }
@@ -82559,6 +82563,9 @@ Inferred class string: "${iconClasses}."`
82559
82563
  const [style, css2] = useComponentStyles(props);
82560
82564
  return /* @__PURE__ */ React__default.default.createElement(StyledDots, { $rawCss: css2, style });
82561
82565
  }
82566
+ function DefaultFallback(props) {
82567
+ return /* @__PURE__ */ React__default.default.createElement(DynamicComponent$1, { component: props.component });
82568
+ }
82562
82569
  const createItemData = (items, renderer, markers, getItemKey) => ({
82563
82570
  items,
82564
82571
  renderer,
@@ -82608,6 +82615,12 @@ Inferred class string: "${iconClasses}."`
82608
82615
  },
82609
82616
  [props.virtualization, items]
82610
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
+ }
82611
82624
  if (props.virtualization === null) {
82612
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: {} })));
82613
82626
  }
@@ -82636,10 +82649,11 @@ Inferred class string: "${iconClasses}."`
82636
82649
  exports.Center = Center;
82637
82650
  exports.ComponentType = ComponentType;
82638
82651
  exports.ConditionOperator = ConditionOperator;
82652
+ exports.CustomFallback = DefaultFallback;
82639
82653
  exports.DARA_JWT_TOKEN = DARA_JWT_TOKEN;
82640
82654
  exports.DEFAULT_BUS = DEFAULT_BUS;
82641
82655
  exports.DefaultAuthLogin = DefaultAuthLogin;
82642
- exports.DefaultFallback = DefaultFallback;
82656
+ exports.DefaultFallback = DefaultFallback$1;
82643
82657
  exports.DirectionCtx = directionCtx;
82644
82658
  exports.DisplayCtx = displayCtx;
82645
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.2
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.2)
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.2) ; extra == "all"
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.2/img/dara_light.svg?raw=true">
58
+ <img src="https://github.com/causalens/dara/blob/v1.18.4/img/dara_light.svg?raw=true">
59
59
 
60
60
  ![Master tests](https://github.com/causalens/dara/actions/workflows/tests.yml/badge.svg?branch=master)
61
61
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](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
- ![Dara App](https://github.com/causalens/dara/blob/v1.18.2/img/components_gallery.png?raw=true)
103
+ ![Dara App](https://github.com/causalens/dara/blob/v1.18.4/img/components_gallery.png?raw=true)
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
- | ![Large Language Model](https://github.com/causalens/dara/blob/v1.18.2/img/llm.png?raw=true) | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
121
- | ![Plot Interactivity](https://github.com/causalens/dara/blob/v1.18.2/img/plot_interactivity.png?raw=true) | 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
- | ![Graph Editor](https://github.com/causalens/dara/blob/v1.18.2/img/graph_viewer.png?raw=true) | 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. |
120
+ | ![Large Language Model](https://github.com/causalens/dara/blob/v1.18.4/img/llm.png?raw=true) | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
121
+ | ![Plot Interactivity](https://github.com/causalens/dara/blob/v1.18.4/img/plot_interactivity.png?raw=true) | 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
+ | ![Graph Editor](https://github.com/causalens/dara/blob/v1.18.4/img/graph_viewer.png?raw=true) | 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.2/CONTRIBUTING.md) file.
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.2/LICENSE).
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=gSJl-ISAXaO1Icf3XKh-vtByfnsEzM-qR5FUjmulBXQ,4175
15
- dara/core/definitions.py,sha256=m-X_zce1lVcWltkxdKVlHKUFu_XE6Mn07Af9DIUxtVk,17655
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=fBk-dRpmRI3MPqm2cnBsnVEbsgJOUoWFBac80kW8gvc,4731416
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=DcaHhbvxgVzAsn51DHLEXp_PLsc_2VjrJVVMDKuUzbo,3336
92
- dara/core/visual/components/for_cmp.py,sha256=jf1zgeg0FbpqFBtJQDPUyWIJBxcuMv25qJShEEshC58,6096
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=J1ReS4l0NTCOEaNOwIIi9936a7GRZ4bGIaDsM2YYvOs,13619
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.2.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
111
- dara_core-1.18.2.dist-info/METADATA,sha256=1Ksy6uciZkddxlgIWdL2wpAmlY-hWgri7-CnX8g1xJA,7540
112
- dara_core-1.18.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
113
- dara_core-1.18.2.dist-info/entry_points.txt,sha256=H__D5sNIGuPIhVam0DChNL-To5k8Y7nY7TAFz9Mz6cc,139
114
- dara_core-1.18.2.dist-info/RECORD,,
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,,