optimizely-opal.opal-tools-sdk 0.1.25.dev0__tar.gz → 0.1.26.dev0__tar.gz

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 (22) hide show
  1. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/PKG-INFO +1 -1
  2. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/proteus.py +50 -33
  3. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/optimizely_opal.opal_tools_sdk.egg-info/PKG-INFO +1 -1
  4. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/pyproject.toml +1 -1
  5. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/setup.py +1 -1
  6. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/tests/test_integration.py +0 -2
  7. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/README.md +0 -0
  8. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/__init__.py +0 -0
  9. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/_registry.py +0 -0
  10. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/auth.py +0 -0
  11. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/decorators.py +0 -0
  12. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/logging.py +0 -0
  13. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/models.py +0 -0
  14. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/service.py +0 -0
  15. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/opal_tools_sdk/ui.py +0 -0
  16. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/optimizely_opal.opal_tools_sdk.egg-info/SOURCES.txt +0 -0
  17. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/optimizely_opal.opal_tools_sdk.egg-info/dependency_links.txt +0 -0
  18. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/optimizely_opal.opal_tools_sdk.egg-info/requires.txt +0 -0
  19. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/optimizely_opal.opal_tools_sdk.egg-info/top_level.txt +0 -0
  20. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/setup.cfg +0 -0
  21. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/tests/test_nested_schema.py +0 -0
  22. {optimizely_opal_opal_tools_sdk-0.1.25.dev0 → optimizely_opal_opal_tools_sdk-0.1.26.dev0}/tests/test_proteus.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.25.dev0
3
+ Version: 0.1.26.dev0
4
4
  Summary: SDK for creating Opal-compatible tools services
5
5
  Home-page: https://github.com/optimizely/opal-tools-sdk
6
6
  Author: Optimizely
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: proteus-document-spec.json
3
- # timestamp: 2026-04-13T17:59:58+00:00
3
+ # timestamp: 2026-04-17T20:57:26+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -588,14 +588,29 @@ class ProteusBadge(BaseModel):
588
588
  z: SprinklePropZ | None = None
589
589
 
590
590
 
591
- class ProteusCancelAction(BaseModel):
591
+ class ProteusButton(BaseModel):
592
592
  model_config = ConfigDict(
593
593
  extra='forbid',
594
594
  )
595
- field_type: Literal['CancelAction'] = Field(default='CancelAction', alias='$type')
595
+ field_type: Literal['Button'] = Field(default='Button', alias='$type')
596
596
  alignItems: SprinklePropAlignItems | None = None
597
597
  alignSelf: SprinklePropAlignSelf | None = None
598
598
  animation: SprinklePropAnimation | None = None
599
+ appearance: (
600
+ Literal['default']
601
+ | Literal['danger']
602
+ | Literal['primary']
603
+ | Literal['subtle']
604
+ | Literal['danger-outline']
605
+ | Literal['default-opal']
606
+ | Literal['inverse']
607
+ | Literal['primary-opal']
608
+ | ProteusExpression
609
+ | None
610
+ ) = Field(
611
+ default=None,
612
+ description='Control the appearance by selecting between the different button types.',
613
+ )
599
614
  backgroundImage: SprinklePropBackgroundImage | None = None
600
615
  bg: SprinklePropBg | None = None
601
616
  border: SprinklePropBorder | None = None
@@ -648,11 +663,14 @@ class ProteusCancelAction(BaseModel):
648
663
  textAlign: SprinklePropTextAlign | None = None
649
664
  textTransform: SprinklePropTextTransform | None = None
650
665
  transition: SprinklePropTransition | None = None
666
+ type: Literal['button'] | Literal['reset'] | Literal['submit'] | ProteusExpression | None = (
667
+ Field(default=None, description='The default behavior of the button.')
668
+ )
651
669
  w: SprinklePropW | None = None
652
670
  whiteSpace: SprinklePropWhiteSpace | None = None
653
671
  z: SprinklePropZ | None = None
654
- placeholder: str | None = Field(
655
- default=None, description='Placeholder text for the text input field'
672
+ onClick: ProteusEventHandler | None = Field(
673
+ default=None, description='Action triggered when button is clicked'
656
674
  )
657
675
 
658
676
 
@@ -876,6 +894,9 @@ class ProteusChart(BaseModel):
876
894
  default=None,
877
895
  description='Chart data records, either inline, a ProteusExpression, or a ProteusZip transformation',
878
896
  )
897
+ layout: Literal['horizontal', 'vertical'] | None = Field(
898
+ default=None, description='Chart layout direction'
899
+ )
879
900
  series: list[Series] | None = Field(default=None, description='Data series configuration')
880
901
  type: Literal['bar', 'line'] | None = Field(default=None, description='Chart type')
881
902
  xAxisKey: str | None = Field(default=None, description='Key in data records for x-axis labels')
@@ -983,11 +1004,11 @@ class ProteusGroup(BaseModel):
983
1004
  )
984
1005
  field_type: Literal['Group'] = Field(default='Group', alias='$type')
985
1006
  alignItems: (
986
- Literal['normal']
987
- | Literal['stretch']
1007
+ Literal['stretch']
988
1008
  | Literal['center']
989
1009
  | Literal['end']
990
1010
  | Literal['start']
1011
+ | Literal['normal']
991
1012
  | ProteusExpression
992
1013
  | None
993
1014
  ) = Field(
@@ -1275,10 +1296,6 @@ class ProteusImageCarousel(BaseModel):
1275
1296
  extra='forbid',
1276
1297
  )
1277
1298
  field_type: Literal['ImageCarousel'] = Field(default='ImageCarousel', alias='$type')
1278
- downloadAll: ProteusExpression | str | None = Field(
1279
- default=None,
1280
- description='URL to download all images (e.g. as a zip file). Falls back to downloading each image individually.',
1281
- )
1282
1299
  images: list[Image] | ProteusExpression = Field(
1283
1300
  ..., description='Array of image data to display in the carousel'
1284
1301
  )
@@ -2149,7 +2166,7 @@ class ProteusElement(
2149
2166
  ProteusAction
2150
2167
  | ProteusAvatar
2151
2168
  | ProteusBadge
2152
- | ProteusCancelAction
2169
+ | ProteusButton
2153
2170
  | ProteusCard
2154
2171
  | ProteusCardHeader
2155
2172
  | ProteusCardLink
@@ -2184,7 +2201,7 @@ class ProteusElement(
2184
2201
  ProteusAction
2185
2202
  | ProteusAvatar
2186
2203
  | ProteusBadge
2187
- | ProteusCancelAction
2204
+ | ProteusButton
2188
2205
  | ProteusCard
2189
2206
  | ProteusCardHeader
2190
2207
  | ProteusCardLink
@@ -2221,40 +2238,40 @@ class ProteusElement(
2221
2238
 
2222
2239
  class SprinklePropAlignItems(
2223
2240
  RootModel[
2224
- Literal['normal']
2225
- | Literal['stretch']
2241
+ Literal['stretch']
2226
2242
  | Literal['center']
2227
2243
  | Literal['end']
2228
2244
  | Literal['start']
2245
+ | Literal['normal']
2229
2246
  | ProteusExpression
2230
2247
  ]
2231
2248
  ):
2232
2249
  root: (
2233
- Literal['normal']
2234
- | Literal['stretch']
2250
+ Literal['stretch']
2235
2251
  | Literal['center']
2236
2252
  | Literal['end']
2237
2253
  | Literal['start']
2254
+ | Literal['normal']
2238
2255
  | ProteusExpression
2239
2256
  ) = Field(..., description="Set the element's `align-items` CSS property")
2240
2257
 
2241
2258
 
2242
2259
  class SprinklePropAlignSelf(
2243
2260
  RootModel[
2244
- Literal['normal']
2245
- | Literal['stretch']
2261
+ Literal['stretch']
2246
2262
  | Literal['center']
2247
2263
  | Literal['end']
2248
2264
  | Literal['start']
2265
+ | Literal['normal']
2249
2266
  | ProteusExpression
2250
2267
  ]
2251
2268
  ):
2252
2269
  root: (
2253
- Literal['normal']
2254
- | Literal['stretch']
2270
+ Literal['stretch']
2255
2271
  | Literal['center']
2256
2272
  | Literal['end']
2257
2273
  | Literal['start']
2274
+ | Literal['normal']
2258
2275
  | ProteusExpression
2259
2276
  ) = Field(..., description="Set the element's `align-self` CSS property")
2260
2277
 
@@ -2531,9 +2548,9 @@ class SprinklePropColor(
2531
2548
 
2532
2549
 
2533
2550
  class SprinklePropCursor(
2534
- RootModel[Literal['default'] | Literal['pointer'] | Literal['text'] | ProteusExpression]
2551
+ RootModel[Literal['text'] | Literal['default'] | Literal['pointer'] | ProteusExpression]
2535
2552
  ):
2536
- root: Literal['default'] | Literal['pointer'] | Literal['text'] | ProteusExpression = Field(
2553
+ root: Literal['text'] | Literal['default'] | Literal['pointer'] | ProteusExpression = Field(
2537
2554
  ..., description="Set the element's `cursor` CSS property"
2538
2555
  )
2539
2556
 
@@ -2795,8 +2812,7 @@ class SprinklePropH(
2795
2812
 
2796
2813
  class SprinklePropJustifyContent(
2797
2814
  RootModel[
2798
- Literal['normal']
2799
- | Literal['space-around']
2815
+ Literal['space-around']
2800
2816
  | Literal['space-between']
2801
2817
  | Literal['space-evenly']
2802
2818
  | Literal['stretch']
@@ -2805,12 +2821,12 @@ class SprinklePropJustifyContent(
2805
2821
  | Literal['flex-end']
2806
2822
  | Literal['flex-start']
2807
2823
  | Literal['start']
2824
+ | Literal['normal']
2808
2825
  | ProteusExpression
2809
2826
  ]
2810
2827
  ):
2811
2828
  root: (
2812
- Literal['normal']
2813
- | Literal['space-around']
2829
+ Literal['space-around']
2814
2830
  | Literal['space-between']
2815
2831
  | Literal['space-evenly']
2816
2832
  | Literal['stretch']
@@ -2819,26 +2835,27 @@ class SprinklePropJustifyContent(
2819
2835
  | Literal['flex-end']
2820
2836
  | Literal['flex-start']
2821
2837
  | Literal['start']
2838
+ | Literal['normal']
2822
2839
  | ProteusExpression
2823
2840
  ) = Field(..., description="Set the element's `justify-content` CSS property")
2824
2841
 
2825
2842
 
2826
2843
  class SprinklePropJustifyItems(
2827
2844
  RootModel[
2828
- Literal['normal']
2829
- | Literal['stretch']
2845
+ Literal['stretch']
2830
2846
  | Literal['center']
2831
2847
  | Literal['end']
2832
2848
  | Literal['start']
2849
+ | Literal['normal']
2833
2850
  | ProteusExpression
2834
2851
  ]
2835
2852
  ):
2836
2853
  root: (
2837
- Literal['normal']
2838
- | Literal['stretch']
2854
+ Literal['stretch']
2839
2855
  | Literal['center']
2840
2856
  | Literal['end']
2841
2857
  | Literal['start']
2858
+ | Literal['normal']
2842
2859
  | ProteusExpression
2843
2860
  ) = Field(..., description="Set the element's `justify-items` CSS property")
2844
2861
 
@@ -3860,7 +3877,7 @@ ProteusZip.model_rebuild()
3860
3877
  ProteusAction.model_rebuild()
3861
3878
  ProteusAvatar.model_rebuild()
3862
3879
  ProteusBadge.model_rebuild()
3863
- ProteusCancelAction.model_rebuild()
3880
+ ProteusButton.model_rebuild()
3864
3881
  ProteusCard.model_rebuild()
3865
3882
  ProteusCardHeader.model_rebuild()
3866
3883
  ProteusCardLink.model_rebuild()
@@ -3904,7 +3921,7 @@ class UI:
3904
3921
  Action = ProteusAction
3905
3922
  Avatar = ProteusAvatar
3906
3923
  Badge = ProteusBadge
3907
- CancelAction = ProteusCancelAction
3924
+ Button = ProteusButton
3908
3925
  Card = ProteusCard
3909
3926
  CardHeader = ProteusCardHeader
3910
3927
  CardLink = ProteusCardLink
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.25.dev0
3
+ Version: 0.1.26.dev0
4
4
  Summary: SDK for creating Opal-compatible tools services
5
5
  Home-page: https://github.com/optimizely/opal-tools-sdk
6
6
  Author: Optimizely
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "optimizely-opal.opal-tools-sdk"
7
- version = "0.1.25-dev"
7
+ version = "0.1.26-dev"
8
8
  description = "SDK for creating Opal-compatible tools services"
9
9
  authors = [{ name = "Optimizely", email = "opal-team@optimizely.com" }]
10
10
  readme = "README.md"
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="optimizely-opal.opal-tools-sdk",
5
- version="0.1.25-dev",
5
+ version="0.1.26-dev",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "fastapi>=0.100.0",
@@ -303,7 +303,6 @@ def test_resource_with_proteus_document_return():
303
303
  ],
304
304
  actions=[
305
305
  UI.Action(children="Save", appearance="primary"),
306
- UI.CancelAction(children="Cancel"),
307
306
  ],
308
307
  )
309
308
 
@@ -331,7 +330,6 @@ def test_resource_with_proteus_document_return():
331
330
  assert parsed_doc["body"][1]["label"] == "Item Name"
332
331
  assert len(parsed_doc["actions"]) == 2
333
332
  assert parsed_doc["actions"][0]["$type"] == "Action"
334
- assert parsed_doc["actions"][1]["$type"] == "CancelAction"
335
333
 
336
334
 
337
335
  def test_resource_with_proteus_document_and_explicit_mime_type():