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.
Files changed (82) hide show
  1. dara/core/__init__.py +0 -3
  2. dara/core/actions.py +2 -1
  3. dara/core/auth/basic.py +16 -22
  4. dara/core/auth/definitions.py +2 -2
  5. dara/core/auth/routes.py +5 -5
  6. dara/core/auth/utils.py +5 -5
  7. dara/core/base_definitions.py +64 -22
  8. dara/core/cli.py +7 -8
  9. dara/core/configuration.py +2 -5
  10. dara/core/css.py +2 -1
  11. dara/core/data_utils.py +19 -18
  12. dara/core/defaults.py +7 -6
  13. dara/core/definitions.py +19 -50
  14. dara/core/http.py +3 -7
  15. dara/core/interactivity/__init__.py +0 -6
  16. dara/core/interactivity/actions.py +50 -52
  17. dara/core/interactivity/any_data_variable.py +134 -7
  18. dara/core/interactivity/any_variable.py +8 -5
  19. dara/core/interactivity/data_variable.py +266 -8
  20. dara/core/interactivity/derived_data_variable.py +290 -7
  21. dara/core/interactivity/derived_variable.py +176 -416
  22. dara/core/interactivity/filtering.py +27 -46
  23. dara/core/interactivity/loop_variable.py +2 -2
  24. dara/core/interactivity/non_data_variable.py +68 -5
  25. dara/core/interactivity/plain_variable.py +15 -89
  26. dara/core/interactivity/switch_variable.py +19 -19
  27. dara/core/interactivity/url_variable.py +90 -10
  28. dara/core/internal/cache_store/base_impl.py +1 -2
  29. dara/core/internal/cache_store/cache_store.py +25 -22
  30. dara/core/internal/cache_store/keep_all.py +1 -4
  31. dara/core/internal/cache_store/lru.py +1 -5
  32. dara/core/internal/cache_store/ttl.py +1 -4
  33. dara/core/internal/cgroup.py +1 -1
  34. dara/core/internal/dependency_resolution.py +66 -60
  35. dara/core/internal/devtools.py +5 -12
  36. dara/core/internal/download.py +4 -13
  37. dara/core/internal/encoder_registry.py +7 -7
  38. dara/core/internal/execute_action.py +13 -13
  39. dara/core/internal/hashing.py +3 -1
  40. dara/core/internal/import_discovery.py +4 -3
  41. dara/core/internal/normalization.py +18 -9
  42. dara/core/internal/pandas_utils.py +5 -107
  43. dara/core/internal/pool/definitions.py +1 -1
  44. dara/core/internal/pool/task_pool.py +16 -25
  45. dara/core/internal/pool/utils.py +18 -21
  46. dara/core/internal/pool/worker.py +2 -3
  47. dara/core/internal/port_utils.py +1 -1
  48. dara/core/internal/registries.py +6 -12
  49. dara/core/internal/registry.py +2 -4
  50. dara/core/internal/registry_lookup.py +5 -11
  51. dara/core/internal/routing.py +145 -109
  52. dara/core/internal/scheduler.py +8 -13
  53. dara/core/internal/settings.py +2 -2
  54. dara/core/internal/store.py +29 -2
  55. dara/core/internal/tasks.py +195 -379
  56. dara/core/internal/utils.py +13 -36
  57. dara/core/internal/websocket.py +20 -21
  58. dara/core/js_tooling/js_utils.py +26 -28
  59. dara/core/js_tooling/templates/vite.config.template.ts +3 -12
  60. dara/core/logging.py +12 -13
  61. dara/core/main.py +11 -14
  62. dara/core/metrics/cache.py +1 -1
  63. dara/core/metrics/utils.py +3 -3
  64. dara/core/persistence.py +5 -27
  65. dara/core/umd/dara.core.umd.js +55428 -59098
  66. dara/core/visual/components/__init__.py +2 -2
  67. dara/core/visual/components/fallback.py +4 -30
  68. dara/core/visual/components/for_cmp.py +1 -4
  69. dara/core/visual/css/__init__.py +31 -30
  70. dara/core/visual/dynamic_component.py +28 -31
  71. dara/core/visual/progress_updater.py +3 -4
  72. {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.dist-info}/METADATA +11 -12
  73. dara_core-1.20.1a1.dist-info/RECORD +114 -0
  74. dara/core/interactivity/client_variable.py +0 -71
  75. dara/core/interactivity/server_variable.py +0 -325
  76. dara/core/interactivity/state_variable.py +0 -69
  77. dara/core/interactivity/tabular_variable.py +0 -94
  78. dara/core/internal/multi_resource_lock.py +0 -70
  79. dara_core-1.20.0.dist-info/RECORD +0 -119
  80. {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.dist-info}/LICENSE +0 -0
  81. {dara_core-1.20.0.dist-info → dara_core-1.20.1a1.dist-info}/WHEEL +0 -0
  82. {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 # noqa: F401
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 # noqa: F401
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, Optional, Union # noqa: F401
18
+ from typing import ClassVar
19
19
 
20
- from dara.core.definitions import BaseFallback, ComponentInstance, JsComponentDef, StyledComponentInstance # noqa: F401
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[Union[str, None]] = 'DefaultFallback'
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[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
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
@@ -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['-moz-initial', 'inherit', 'initial', 'paused', 'revert', 'running', 'unset', None] = (
386
- Field(
387
- default=None,
388
- description='The **`animation-play-state`** CSS property sets whether an animation is running or paused.\n\n**Syntax**: `<single-animation-play-state>#`\n\n**Initial value**: `running`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :-----: | :-----: | :-----: | :----: | :----: |\n| **43** | **16** | **9** | **12** | **10** |\n| 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |',
389
- )
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['-moz-initial', 'dark', 'inherit', 'initial', 'light', 'normal', 'revert', 'unset', None] = (
3510
- Field(
3511
- default=None,
3512
- description='The **`color-scheme`** CSS property allows an element to indicate which color schemes it can comfortably be rendered in.\n\n**Syntax**: `normal | [ light | dark | <custom-ident> ]+`\n\n**Initial value**: `normal`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :-: |\n| **81** | No | **13** | **81** | No |',
3513
- )
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['-moz-initial', 'inherit', 'initial', 'italic', 'normal', 'oblique', 'revert', 'unset', None] = (
4425
- Field(
4426
- default=None,
4427
- description='The **`font-style`** CSS property sets whether a font should be styled with a normal, italic, or oblique face from its `font-family`.\n\n**Syntax**: `normal | italic | oblique <angle>?`\n\n**Initial value**: `normal`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :---: |\n| **1** | **1** | **1** | **12** | **4** |',
4428
- )
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['-moz-initial', 'column', 'dense', 'inherit', 'initial', 'revert', 'row', 'unset', None] = (
4589
- Field(
4590
- default=None,
4591
- description='The **`grid-auto-flow`** CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.\n\n**Syntax**: `[ row | column ] || dense`\n\n**Initial value**: `row`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :------: | :----: | :-: |\n| **57** | **52** | **10.1** | **16** | No |',
4592
- )
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['-moz-initial', 'flip', 'from-image', 'inherit', 'initial', 'revert', 'unset', None] = (
4665
- Field(
4666
- default=None,
4667
- description='The **`image-orientation`** CSS property specifies a layout-independent correction to the orientation of an image. It should _not_ be used for any other orientation adjustments; instead, the `transform` property should be used with the `rotate` `<transform-function>`.\n\n**Syntax**: `from-image | <angle> | [ <angle>? flip ]`\n\n**Initial value**: `from-image`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :------: | :----: | :-: |\n| **81** | **26** | **13.1** | **81** | No |',
4668
- )
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['-moz-initial', 'inherit', 'initial', 'inside', 'none', 'outside', 'revert', 'unset', None] = (
5027
- Field(
5028
- default=None,
5029
- description="The **`list-style`** CSS shorthand property allows you set all the list style properties at once.\n\n**Syntax**: `<'list-style-type'> || <'list-style-position'> || <'list-style-image'>`\n\n| Chrome | Firefox | Safari | Edge | IE |\n| :----: | :-----: | :----: | :----: | :---: |\n| **1** | **1** | **1** | **12** | **4** |",
5030
- )
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 AnyVariable
42
- from dara.core.interactivity.state_variable import StateVariable
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[Union[BaseFallback, ComponentInstance]] = None,
73
- fallback: Optional[Union[BaseFallback, ComponentInstance]] = None,
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[Union[BaseFallback, ComponentInstance]] = None,
83
- fallback: Optional[Union[BaseFallback, ComponentInstance]] = None,
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
- # The type is either not set or something tricky to verify, e.g. union
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[typ, AnyVariable]
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 # type: ignore
213
- return _inner_func # type: ignore
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
- async def _resolve_kwarg(val: Any, key: str):
254
- val = await resolve_dependency(val, store, task_mgr)
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
- async with anyio.create_task_group() as tg:
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( # type: ignore
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 # type: ignore
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.0
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.0)
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.0) ; extra == "all"
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.0/img/dara_light.svg?raw=true">
57
+ <img src="https://github.com/causalens/dara/blob/v1.20.1-alpha.1/img/dara_light.svg?raw=true">
59
58
 
60
59
  ![Master tests](https://github.com/causalens/dara/actions/workflows/tests.yml/badge.svg?branch=master)
61
60
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](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
- ![Dara App](https://github.com/causalens/dara/blob/v1.20.0/img/components_gallery.png?raw=true)
102
+ ![Dara App](https://github.com/causalens/dara/blob/v1.20.1-alpha.1/img/components_gallery.png?raw=true)
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
- | ![Large Language Model](https://github.com/causalens/dara/blob/v1.20.0/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.20.0/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.20.0/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. |
119
+ | ![Large Language Model](https://github.com/causalens/dara/blob/v1.20.1-alpha.1/img/llm.png?raw=true) | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
120
+ | ![Plot Interactivity](https://github.com/causalens/dara/blob/v1.20.1-alpha.1/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 |
121
+ | ![Graph Editor](https://github.com/causalens/dara/blob/v1.20.1-alpha.1/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
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.0/CONTRIBUTING.md) file.
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.0/LICENSE).
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,,