optimizely-opal.opal-tools-sdk 0.1.14.dev0__tar.gz → 0.1.15.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 (21) hide show
  1. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/PKG-INFO +1 -1
  2. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/proteus.py +205 -69
  3. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/optimizely_opal.opal_tools_sdk.egg-info/PKG-INFO +1 -1
  4. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/pyproject.toml +1 -1
  5. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/setup.py +1 -1
  6. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/README.md +0 -0
  7. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/__init__.py +0 -0
  8. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/_registry.py +0 -0
  9. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/auth.py +0 -0
  10. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/decorators.py +0 -0
  11. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/logging.py +0 -0
  12. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/models.py +0 -0
  13. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/service.py +0 -0
  14. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/opal_tools_sdk/ui.py +0 -0
  15. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/optimizely_opal.opal_tools_sdk.egg-info/SOURCES.txt +0 -0
  16. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/optimizely_opal.opal_tools_sdk.egg-info/dependency_links.txt +0 -0
  17. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/optimizely_opal.opal_tools_sdk.egg-info/requires.txt +0 -0
  18. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/optimizely_opal.opal_tools_sdk.egg-info/top_level.txt +0 -0
  19. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/setup.cfg +0 -0
  20. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.dev0}/tests/test_integration.py +0 -0
  21. {optimizely_opal_opal_tools_sdk-0.1.14.dev0 → optimizely_opal_opal_tools_sdk-0.1.15.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.14.dev0
3
+ Version: 0.1.15.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-02-27T20:32:36+00:00
3
+ # timestamp: 2026-03-04T20:04:07+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1058,70 +1058,25 @@ class ProteusEventHandler(RootModel[ProteusEventHandler1 | ProteusEventHandler2]
1058
1058
  )
1059
1059
 
1060
1060
 
1061
- class ProteusImage(BaseModel):
1061
+ class Series(BaseModel):
1062
1062
  model_config = ConfigDict(
1063
1063
  extra='forbid',
1064
1064
  )
1065
- field_type: Literal['Image'] = Field(default='Image', alias='$type')
1066
- alignItems: SprinklePropAlignItems | None = None
1067
- alignSelf: SprinklePropAlignSelf | None = None
1068
- animation: SprinklePropAnimation | None = None
1069
- backgroundImage: SprinklePropBackgroundImage | None = None
1070
- bg: SprinklePropBg | None = None
1071
- border: SprinklePropBorder | None = None
1072
- borderB: SprinklePropBorderB | None = None
1073
- borderColor: SprinklePropBorderColor | None = None
1074
- borderL: SprinklePropBorderL | None = None
1075
- borderR: SprinklePropBorderR | None = None
1076
- borderT: SprinklePropBorderT | None = None
1077
- color: SprinklePropColor | None = None
1078
- cursor: SprinklePropCursor | None = None
1079
- display: SprinklePropDisplay | None = None
1080
- flex: SprinklePropFlex | None = None
1081
- flexDirection: SprinklePropFlexDirection | None = None
1082
- flexWrap: SprinklePropFlexWrap | None = None
1083
- fontFamily: SprinklePropFontFamily | None = None
1084
- fontSize: SprinklePropFontSize | None = None
1085
- fontWeight: SprinklePropFontWeight | None = None
1086
- gap: SprinklePropGap | None = None
1087
- gridColumn: SprinklePropGridColumn | None = None
1088
- gridTemplateColumns: SprinklePropGridTemplateColumns | None = None
1089
- h: SprinklePropH | None = None
1090
- justifyContent: SprinklePropJustifyContent | None = None
1091
- justifyItems: SprinklePropJustifyItems | None = None
1092
- m: SprinklePropM | None = None
1093
- maxH: SprinklePropMaxH | None = None
1094
- maxW: SprinklePropMaxW | None = None
1095
- mb: SprinklePropMb | None = None
1096
- ml: SprinklePropMl | None = None
1097
- mr: SprinklePropMr | None = None
1098
- mt: SprinklePropMt | None = None
1099
- mx: SprinklePropMx | None = None
1100
- my: SprinklePropMy | None = None
1101
- objectFit: SprinklePropObjectFit | None = None
1102
- overflow: SprinklePropOverflow | None = None
1103
- overflowX: SprinklePropOverflowX | None = None
1104
- overflowY: SprinklePropOverflowY | None = None
1105
- p: SprinklePropP | None = None
1106
- pb: SprinklePropPb | None = None
1107
- pl: SprinklePropPl | None = None
1108
- placeItems: SprinklePropPlaceItems | None = None
1109
- pointerEvents: SprinklePropPointerEvents | None = None
1110
- pr: SprinklePropPr | None = None
1111
- pt: SprinklePropPt | None = None
1112
- px: SprinklePropPx | None = None
1113
- py: SprinklePropPy | None = None
1114
- rounded: SprinklePropRounded | None = None
1115
- shadow: SprinklePropShadow | None = None
1116
- size: SprinklePropSize | None = None
1117
- textAlign: SprinklePropTextAlign | None = None
1118
- textTransform: SprinklePropTextTransform | None = None
1119
- transition: SprinklePropTransition | None = None
1120
- w: SprinklePropW | None = None
1121
- whiteSpace: SprinklePropWhiteSpace | None = None
1122
- z: SprinklePropZ | None = None
1123
- alt: str | None = Field(default=None, description='Alternative text for the image')
1124
- src: str | None = Field(default=None, description='The image source URL')
1065
+ color: str | None = Field(default=None, description='Series color')
1066
+ dataKey: str = Field(..., description='Key in data records for this series')
1067
+ labelKey: str | None = Field(
1068
+ default=None,
1069
+ description='Key in data records for pre-formatted labels displayed above bars',
1070
+ )
1071
+ name: str | None = Field(default=None, description='Display name for legend')
1072
+
1073
+
1074
+ class Column(BaseModel):
1075
+ model_config = ConfigDict(
1076
+ extra='forbid',
1077
+ )
1078
+ accessorKey: str = Field(..., description='Key in data objects')
1079
+ header: str = Field(..., description='Column header text')
1125
1080
 
1126
1081
 
1127
1082
  class ProteusMap(BaseModel):
@@ -1131,9 +1086,11 @@ class ProteusMap(BaseModel):
1131
1086
  field_type: Literal['Map'] = Field(default='Map', alias='$type')
1132
1087
  children: dict[str, Any] | None = Field(
1133
1088
  default=None,
1134
- description='Template object to render for each item in the array. Value paths are relative to current item.',
1089
+ description="Template object to render for each item in the array. Value paths inside this template are relative to the current item (e.g., path='title' resolves to each item's 'title' field). Use a leading '/' to reference top-level data (e.g., path='/title' resolves to the root data's 'title').",
1090
+ )
1091
+ path: str = Field(
1092
+ ..., description="JSON pointer path to the source array in the data (e.g., '/results')"
1135
1093
  )
1136
- path: str = Field(..., description="JSON pointer path to array (e.g., '/questions')")
1137
1094
 
1138
1095
 
1139
1096
  class Marks(BaseModel):
@@ -1428,7 +1385,8 @@ class ProteusValue(BaseModel):
1428
1385
  )
1429
1386
  field_type: Literal['Value'] = Field(default='Value', alias='$type')
1430
1387
  path: str = Field(
1431
- ..., description="JSON pointer path to value (e.g., '/question', '/options/0/label')"
1388
+ ...,
1389
+ description="Path to a value in the data. Absolute paths start with '/' and resolve from the root (e.g., '/title', '/options/0/label'). Inside a Map template, paths without a leading '/' are relative to the current item (e.g., 'title' resolves to each item's 'title' field).",
1432
1390
  )
1433
1391
 
1434
1392
 
@@ -1585,6 +1543,96 @@ class ProteusCondition(RootModel[ProteusAtomicCondition | ProteusCondition1]):
1585
1543
  )
1586
1544
 
1587
1545
 
1546
+ class ProteusChart(BaseModel):
1547
+ model_config = ConfigDict(
1548
+ extra='forbid',
1549
+ )
1550
+ field_type: Literal['Chart'] = Field(default='Chart', alias='$type')
1551
+ data: list[dict[str, Any]] | ProteusValue | None = Field(
1552
+ default=None, description='Chart data records, either inline or a ProteusValue reference'
1553
+ )
1554
+ series: list[Series] | None = Field(default=None, description='Data series configuration')
1555
+ type: Literal['bar'] = Field(default='bar', description='Chart type')
1556
+ xAxisKey: str | None = Field(default=None, description='Key in data records for x-axis labels')
1557
+
1558
+
1559
+ class ProteusDataTable(BaseModel):
1560
+ model_config = ConfigDict(
1561
+ extra='forbid',
1562
+ )
1563
+ field_type: Literal['DataTable'] = Field(default='DataTable', alias='$type')
1564
+ columns: list[Column] | None = Field(default=None, description='Column definitions')
1565
+ data: list[dict[str, Any]] | ProteusValue | None = None
1566
+
1567
+
1568
+ class ProteusImage(BaseModel):
1569
+ model_config = ConfigDict(
1570
+ extra='forbid',
1571
+ )
1572
+ field_type: Literal['Image'] = Field(default='Image', alias='$type')
1573
+ alignItems: SprinklePropAlignItems | None = None
1574
+ alignSelf: SprinklePropAlignSelf | None = None
1575
+ animation: SprinklePropAnimation | None = None
1576
+ backgroundImage: SprinklePropBackgroundImage | None = None
1577
+ bg: SprinklePropBg | None = None
1578
+ border: SprinklePropBorder | None = None
1579
+ borderB: SprinklePropBorderB | None = None
1580
+ borderColor: SprinklePropBorderColor | None = None
1581
+ borderL: SprinklePropBorderL | None = None
1582
+ borderR: SprinklePropBorderR | None = None
1583
+ borderT: SprinklePropBorderT | None = None
1584
+ color: SprinklePropColor | None = None
1585
+ cursor: SprinklePropCursor | None = None
1586
+ display: SprinklePropDisplay | None = None
1587
+ flex: SprinklePropFlex | None = None
1588
+ flexDirection: SprinklePropFlexDirection | None = None
1589
+ flexWrap: SprinklePropFlexWrap | None = None
1590
+ fontFamily: SprinklePropFontFamily | None = None
1591
+ fontSize: SprinklePropFontSize | None = None
1592
+ fontWeight: SprinklePropFontWeight | None = None
1593
+ gap: SprinklePropGap | None = None
1594
+ gridColumn: SprinklePropGridColumn | None = None
1595
+ gridTemplateColumns: SprinklePropGridTemplateColumns | None = None
1596
+ h: SprinklePropH | None = None
1597
+ justifyContent: SprinklePropJustifyContent | None = None
1598
+ justifyItems: SprinklePropJustifyItems | None = None
1599
+ m: SprinklePropM | None = None
1600
+ maxH: SprinklePropMaxH | None = None
1601
+ maxW: SprinklePropMaxW | None = None
1602
+ mb: SprinklePropMb | None = None
1603
+ ml: SprinklePropMl | None = None
1604
+ mr: SprinklePropMr | None = None
1605
+ mt: SprinklePropMt | None = None
1606
+ mx: SprinklePropMx | None = None
1607
+ my: SprinklePropMy | None = None
1608
+ objectFit: SprinklePropObjectFit | None = None
1609
+ overflow: SprinklePropOverflow | None = None
1610
+ overflowX: SprinklePropOverflowX | None = None
1611
+ overflowY: SprinklePropOverflowY | None = None
1612
+ p: SprinklePropP | None = None
1613
+ pb: SprinklePropPb | None = None
1614
+ pl: SprinklePropPl | None = None
1615
+ placeItems: SprinklePropPlaceItems | None = None
1616
+ pointerEvents: SprinklePropPointerEvents | None = None
1617
+ pr: SprinklePropPr | None = None
1618
+ pt: SprinklePropPt | None = None
1619
+ px: SprinklePropPx | None = None
1620
+ py: SprinklePropPy | None = None
1621
+ rounded: SprinklePropRounded | None = None
1622
+ shadow: SprinklePropShadow | None = None
1623
+ size: SprinklePropSize | None = None
1624
+ textAlign: SprinklePropTextAlign | None = None
1625
+ textTransform: SprinklePropTextTransform | None = None
1626
+ transition: SprinklePropTransition | None = None
1627
+ w: SprinklePropW | None = None
1628
+ whiteSpace: SprinklePropWhiteSpace | None = None
1629
+ z: SprinklePropZ | None = None
1630
+ alt: ProteusValue | str | None = Field(
1631
+ default=None, description='Alternative text for the image'
1632
+ )
1633
+ src: ProteusValue | str | None = Field(default=None, description='The image source URL')
1634
+
1635
+
1588
1636
  class ProteusDocument(BaseModel):
1589
1637
  model_config = ConfigDict(
1590
1638
  extra='forbid',
@@ -1594,19 +1642,20 @@ class ProteusDocument(BaseModel):
1594
1642
  default=None, description='Actions available for this document'
1595
1643
  )
1596
1644
  appIcon: str | None = Field(
1597
- default=None, description='A visual representation of the application'
1645
+ default=None,
1646
+ description="URL or data URI for the application icon (e.g., 'https://example.com/icon.png' or 'data:image/svg+xml,...'). Rendered as an <img> element.",
1598
1647
  )
1599
1648
  appName: str = Field(..., description='The official name of the application')
1600
1649
  blocking: bool | None = Field(
1601
1650
  default=None,
1602
1651
  description='If true, hides chat prompt and forces user interaction with document. User can press ESC or close to abandon.',
1603
1652
  )
1604
- body: ProteusNode | None
1605
- subtitle: str | None = Field(
1653
+ body: ProteusNode | None = Field(..., description='The main content of the document.')
1654
+ subtitle: ProteusNode | None = Field(
1606
1655
  default=None,
1607
1656
  description="A brief description or tagline that provides additional context about the Proteus document's purpose.",
1608
1657
  )
1609
- title: str = Field(
1658
+ title: ProteusNode | None = Field(
1610
1659
  ...,
1611
1660
  description="A concise heading that encapsulates the essence of the Proteus document's content or intended action.",
1612
1661
  )
@@ -1695,6 +1744,77 @@ class ProteusAction(BaseModel):
1695
1744
  )
1696
1745
 
1697
1746
 
1747
+ class ProteusBadge(BaseModel):
1748
+ model_config = ConfigDict(
1749
+ extra='forbid',
1750
+ )
1751
+ field_type: Literal['Badge'] = Field(default='Badge', alias='$type')
1752
+ alignItems: SprinklePropAlignItems | None = None
1753
+ alignSelf: SprinklePropAlignSelf | None = None
1754
+ animation: SprinklePropAnimation | None = None
1755
+ backgroundImage: SprinklePropBackgroundImage | None = None
1756
+ bg: SprinklePropBg | None = None
1757
+ border: SprinklePropBorder | None = None
1758
+ borderB: SprinklePropBorderB | None = None
1759
+ borderColor: SprinklePropBorderColor | None = None
1760
+ borderL: SprinklePropBorderL | None = None
1761
+ borderR: SprinklePropBorderR | None = None
1762
+ borderT: SprinklePropBorderT | None = None
1763
+ children: ProteusNode | None = None
1764
+ color: SprinklePropColor | None = None
1765
+ cursor: SprinklePropCursor | None = None
1766
+ display: SprinklePropDisplay | None = None
1767
+ flex: SprinklePropFlex | None = None
1768
+ flexDirection: SprinklePropFlexDirection | None = None
1769
+ flexWrap: SprinklePropFlexWrap | None = None
1770
+ fontFamily: SprinklePropFontFamily | None = None
1771
+ fontSize: SprinklePropFontSize | None = None
1772
+ fontWeight: SprinklePropFontWeight | None = None
1773
+ gap: SprinklePropGap | None = None
1774
+ gridColumn: SprinklePropGridColumn | None = None
1775
+ gridTemplateColumns: SprinklePropGridTemplateColumns | None = None
1776
+ h: SprinklePropH | None = None
1777
+ intent: Literal['information', 'success', 'warning', 'danger', 'neutral', 'primary'] | None = (
1778
+ Field(
1779
+ default=None,
1780
+ description='Control the appearance by selecting between the different badge types.',
1781
+ )
1782
+ )
1783
+ justifyContent: SprinklePropJustifyContent | None = None
1784
+ justifyItems: SprinklePropJustifyItems | None = None
1785
+ m: SprinklePropM | None = None
1786
+ maxH: SprinklePropMaxH | None = None
1787
+ maxW: SprinklePropMaxW | None = None
1788
+ mb: SprinklePropMb | None = None
1789
+ ml: SprinklePropMl | None = None
1790
+ mr: SprinklePropMr | None = None
1791
+ mt: SprinklePropMt | None = None
1792
+ mx: SprinklePropMx | None = None
1793
+ my: SprinklePropMy | None = None
1794
+ objectFit: SprinklePropObjectFit | None = None
1795
+ overflow: SprinklePropOverflow | None = None
1796
+ overflowX: SprinklePropOverflowX | None = None
1797
+ overflowY: SprinklePropOverflowY | None = None
1798
+ p: SprinklePropP | None = None
1799
+ pb: SprinklePropPb | None = None
1800
+ pl: SprinklePropPl | None = None
1801
+ placeItems: SprinklePropPlaceItems | None = None
1802
+ pointerEvents: SprinklePropPointerEvents | None = None
1803
+ pr: SprinklePropPr | None = None
1804
+ pt: SprinklePropPt | None = None
1805
+ px: SprinklePropPx | None = None
1806
+ py: SprinklePropPy | None = None
1807
+ rounded: SprinklePropRounded | None = None
1808
+ shadow: SprinklePropShadow | None = None
1809
+ size: SprinklePropSize | None = None
1810
+ textAlign: SprinklePropTextAlign | None = None
1811
+ textTransform: SprinklePropTextTransform | None = None
1812
+ transition: SprinklePropTransition | None = None
1813
+ w: SprinklePropW | None = None
1814
+ whiteSpace: SprinklePropWhiteSpace | None = None
1815
+ z: SprinklePropZ | None = None
1816
+
1817
+
1698
1818
  class ProteusCancelAction(BaseModel):
1699
1819
  model_config = ConfigDict(
1700
1820
  extra='forbid',
@@ -2265,6 +2385,9 @@ class ProteusText(BaseModel):
2265
2385
  h: SprinklePropH | None = None
2266
2386
  justifyContent: SprinklePropJustifyContent | None = None
2267
2387
  justifyItems: SprinklePropJustifyItems | None = None
2388
+ lineClamp: Literal['2', '4', '1', '3'] | None = Field(
2389
+ default=None, description='Truncate the text at specific number of lines.'
2390
+ )
2268
2391
  m: SprinklePropM | None = None
2269
2392
  maxH: SprinklePropMaxH | None = None
2270
2393
  maxW: SprinklePropMaxW | None = None
@@ -2293,6 +2416,9 @@ class ProteusText(BaseModel):
2293
2416
  textAlign: SprinklePropTextAlign | None = None
2294
2417
  textTransform: SprinklePropTextTransform | None = None
2295
2418
  transition: SprinklePropTransition | None = None
2419
+ truncate: bool | None = Field(
2420
+ default=None, description='Whether to truncate the text and add an ellipsis at the end.'
2421
+ )
2296
2422
  w: SprinklePropW | None = None
2297
2423
  whiteSpace: SprinklePropWhiteSpace | None = None
2298
2424
  z: SprinklePropZ | None = None
@@ -2301,7 +2427,10 @@ class ProteusText(BaseModel):
2301
2427
  class ProteusElement(
2302
2428
  RootModel[
2303
2429
  ProteusAction
2430
+ | ProteusBadge
2304
2431
  | ProteusCancelAction
2432
+ | ProteusChart
2433
+ | ProteusDataTable
2305
2434
  | ProteusField
2306
2435
  | ProteusGroup
2307
2436
  | ProteusHeading
@@ -2322,7 +2451,10 @@ class ProteusElement(
2322
2451
  ):
2323
2452
  root: (
2324
2453
  ProteusAction
2454
+ | ProteusBadge
2325
2455
  | ProteusCancelAction
2456
+ | ProteusChart
2457
+ | ProteusDataTable
2326
2458
  | ProteusField
2327
2459
  | ProteusGroup
2328
2460
  | ProteusHeading
@@ -2370,6 +2502,7 @@ class ProteusNode(
2370
2502
 
2371
2503
  ProteusDocument.model_rebuild()
2372
2504
  ProteusAction.model_rebuild()
2505
+ ProteusBadge.model_rebuild()
2373
2506
  ProteusCancelAction.model_rebuild()
2374
2507
  ProteusField.model_rebuild()
2375
2508
  ProteusGroup.model_rebuild()
@@ -2395,7 +2528,10 @@ class UI:
2395
2528
  MIME_TYPE = "application/vnd.opal.proteus+json"
2396
2529
 
2397
2530
  Action = ProteusAction
2531
+ Badge = ProteusBadge
2398
2532
  CancelAction = ProteusCancelAction
2533
+ Chart = ProteusChart
2534
+ DataTable = ProteusDataTable
2399
2535
  Document = ProteusDocument
2400
2536
  Field = ProteusField
2401
2537
  Group = ProteusGroup
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optimizely-opal.opal-tools-sdk
3
- Version: 0.1.14.dev0
3
+ Version: 0.1.15.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.14-dev"
7
+ version = "0.1.15-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.14-dev",
5
+ version="0.1.15-dev",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "fastapi>=0.100.0",