arize-phoenix 0.0.32rc1__py3-none-any.whl → 0.0.33__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.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

Files changed (71) hide show
  1. {arize_phoenix-0.0.32rc1.dist-info → arize_phoenix-0.0.33.dist-info}/METADATA +11 -5
  2. {arize_phoenix-0.0.32rc1.dist-info → arize_phoenix-0.0.33.dist-info}/RECORD +69 -40
  3. phoenix/__init__.py +3 -1
  4. phoenix/config.py +23 -1
  5. phoenix/core/model_schema.py +14 -37
  6. phoenix/core/model_schema_adapter.py +0 -1
  7. phoenix/core/traces.py +285 -0
  8. phoenix/datasets/dataset.py +14 -21
  9. phoenix/datasets/errors.py +4 -1
  10. phoenix/datasets/schema.py +1 -1
  11. phoenix/datetime_utils.py +87 -0
  12. phoenix/experimental/callbacks/__init__.py +0 -0
  13. phoenix/experimental/callbacks/langchain_tracer.py +228 -0
  14. phoenix/experimental/callbacks/llama_index_trace_callback_handler.py +364 -0
  15. phoenix/experimental/evals/__init__.py +33 -0
  16. phoenix/experimental/evals/functions/__init__.py +4 -0
  17. phoenix/experimental/evals/functions/binary.py +156 -0
  18. phoenix/experimental/evals/functions/common.py +31 -0
  19. phoenix/experimental/evals/functions/generate.py +50 -0
  20. phoenix/experimental/evals/models/__init__.py +4 -0
  21. phoenix/experimental/evals/models/base.py +130 -0
  22. phoenix/experimental/evals/models/openai.py +128 -0
  23. phoenix/experimental/evals/retrievals.py +2 -2
  24. phoenix/experimental/evals/templates/__init__.py +24 -0
  25. phoenix/experimental/evals/templates/default_templates.py +126 -0
  26. phoenix/experimental/evals/templates/template.py +107 -0
  27. phoenix/experimental/evals/utils/__init__.py +0 -0
  28. phoenix/experimental/evals/utils/downloads.py +33 -0
  29. phoenix/experimental/evals/utils/threads.py +27 -0
  30. phoenix/experimental/evals/utils/types.py +9 -0
  31. phoenix/experimental/evals/utils.py +33 -0
  32. phoenix/metrics/binning.py +0 -1
  33. phoenix/metrics/timeseries.py +2 -3
  34. phoenix/server/api/context.py +2 -0
  35. phoenix/server/api/input_types/SpanSort.py +60 -0
  36. phoenix/server/api/schema.py +85 -4
  37. phoenix/server/api/types/DataQualityMetric.py +10 -1
  38. phoenix/server/api/types/Dataset.py +2 -4
  39. phoenix/server/api/types/DatasetInfo.py +10 -0
  40. phoenix/server/api/types/ExportEventsMutation.py +4 -1
  41. phoenix/server/api/types/Functionality.py +15 -0
  42. phoenix/server/api/types/MimeType.py +16 -0
  43. phoenix/server/api/types/Model.py +3 -5
  44. phoenix/server/api/types/SortDir.py +13 -0
  45. phoenix/server/api/types/Span.py +229 -0
  46. phoenix/server/api/types/TimeSeries.py +9 -2
  47. phoenix/server/api/types/pagination.py +2 -0
  48. phoenix/server/app.py +24 -4
  49. phoenix/server/main.py +60 -24
  50. phoenix/server/span_handler.py +39 -0
  51. phoenix/server/static/index.js +956 -479
  52. phoenix/server/thread_server.py +10 -2
  53. phoenix/services.py +39 -16
  54. phoenix/session/session.py +99 -27
  55. phoenix/trace/exporter.py +71 -0
  56. phoenix/trace/filter.py +181 -0
  57. phoenix/trace/fixtures.py +23 -8
  58. phoenix/trace/schemas.py +59 -6
  59. phoenix/trace/semantic_conventions.py +141 -1
  60. phoenix/trace/span_json_decoder.py +60 -6
  61. phoenix/trace/span_json_encoder.py +1 -9
  62. phoenix/trace/trace_dataset.py +100 -8
  63. phoenix/trace/tracer.py +26 -3
  64. phoenix/trace/v1/__init__.py +522 -0
  65. phoenix/trace/v1/trace_pb2.py +52 -0
  66. phoenix/trace/v1/trace_pb2.pyi +351 -0
  67. phoenix/core/dimension_data_type.py +0 -6
  68. phoenix/core/dimension_type.py +0 -9
  69. {arize_phoenix-0.0.32rc1.dist-info → arize_phoenix-0.0.33.dist-info}/WHEEL +0 -0
  70. {arize_phoenix-0.0.32rc1.dist-info → arize_phoenix-0.0.33.dist-info}/licenses/IP_NOTICE +0 -0
  71. {arize_phoenix-0.0.32rc1.dist-info → arize_phoenix-0.0.33.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,351 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import builtins
6
+ import collections.abc
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.containers
9
+ import google.protobuf.internal.enum_type_wrapper
10
+ import google.protobuf.message
11
+ import google.protobuf.struct_pb2
12
+ import google.protobuf.timestamp_pb2
13
+ import google.protobuf.wrappers_pb2
14
+ import sys
15
+ import typing
16
+
17
+ if sys.version_info >= (3, 10):
18
+ import typing as typing_extensions
19
+ else:
20
+ import typing_extensions
21
+
22
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
23
+
24
+ @typing_extensions.final
25
+ class Span(google.protobuf.message.Message):
26
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
27
+
28
+ @typing_extensions.final
29
+ class Context(google.protobuf.message.Message):
30
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
31
+
32
+ TRACE_ID_FIELD_NUMBER: builtins.int
33
+ SPAN_ID_FIELD_NUMBER: builtins.int
34
+ trace_id: builtins.bytes
35
+ span_id: builtins.bytes
36
+ def __init__(
37
+ self,
38
+ *,
39
+ trace_id: builtins.bytes = ...,
40
+ span_id: builtins.bytes = ...,
41
+ ) -> None: ...
42
+ def ClearField(self, field_name: typing_extensions.Literal["span_id", b"span_id", "trace_id", b"trace_id"]) -> None: ...
43
+
44
+ @typing_extensions.final
45
+ class Status(google.protobuf.message.Message):
46
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
47
+
48
+ class _Code:
49
+ ValueType = typing.NewType("ValueType", builtins.int)
50
+ V: typing_extensions.TypeAlias = ValueType
51
+
52
+ class _CodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Span.Status._Code.ValueType], builtins.type):
53
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
54
+ UNSET: Span.Status._Code.ValueType # 0
55
+ OK: Span.Status._Code.ValueType # 1
56
+ ERROR: Span.Status._Code.ValueType # 2
57
+
58
+ class Code(_Code, metaclass=_CodeEnumTypeWrapper): ...
59
+ UNSET: Span.Status.Code.ValueType # 0
60
+ OK: Span.Status.Code.ValueType # 1
61
+ ERROR: Span.Status.Code.ValueType # 2
62
+
63
+ CODE_FIELD_NUMBER: builtins.int
64
+ MESSAGE_FIELD_NUMBER: builtins.int
65
+ code: global___Span.Status.Code.ValueType
66
+ @property
67
+ def message(self) -> google.protobuf.wrappers_pb2.StringValue: ...
68
+ def __init__(
69
+ self,
70
+ *,
71
+ code: global___Span.Status.Code.ValueType = ...,
72
+ message: google.protobuf.wrappers_pb2.StringValue | None = ...,
73
+ ) -> None: ...
74
+ def HasField(self, field_name: typing_extensions.Literal["message", b"message"]) -> builtins.bool: ...
75
+ def ClearField(self, field_name: typing_extensions.Literal["code", b"code", "message", b"message"]) -> None: ...
76
+
77
+ @typing_extensions.final
78
+ class Event(google.protobuf.message.Message):
79
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
80
+
81
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
82
+ NAME_FIELD_NUMBER: builtins.int
83
+ TIMESTAMP_FIELD_NUMBER: builtins.int
84
+ @property
85
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
86
+ name: builtins.str
87
+ @property
88
+ def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
89
+ def __init__(
90
+ self,
91
+ *,
92
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
93
+ name: builtins.str = ...,
94
+ timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
95
+ ) -> None: ...
96
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "timestamp", b"timestamp"]) -> builtins.bool: ...
97
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "name", b"name", "timestamp", b"timestamp"]) -> None: ...
98
+
99
+ @typing_extensions.final
100
+ class Exception(google.protobuf.message.Message):
101
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
102
+
103
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
104
+ MESSAGE_FIELD_NUMBER: builtins.int
105
+ TYPE_FIELD_NUMBER: builtins.int
106
+ ESCAPED_FIELD_NUMBER: builtins.int
107
+ STACKTRACE_FIELD_NUMBER: builtins.int
108
+ TIMESTAMP_FIELD_NUMBER: builtins.int
109
+ @property
110
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
111
+ @property
112
+ def message(self) -> google.protobuf.wrappers_pb2.StringValue: ...
113
+ @property
114
+ def type(self) -> google.protobuf.wrappers_pb2.StringValue: ...
115
+ @property
116
+ def escaped(self) -> google.protobuf.wrappers_pb2.BoolValue: ...
117
+ @property
118
+ def stacktrace(self) -> google.protobuf.wrappers_pb2.StringValue: ...
119
+ @property
120
+ def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
121
+ def __init__(
122
+ self,
123
+ *,
124
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
125
+ message: google.protobuf.wrappers_pb2.StringValue | None = ...,
126
+ type: google.protobuf.wrappers_pb2.StringValue | None = ...,
127
+ escaped: google.protobuf.wrappers_pb2.BoolValue | None = ...,
128
+ stacktrace: google.protobuf.wrappers_pb2.StringValue | None = ...,
129
+ timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
130
+ ) -> None: ...
131
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "escaped", b"escaped", "message", b"message", "stacktrace", b"stacktrace", "timestamp", b"timestamp", "type", b"type"]) -> builtins.bool: ...
132
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "escaped", b"escaped", "message", b"message", "stacktrace", b"stacktrace", "timestamp", b"timestamp", "type", b"type"]) -> None: ...
133
+
134
+ @typing_extensions.final
135
+ class IOValue(google.protobuf.message.Message):
136
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
137
+
138
+ STRING_VALUE_FIELD_NUMBER: builtins.int
139
+ JSON_VALUE_FIELD_NUMBER: builtins.int
140
+ string_value: builtins.str
141
+ @property
142
+ def json_value(self) -> google.protobuf.struct_pb2.Struct: ...
143
+ def __init__(
144
+ self,
145
+ *,
146
+ string_value: builtins.str = ...,
147
+ json_value: google.protobuf.struct_pb2.Struct | None = ...,
148
+ ) -> None: ...
149
+ def HasField(self, field_name: typing_extensions.Literal["json_value", b"json_value", "kind", b"kind", "string_value", b"string_value"]) -> builtins.bool: ...
150
+ def ClearField(self, field_name: typing_extensions.Literal["json_value", b"json_value", "kind", b"kind", "string_value", b"string_value"]) -> None: ...
151
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["kind", b"kind"]) -> typing_extensions.Literal["string_value", "json_value"] | None: ...
152
+
153
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
154
+ CONTEXT_FIELD_NUMBER: builtins.int
155
+ PARENT_SPAN_ID_FIELD_NUMBER: builtins.int
156
+ NAME_FIELD_NUMBER: builtins.int
157
+ START_TIME_FIELD_NUMBER: builtins.int
158
+ END_TIME_FIELD_NUMBER: builtins.int
159
+ STATUS_FIELD_NUMBER: builtins.int
160
+ EVENTS_FIELD_NUMBER: builtins.int
161
+ EXCEPTIONS_FIELD_NUMBER: builtins.int
162
+ INPUT_FIELD_NUMBER: builtins.int
163
+ OUTPUT_FIELD_NUMBER: builtins.int
164
+ KIND_FIELD_NUMBER: builtins.int
165
+ RETRIEVAL_FIELD_NUMBER: builtins.int
166
+ EMBEDDING_FIELD_NUMBER: builtins.int
167
+ LLM_FIELD_NUMBER: builtins.int
168
+ TOOL_FIELD_NUMBER: builtins.int
169
+ @property
170
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
171
+ @property
172
+ def context(self) -> global___Span.Context: ...
173
+ @property
174
+ def parent_span_id(self) -> google.protobuf.wrappers_pb2.BytesValue: ...
175
+ name: builtins.str
176
+ @property
177
+ def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
178
+ @property
179
+ def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
180
+ @property
181
+ def status(self) -> global___Span.Status: ...
182
+ @property
183
+ def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Span.Event]: ...
184
+ @property
185
+ def exceptions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Span.Exception]: ...
186
+ @property
187
+ def input(self) -> global___Span.IOValue: ...
188
+ @property
189
+ def output(self) -> global___Span.IOValue: ...
190
+ kind: builtins.str
191
+ @property
192
+ def retrieval(self) -> global___Retrieval: ...
193
+ @property
194
+ def embedding(self) -> global___Embedding: ...
195
+ @property
196
+ def llm(self) -> global___LLM: ...
197
+ @property
198
+ def tool(self) -> global___Tool: ...
199
+ def __init__(
200
+ self,
201
+ *,
202
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
203
+ context: global___Span.Context | None = ...,
204
+ parent_span_id: google.protobuf.wrappers_pb2.BytesValue | None = ...,
205
+ name: builtins.str = ...,
206
+ start_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
207
+ end_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
208
+ status: global___Span.Status | None = ...,
209
+ events: collections.abc.Iterable[global___Span.Event] | None = ...,
210
+ exceptions: collections.abc.Iterable[global___Span.Exception] | None = ...,
211
+ input: global___Span.IOValue | None = ...,
212
+ output: global___Span.IOValue | None = ...,
213
+ kind: builtins.str = ...,
214
+ retrieval: global___Retrieval | None = ...,
215
+ embedding: global___Embedding | None = ...,
216
+ llm: global___LLM | None = ...,
217
+ tool: global___Tool | None = ...,
218
+ ) -> None: ...
219
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "context", b"context", "embedding", b"embedding", "end_time", b"end_time", "input", b"input", "llm", b"llm", "output", b"output", "parent_span_id", b"parent_span_id", "retrieval", b"retrieval", "start_time", b"start_time", "status", b"status", "tool", b"tool"]) -> builtins.bool: ...
220
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "context", b"context", "embedding", b"embedding", "end_time", b"end_time", "events", b"events", "exceptions", b"exceptions", "input", b"input", "kind", b"kind", "llm", b"llm", "name", b"name", "output", b"output", "parent_span_id", b"parent_span_id", "retrieval", b"retrieval", "start_time", b"start_time", "status", b"status", "tool", b"tool"]) -> None: ...
221
+
222
+ global___Span = Span
223
+
224
+ @typing_extensions.final
225
+ class Retrieval(google.protobuf.message.Message):
226
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
227
+
228
+ @typing_extensions.final
229
+ class Document(google.protobuf.message.Message):
230
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
231
+
232
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
233
+ ID_FIELD_NUMBER: builtins.int
234
+ SCORE_FIELD_NUMBER: builtins.int
235
+ CONTENT_FIELD_NUMBER: builtins.int
236
+ METADATA_FIELD_NUMBER: builtins.int
237
+ HASH_FIELD_NUMBER: builtins.int
238
+ @property
239
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
240
+ @property
241
+ def id(self) -> google.protobuf.wrappers_pb2.StringValue: ...
242
+ @property
243
+ def score(self) -> google.protobuf.wrappers_pb2.FloatValue: ...
244
+ @property
245
+ def content(self) -> google.protobuf.wrappers_pb2.StringValue: ...
246
+ @property
247
+ def metadata(self) -> google.protobuf.struct_pb2.Struct: ...
248
+ @property
249
+ def hash(self) -> google.protobuf.wrappers_pb2.BytesValue: ...
250
+ def __init__(
251
+ self,
252
+ *,
253
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
254
+ id: google.protobuf.wrappers_pb2.StringValue | None = ...,
255
+ score: google.protobuf.wrappers_pb2.FloatValue | None = ...,
256
+ content: google.protobuf.wrappers_pb2.StringValue | None = ...,
257
+ metadata: google.protobuf.struct_pb2.Struct | None = ...,
258
+ hash: google.protobuf.wrappers_pb2.BytesValue | None = ...,
259
+ ) -> None: ...
260
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "content", b"content", "hash", b"hash", "id", b"id", "metadata", b"metadata", "score", b"score"]) -> builtins.bool: ...
261
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "content", b"content", "hash", b"hash", "id", b"id", "metadata", b"metadata", "score", b"score"]) -> None: ...
262
+
263
+ DOCUMENTS_FIELD_NUMBER: builtins.int
264
+ @property
265
+ def documents(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Retrieval.Document]: ...
266
+ def __init__(
267
+ self,
268
+ *,
269
+ documents: collections.abc.Iterable[global___Retrieval.Document] | None = ...,
270
+ ) -> None: ...
271
+ def ClearField(self, field_name: typing_extensions.Literal["documents", b"documents"]) -> None: ...
272
+
273
+ global___Retrieval = Retrieval
274
+
275
+ @typing_extensions.final
276
+ class Embedding(google.protobuf.message.Message):
277
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
278
+
279
+ @typing_extensions.final
280
+ class Embedding(google.protobuf.message.Message):
281
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
282
+
283
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
284
+ VECTOR_FIELD_NUMBER: builtins.int
285
+ TEXT_FIELD_NUMBER: builtins.int
286
+ @property
287
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
288
+ @property
289
+ def vector(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
290
+ @property
291
+ def text(self) -> google.protobuf.wrappers_pb2.StringValue: ...
292
+ def __init__(
293
+ self,
294
+ *,
295
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
296
+ vector: collections.abc.Iterable[builtins.float] | None = ...,
297
+ text: google.protobuf.wrappers_pb2.StringValue | None = ...,
298
+ ) -> None: ...
299
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "text", b"text"]) -> builtins.bool: ...
300
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes", "text", b"text", "vector", b"vector"]) -> None: ...
301
+
302
+ EMBEDDINGS_FIELD_NUMBER: builtins.int
303
+ MODEL_NAME_FIELD_NUMBER: builtins.int
304
+ @property
305
+ def embeddings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Embedding.Embedding]: ...
306
+ @property
307
+ def model_name(self) -> google.protobuf.wrappers_pb2.StringValue: ...
308
+ def __init__(
309
+ self,
310
+ *,
311
+ embeddings: collections.abc.Iterable[global___Embedding.Embedding] | None = ...,
312
+ model_name: google.protobuf.wrappers_pb2.StringValue | None = ...,
313
+ ) -> None: ...
314
+ def HasField(self, field_name: typing_extensions.Literal["model_name", b"model_name"]) -> builtins.bool: ...
315
+ def ClearField(self, field_name: typing_extensions.Literal["embeddings", b"embeddings", "model_name", b"model_name"]) -> None: ...
316
+
317
+ global___Embedding = Embedding
318
+
319
+ @typing_extensions.final
320
+ class LLM(google.protobuf.message.Message):
321
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
322
+
323
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
324
+ @property
325
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
326
+ def __init__(
327
+ self,
328
+ *,
329
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
330
+ ) -> None: ...
331
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes"]) -> builtins.bool: ...
332
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes"]) -> None: ...
333
+
334
+ global___LLM = LLM
335
+
336
+ @typing_extensions.final
337
+ class Tool(google.protobuf.message.Message):
338
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
339
+
340
+ ATTRIBUTES_FIELD_NUMBER: builtins.int
341
+ @property
342
+ def attributes(self) -> google.protobuf.struct_pb2.Struct: ...
343
+ def __init__(
344
+ self,
345
+ *,
346
+ attributes: google.protobuf.struct_pb2.Struct | None = ...,
347
+ ) -> None: ...
348
+ def HasField(self, field_name: typing_extensions.Literal["attributes", b"attributes"]) -> builtins.bool: ...
349
+ def ClearField(self, field_name: typing_extensions.Literal["attributes", b"attributes"]) -> None: ...
350
+
351
+ global___Tool = Tool
@@ -1,6 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class DimensionDataType(Enum):
5
- CATEGORICAL = "categorical"
6
- NUMERIC = "numeric"
@@ -1,9 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class DimensionType(Enum):
5
- PREDICTION = "prediction"
6
- ACTUAL = "actual"
7
- FEATURE = "feature"
8
- TAG = "tag"
9
- EMBEDDING = "embedding"