dyff-schema 0.37.2__tar.gz → 0.38.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.
Potentially problematic release.
This version of dyff-schema might be problematic. Click here for more details.
- {dyff_schema-0.37.2/dyff_schema.egg-info → dyff_schema-0.38.0}/PKG-INFO +1 -1
- dyff_schema-0.38.0/dyff/schema/_version.py +2 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/platform.py +49 -13
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/requests.py +12 -42
- {dyff_schema-0.37.2 → dyff_schema-0.38.0/dyff_schema.egg-info}/PKG-INFO +1 -1
- dyff_schema-0.37.2/dyff/schema/_version.py +0 -2
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.gitignore +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.gitlab-ci.yml +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.idea/dyff-schema.iml +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.licenserc.yaml +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.pre-commit-config.yaml +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.prettierignore +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/.secrets.baseline +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/CODE_OF_CONDUCT.md +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/LICENSE +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/NOTICE +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/README.md +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/adapters.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/annotations.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/base.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/commands.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/copydoc.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/arrow.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/binary.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/classification.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/embedding.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/text.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/dataset/vision.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/errors.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/ids.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/io/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/io/vllm.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/platform.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/py.typed +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/quantity.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/requests.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/responses.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/test.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/adapters.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/base.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/commands.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/arrow.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/binary.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/classification.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/embedding.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/text.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/dataset/vision.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/io/__init__.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/io/vllm.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/oci.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/responses.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/test.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/v0/r1/version.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff/schema/version.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff_schema.egg-info/SOURCES.txt +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff_schema.egg-info/dependency_links.txt +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff_schema.egg-info/requires.txt +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/dyff_schema.egg-info/top_level.txt +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/makefile +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/pyproject.toml +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/setup.cfg +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/tests/test_adapters.py +0 -0
- {dyff_schema-0.37.2 → dyff_schema-0.38.0}/tests/test_import.py +0 -0
|
@@ -28,7 +28,6 @@ from datetime import datetime, timedelta, timezone
|
|
|
28
28
|
from enum import Enum
|
|
29
29
|
from pathlib import Path
|
|
30
30
|
from typing import (
|
|
31
|
-
TYPE_CHECKING,
|
|
32
31
|
Any,
|
|
33
32
|
Literal,
|
|
34
33
|
NamedTuple,
|
|
@@ -51,12 +50,6 @@ from .base import DyffSchemaBaseModel
|
|
|
51
50
|
from .dataset import arrow, make_item_type, make_response_type
|
|
52
51
|
from .version import SCHEMA_VERSION, SchemaVersion
|
|
53
52
|
|
|
54
|
-
if TYPE_CHECKING:
|
|
55
|
-
from .requests import (
|
|
56
|
-
AnalysisCreateRequest,
|
|
57
|
-
EvaluationCreateRequest,
|
|
58
|
-
)
|
|
59
|
-
|
|
60
53
|
SYSTEM_ATTRIBUTES = frozenset(["creationTime", "status", "reason"])
|
|
61
54
|
|
|
62
55
|
|
|
@@ -1712,6 +1705,10 @@ class EvaluationClientConfiguration(DyffSchemaBaseModel):
|
|
|
1712
1705
|
)
|
|
1713
1706
|
|
|
1714
1707
|
|
|
1708
|
+
class EvaluationInferenceSessionRequest(InferenceSessionBase):
|
|
1709
|
+
inferenceService: str = pydantic.Field(description="InferenceService ID")
|
|
1710
|
+
|
|
1711
|
+
|
|
1715
1712
|
class EvaluationBase(DyffSchemaBaseModel):
|
|
1716
1713
|
dataset: str = pydantic.Field(description="The Dataset to evaluate on.")
|
|
1717
1714
|
|
|
@@ -1731,13 +1728,41 @@ class EvaluationBase(DyffSchemaBaseModel):
|
|
|
1731
1728
|
)
|
|
1732
1729
|
|
|
1733
1730
|
|
|
1731
|
+
class EvaluationRequestBase(EvaluationBase):
|
|
1732
|
+
"""A description of how to run an InferenceService on a Dataset to obtain a set of
|
|
1733
|
+
evaluation results."""
|
|
1734
|
+
|
|
1735
|
+
kind: Literal["EvaluationRequest"] = "EvaluationRequest"
|
|
1736
|
+
|
|
1737
|
+
inferenceSession: Optional[EvaluationInferenceSessionRequest] = pydantic.Field(
|
|
1738
|
+
default=None,
|
|
1739
|
+
description="Specification of the InferenceSession that will perform inference for the evaluation.",
|
|
1740
|
+
)
|
|
1741
|
+
|
|
1742
|
+
inferenceSessionReference: Optional[str] = pydantic.Field(
|
|
1743
|
+
default=None,
|
|
1744
|
+
description="The ID of a running inference session that will be used"
|
|
1745
|
+
" for the evaluation, instead of starting a new one.",
|
|
1746
|
+
)
|
|
1747
|
+
|
|
1748
|
+
@pydantic.model_validator(mode="after")
|
|
1749
|
+
def check_session_exactly_one(self):
|
|
1750
|
+
session = self.inferenceSession is not None
|
|
1751
|
+
session_ref = self.inferenceSessionReference is not None
|
|
1752
|
+
if not (session ^ session_ref):
|
|
1753
|
+
raise ValueError(
|
|
1754
|
+
"must specify exactly one of {inferenceSession, inferenceSessionReference}"
|
|
1755
|
+
)
|
|
1756
|
+
return self
|
|
1757
|
+
|
|
1758
|
+
|
|
1734
1759
|
class Evaluation(DyffEntity, EvaluationBase):
|
|
1735
1760
|
"""A description of how to run an InferenceService on a Dataset to obtain a set of
|
|
1736
1761
|
evaluation results."""
|
|
1737
1762
|
|
|
1738
1763
|
kind: Literal["Evaluation"] = Entities.Evaluation.value
|
|
1739
1764
|
|
|
1740
|
-
inferenceSession: InferenceSessionSpec = pydantic.Field(
|
|
1765
|
+
inferenceSession: InferenceSessionSpec = pydantic.Field( # type: ignore[assignment]
|
|
1741
1766
|
description="Specification of the InferenceSession that will perform"
|
|
1742
1767
|
" inference for the evaluation.",
|
|
1743
1768
|
)
|
|
@@ -2229,6 +2254,12 @@ class AnalysisBase(DyffSchemaBaseModel):
|
|
|
2229
2254
|
)
|
|
2230
2255
|
|
|
2231
2256
|
|
|
2257
|
+
class AnalysisRequestBase(AnalysisBase):
|
|
2258
|
+
kind: Literal["AnalysisRequest"] = "AnalysisRequest"
|
|
2259
|
+
|
|
2260
|
+
method: EntityIDField = pydantic.Field(description="Method ID")
|
|
2261
|
+
|
|
2262
|
+
|
|
2232
2263
|
class AnalysisData(DyffSchemaBaseModel):
|
|
2233
2264
|
"""Arbitrary additional data for the Analysis, specified as a key-value pair where
|
|
2234
2265
|
the value is the data encoded in base64."""
|
|
@@ -2735,8 +2766,8 @@ class ChallengeSubmission(DyffEntity):
|
|
|
2735
2766
|
# Pipelines
|
|
2736
2767
|
|
|
2737
2768
|
PipelineNodeRequest: TypeAlias = Union[
|
|
2738
|
-
|
|
2739
|
-
|
|
2769
|
+
AnalysisRequestBase,
|
|
2770
|
+
EvaluationRequestBase,
|
|
2740
2771
|
]
|
|
2741
2772
|
|
|
2742
2773
|
|
|
@@ -2816,6 +2847,11 @@ class PipelineRunBase(DyffSchemaBaseModel):
|
|
|
2816
2847
|
class PipelineRun(DyffEntity, PipelineRunBase):
|
|
2817
2848
|
kind: Literal["PipelineRun"] = Entities.PipelineRun.value
|
|
2818
2849
|
|
|
2850
|
+
workflows: dict[str, EntityIdentifier] = pydantic.Field(
|
|
2851
|
+
description="The concrete IDs of the workflows that were created as a"
|
|
2852
|
+
" result of running the pipeline."
|
|
2853
|
+
)
|
|
2854
|
+
|
|
2819
2855
|
def dependencies(self) -> list[str]:
|
|
2820
2856
|
return [self.pipeline]
|
|
2821
2857
|
|
|
@@ -3080,8 +3116,6 @@ _ENTITY_CLASS = {
|
|
|
3080
3116
|
Entities.Method: Method,
|
|
3081
3117
|
Entities.Model: Model,
|
|
3082
3118
|
Entities.Module: Module,
|
|
3083
|
-
Entities.Pipeline: Pipeline,
|
|
3084
|
-
Entities.PipelineRun: PipelineRun,
|
|
3085
3119
|
Entities.Report: Report,
|
|
3086
3120
|
Entities.SafetyCase: SafetyCase,
|
|
3087
3121
|
Entities.Team: Team,
|
|
@@ -3213,6 +3247,7 @@ __all__ = [
|
|
|
3213
3247
|
"AnalysisData",
|
|
3214
3248
|
"AnalysisInput",
|
|
3215
3249
|
"AnalysisOutputQueryFields",
|
|
3250
|
+
"AnalysisRequestBase",
|
|
3216
3251
|
"AnalysisScope",
|
|
3217
3252
|
"Annotation",
|
|
3218
3253
|
"APIFunctions",
|
|
@@ -3264,6 +3299,7 @@ __all__ = [
|
|
|
3264
3299
|
"Evaluation",
|
|
3265
3300
|
"EvaluationBase",
|
|
3266
3301
|
"EvaluationClientConfiguration",
|
|
3302
|
+
"EvaluationRequestBase",
|
|
3267
3303
|
"ExtractorStep",
|
|
3268
3304
|
"Family",
|
|
3269
3305
|
"FamilyBase",
|
|
@@ -3336,7 +3372,7 @@ __all__ = [
|
|
|
3336
3372
|
"Pipeline",
|
|
3337
3373
|
"PipelineBase",
|
|
3338
3374
|
"PipelineNode",
|
|
3339
|
-
"
|
|
3375
|
+
"PipelineParameter",
|
|
3340
3376
|
"PipelineRun",
|
|
3341
3377
|
"PipelineRunBase",
|
|
3342
3378
|
"QueryableDyffEntity",
|
|
@@ -19,12 +19,13 @@ from datetime import datetime
|
|
|
19
19
|
from typing import Any, Literal, Optional, Union
|
|
20
20
|
|
|
21
21
|
import pydantic
|
|
22
|
+
from typing_extensions import TypeAlias
|
|
22
23
|
|
|
23
24
|
from ... import upcast
|
|
24
|
-
from . import commands
|
|
25
|
-
from .base import DyffBaseModel, JsonMergePatchSemantics
|
|
25
|
+
from . import commands
|
|
26
|
+
from .base import DyffBaseModel, DyffSchemaBaseModel, JsonMergePatchSemantics
|
|
26
27
|
from .platform import (
|
|
27
|
-
|
|
28
|
+
AnalysisRequestBase,
|
|
28
29
|
AnalysisScope,
|
|
29
30
|
ChallengeContent,
|
|
30
31
|
ChallengeTaskBase,
|
|
@@ -32,9 +33,9 @@ from .platform import (
|
|
|
32
33
|
DatasetBase,
|
|
33
34
|
DataView,
|
|
34
35
|
DocumentationBase,
|
|
35
|
-
EntityIDField,
|
|
36
36
|
Evaluation,
|
|
37
|
-
|
|
37
|
+
EvaluationInferenceSessionRequest,
|
|
38
|
+
EvaluationRequestBase,
|
|
38
39
|
FamilyBase,
|
|
39
40
|
FamilyMemberBase,
|
|
40
41
|
InferenceServiceBase,
|
|
@@ -43,6 +44,7 @@ from .platform import (
|
|
|
43
44
|
ModelSpec,
|
|
44
45
|
ModuleBase,
|
|
45
46
|
PipelineBase,
|
|
47
|
+
PipelineRunBase,
|
|
46
48
|
ReportBase,
|
|
47
49
|
TagNameType,
|
|
48
50
|
TeamBase,
|
|
@@ -112,12 +114,10 @@ class DyffEntityCreateRequest(DyffRequestBase):
|
|
|
112
114
|
account: str = pydantic.Field(description="Account that owns the entity")
|
|
113
115
|
|
|
114
116
|
|
|
115
|
-
class AnalysisCreateRequest(DyffEntityCreateRequest,
|
|
117
|
+
class AnalysisCreateRequest(DyffEntityCreateRequest, AnalysisRequestBase):
|
|
116
118
|
"""An Analysis transforms Datasets, Evaluations, and Measurements into new
|
|
117
119
|
Measurements or SafetyCases."""
|
|
118
120
|
|
|
119
|
-
method: EntityIDField = pydantic.Field(description="Method ID")
|
|
120
|
-
|
|
121
121
|
@pydantic.field_validator("scope", check_fields=False)
|
|
122
122
|
def _validate_scope(cls, scope: AnalysisScope) -> AnalysisScope:
|
|
123
123
|
# TODO: This has to be a validator function because we can't apply the
|
|
@@ -214,40 +214,15 @@ class InferenceSessionTokenCreateRequest(DyffRequestBase):
|
|
|
214
214
|
)
|
|
215
215
|
|
|
216
216
|
|
|
217
|
-
class
|
|
218
|
-
inferenceService: str = pydantic.Field(description="InferenceService ID")
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
class EvaluationCreateRequest(DyffEntityCreateRequest, EvaluationBase):
|
|
217
|
+
class EvaluationCreateRequest(DyffEntityCreateRequest, EvaluationRequestBase):
|
|
222
218
|
"""A description of how to run an InferenceService on a Dataset to obtain a set of
|
|
223
219
|
evaluation results."""
|
|
224
220
|
|
|
225
|
-
inferenceSession: Optional[EvaluationInferenceSessionRequest] = pydantic.Field(
|
|
226
|
-
default=None,
|
|
227
|
-
description="Specification of the InferenceSession that will perform inference for the evaluation.",
|
|
228
|
-
)
|
|
229
|
-
|
|
230
|
-
inferenceSessionReference: Optional[str] = pydantic.Field(
|
|
231
|
-
default=None,
|
|
232
|
-
description="The ID of a running inference session that will be used"
|
|
233
|
-
" for the evaluation, instead of starting a new one.",
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
@pydantic.model_validator(mode="after")
|
|
237
|
-
def check_session_exactly_one(self):
|
|
238
|
-
session = self.inferenceSession is not None
|
|
239
|
-
session_ref = self.inferenceSessionReference is not None
|
|
240
|
-
if not (session ^ session_ref):
|
|
241
|
-
raise ValueError(
|
|
242
|
-
"must specify exactly one of {inferenceSession, inferenceSessionReference}"
|
|
243
|
-
)
|
|
244
|
-
return self
|
|
245
|
-
|
|
246
221
|
@staticmethod
|
|
247
222
|
def repeat_of(evaluation: Evaluation) -> EvaluationCreateRequest:
|
|
248
223
|
"""Return a request that will run an existing Evaluation again with the same
|
|
249
224
|
configuration."""
|
|
250
|
-
base = upcast(
|
|
225
|
+
base = upcast(EvaluationRequestBase, evaluation)
|
|
251
226
|
if evaluation.inferenceSessionReference:
|
|
252
227
|
return EvaluationCreateRequest(
|
|
253
228
|
account=evaluation.account,
|
|
@@ -287,13 +262,8 @@ class PipelineCreateRequest(DyffEntityCreateRequest, PipelineBase):
|
|
|
287
262
|
pass
|
|
288
263
|
|
|
289
264
|
|
|
290
|
-
class PipelineRunRequest(
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
arguments: dict[str, pydantic.JsonValue] = pydantic.Field(
|
|
294
|
-
default_factory=dict,
|
|
295
|
-
description="Arguments to pass to the pipeline run.",
|
|
296
|
-
)
|
|
265
|
+
class PipelineRunRequest(DyffEntityCreateRequest, PipelineRunBase):
|
|
266
|
+
pass
|
|
297
267
|
|
|
298
268
|
|
|
299
269
|
class ReportCreateRequest(DyffEntityCreateRequest, ReportBase):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|