uncertainty-engine-types 0.15.0__tar.gz → 0.16.0__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 (30) hide show
  1. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/PKG-INFO +1 -1
  2. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/pyproject.toml +1 -1
  3. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/__init__.py +2 -0
  4. uncertainty_engine_types-0.16.0/uncertainty_engine_types/tool_metadata.py +41 -0
  5. uncertainty_engine_types-0.16.0/uncertainty_engine_types/version.py +1 -0
  6. uncertainty_engine_types-0.15.0/uncertainty_engine_types/version.py +0 -1
  7. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/README.md +0 -0
  8. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/chat_history.py +0 -0
  9. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/context.py +0 -0
  10. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/dataset.py +0 -0
  11. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/embeddings.py +0 -0
  12. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/execution_error.py +0 -0
  13. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/file.py +0 -0
  14. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/graph.py +0 -0
  15. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/handle.py +0 -0
  16. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/id.py +0 -0
  17. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/job.py +0 -0
  18. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/llm.py +0 -0
  19. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/message.py +0 -0
  20. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/model.py +0 -0
  21. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/model_config.py +0 -0
  22. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/node_info.py +0 -0
  23. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/prompt.py +0 -0
  24. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/run_workflow.py +0 -0
  25. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/sensor_designer.py +0 -0
  26. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/sql.py +0 -0
  27. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/token.py +0 -0
  28. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/uncertainty_plot.py +0 -0
  29. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/utils.py +0 -0
  30. {uncertainty_engine_types-0.15.0 → uncertainty_engine_types-0.16.0}/uncertainty_engine_types/vector_store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: uncertainty-engine-types
3
- Version: 0.15.0
3
+ Version: 0.16.0
4
4
  Summary: Common type definitions for the Uncertainty Engine
5
5
  Author: Freddy Wordingham
6
6
  Author-email: freddy@digilab.ai
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uncertainty-engine-types"
3
- version = "0.15.0"
3
+ version = "0.16.0"
4
4
  description = "Common type definitions for the Uncertainty Engine"
5
5
  authors = [
6
6
  { name = "Freddy Wordingham", email = "freddy@digilab.ai" },
@@ -50,6 +50,7 @@ from uncertainty_engine_types.run_workflow import (
50
50
  from uncertainty_engine_types.sensor_designer import SensorDesigner
51
51
  from uncertainty_engine_types.sql import SQLConfig, SQLKind
52
52
  from uncertainty_engine_types.token import Token
53
+ from uncertainty_engine_types.tool_metadata import ToolMetadata
53
54
  from uncertainty_engine_types.uncertainty_plot import UncertaintyPlot
54
55
  from uncertainty_engine_types.vector_store import VectorStoreConfig, VectorStoreProvider
55
56
  from uncertainty_engine_types.version import __version__
@@ -105,4 +106,5 @@ __all__ = [
105
106
  "OverrideWorkflowInput",
106
107
  "OverrideWorkflowOutput",
107
108
  "RunWorkflowRequest",
109
+ "ToolMetadata",
108
110
  ]
@@ -0,0 +1,41 @@
1
+ from pydantic import BaseModel, Field
2
+
3
+ from uncertainty_engine_types import NodeInputInfo, NodeOutputInfo
4
+
5
+ NodeId = str
6
+ """Unique ID of a Uncertainty Engine node. Eg `label` field in the SDK"""
7
+ HandleLabel = str
8
+ """Unique ID of a handle to a given node. Eg `input_variance`"""
9
+
10
+
11
+ class ToolMetadata(BaseModel):
12
+ """Tool metadata."""
13
+
14
+ inputs: dict[NodeId, dict[HandleLabel, NodeInputInfo]] = Field(default_factory=dict)
15
+ """Defines which inputs on a workflow can be used as Tool Inputs"""
16
+ outputs: dict[NodeId, dict[HandleLabel, NodeOutputInfo]] = Field(
17
+ default_factory=dict
18
+ )
19
+ """Defines which outputs on a workflow can be used as Tool outputs"""
20
+
21
+ def is_empty(self) -> bool:
22
+ """Check if the metadata is completely empty"""
23
+ return not self.inputs and not self.outputs
24
+
25
+ def has_partial_data(self) -> bool:
26
+ """Check if only inputs or only outputs are defined"""
27
+ return bool(self.inputs) != bool(self.outputs)
28
+
29
+ def validate_complete(self) -> None:
30
+ """
31
+ Validate that tool metadata is complete (has both inputs and outputs).
32
+
33
+ Raises:
34
+ ValueError: If metadata has only inputs or only outputs
35
+ """
36
+ if self.has_partial_data():
37
+ raise ValueError(
38
+ "Tool metadata must have both inputs AND outputs defined. "
39
+ f"Currently has: inputs={'yes' if self.inputs else 'no'}, "
40
+ f"outputs={'yes' if self.outputs else 'no'}"
41
+ )
@@ -0,0 +1 @@
1
+ __version__ = "0.16.0"
@@ -1 +0,0 @@
1
- __version__ = "0.15.0"