dyff-schema 0.38.7__py3-none-any.whl → 0.39.0__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.
- dyff/schema/_version.py +2 -2
- dyff/schema/v0/r1/platform.py +192 -24
- dyff/schema/v0/r1/requests.py +3 -5
- {dyff_schema-0.38.7.dist-info → dyff_schema-0.39.0.dist-info}/METADATA +1 -1
- {dyff_schema-0.38.7.dist-info → dyff_schema-0.39.0.dist-info}/RECORD +9 -9
- {dyff_schema-0.38.7.dist-info → dyff_schema-0.39.0.dist-info}/WHEEL +0 -0
- {dyff_schema-0.38.7.dist-info → dyff_schema-0.39.0.dist-info}/licenses/LICENSE +0 -0
- {dyff_schema-0.38.7.dist-info → dyff_schema-0.39.0.dist-info}/licenses/NOTICE +0 -0
- {dyff_schema-0.38.7.dist-info → dyff_schema-0.39.0.dist-info}/top_level.txt +0 -0
dyff/schema/_version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = version = "0.
|
|
2
|
-
__version_tuple__ = version_tuple = (0,
|
|
1
|
+
__version__ = version = "0.39.0"
|
|
2
|
+
__version_tuple__ = version_tuple = (0, 39, 0)
|
dyff/schema/v0/r1/platform.py
CHANGED
|
@@ -216,6 +216,7 @@ class Entities(str, enum.Enum):
|
|
|
216
216
|
AuditProcedure = "AuditProcedure"
|
|
217
217
|
Challenge = "Challenge"
|
|
218
218
|
Concern = "Concern"
|
|
219
|
+
Curve = "Curve"
|
|
219
220
|
DataSource = "DataSource"
|
|
220
221
|
Dataset = "Dataset"
|
|
221
222
|
Documentation = "Documentation"
|
|
@@ -256,6 +257,7 @@ class Resources(str, enum.Enum):
|
|
|
256
257
|
AuditProcedure = "auditprocedures"
|
|
257
258
|
Challenge = "challenges"
|
|
258
259
|
Concern = "concerns"
|
|
260
|
+
Curve = "curves"
|
|
259
261
|
Dataset = "datasets"
|
|
260
262
|
DataSource = "datasources"
|
|
261
263
|
Descriptor = "descriptors"
|
|
@@ -309,6 +311,7 @@ EntityKindLiteral = Literal[
|
|
|
309
311
|
"Audit",
|
|
310
312
|
"AuditProcedure",
|
|
311
313
|
"Challenge",
|
|
314
|
+
"Curve",
|
|
312
315
|
"DataSource",
|
|
313
316
|
"Dataset",
|
|
314
317
|
"Evaluation",
|
|
@@ -435,7 +438,7 @@ class Labeled(DyffSchemaBaseModel):
|
|
|
435
438
|
class Annotation(DyffSchemaBaseModel):
|
|
436
439
|
key: str = pydantic.Field(
|
|
437
440
|
pattern=_k8s_label_key_regex(),
|
|
438
|
-
max_length=
|
|
441
|
+
max_length=_k8s_label_key_maxlen(),
|
|
439
442
|
description="The annotation key. A DNS label with an optional DNS domain prefix."
|
|
440
443
|
" For example: 'my-key', 'your.com/key_0'. Names prefixed with"
|
|
441
444
|
" 'dyff.io/', 'subdomain.dyff.io/', etc. are reserved.\n\n"
|
|
@@ -541,6 +544,7 @@ class DyffEntity(Status, Labeled, SchemaVersion, DyffModelWithID):
|
|
|
541
544
|
"Audit",
|
|
542
545
|
"AuditProcedure",
|
|
543
546
|
"Challenge",
|
|
547
|
+
"Curve",
|
|
544
548
|
"DataSource",
|
|
545
549
|
"Dataset",
|
|
546
550
|
"Evaluation",
|
|
@@ -1442,6 +1446,21 @@ class VolumeMount(DyffSchemaBaseModel):
|
|
|
1442
1446
|
default=None, description="Configuration for Scratch volume mounts."
|
|
1443
1447
|
)
|
|
1444
1448
|
|
|
1449
|
+
@pydantic.model_validator(mode="after")
|
|
1450
|
+
def _validate_kind_matches_payload(self):
|
|
1451
|
+
"""Ensure payload fields match declared kind."""
|
|
1452
|
+
if self.kind == VolumeMountKind.data:
|
|
1453
|
+
if self.data is None or self.scratch is not None:
|
|
1454
|
+
raise ValueError(
|
|
1455
|
+
"VolumeMount(kind='Data') requires .data and forbids .scratch"
|
|
1456
|
+
)
|
|
1457
|
+
elif self.kind == VolumeMountKind.scratch:
|
|
1458
|
+
if self.scratch is None or self.data is not None:
|
|
1459
|
+
raise ValueError(
|
|
1460
|
+
"VolumeMount(kind='Scratch') requires .scratch and forbids .data"
|
|
1461
|
+
)
|
|
1462
|
+
return self
|
|
1463
|
+
|
|
1445
1464
|
|
|
1446
1465
|
class Container(DyffSchemaBaseModel):
|
|
1447
1466
|
"""Configuration of a runnable container backed by either an image hosted in an
|
|
@@ -1489,6 +1508,15 @@ class Container(DyffSchemaBaseModel):
|
|
|
1489
1508
|
" which might be configured in the container image.",
|
|
1490
1509
|
)
|
|
1491
1510
|
|
|
1511
|
+
@pydantic.model_validator(mode="after")
|
|
1512
|
+
def _validate_image_or_ref(self):
|
|
1513
|
+
"""Exactly one of image or imageRef must be set."""
|
|
1514
|
+
has_image = self.image is not None
|
|
1515
|
+
has_ref = self.imageRef is not None
|
|
1516
|
+
if has_image == has_ref:
|
|
1517
|
+
raise ValueError("Exactly one of 'image' or 'imageRef' must be set.")
|
|
1518
|
+
return self
|
|
1519
|
+
|
|
1492
1520
|
|
|
1493
1521
|
class InferenceServiceRunner(Container):
|
|
1494
1522
|
"""Configuration of the runtime environment to use to run an inference service.
|
|
@@ -2101,6 +2129,34 @@ class ScoreSpec(DyffSchemaBaseModel):
|
|
|
2101
2129
|
return format.format(quantity=quantity, unit=unit)
|
|
2102
2130
|
|
|
2103
2131
|
|
|
2132
|
+
class CurveSpec(DyffSchemaBaseModel):
|
|
2133
|
+
"""Metadata describing the curve dimensions and how to read them.
|
|
2134
|
+
|
|
2135
|
+
- `dimensions` supplies per-dimension metadata (name -> ScoreSpec).
|
|
2136
|
+
- Use these keys as columns in `CurveData.points`.
|
|
2137
|
+
"""
|
|
2138
|
+
|
|
2139
|
+
name: str = pydantic.Field(
|
|
2140
|
+
description="Unique key for this curve within the Method context.",
|
|
2141
|
+
pattern=identifier_regex(),
|
|
2142
|
+
max_length=identifier_maxlen(),
|
|
2143
|
+
)
|
|
2144
|
+
title: str = pydantic.Field(
|
|
2145
|
+
description="Human-friendly title for the curve.",
|
|
2146
|
+
max_length=title_maxlen(),
|
|
2147
|
+
)
|
|
2148
|
+
summary: str = pydantic.Field(
|
|
2149
|
+
description="Short description of what the curve shows.",
|
|
2150
|
+
max_length=summary_maxlen(),
|
|
2151
|
+
)
|
|
2152
|
+
dimensions: dict[str, ScoreSpec] = pydantic.Field(
|
|
2153
|
+
description=(
|
|
2154
|
+
"Per-dimension metadata. Keys must match the columns stored in CurveData.points. "
|
|
2155
|
+
"Typical keys might include 'x', 'y', 'threshold', 'tp', 'fp', etc."
|
|
2156
|
+
)
|
|
2157
|
+
)
|
|
2158
|
+
|
|
2159
|
+
|
|
2104
2160
|
class MethodBase(DyffSchemaBaseModel):
|
|
2105
2161
|
name: str = pydantic.Field(description="Descriptive name of the Method.")
|
|
2106
2162
|
|
|
@@ -2131,7 +2187,7 @@ class MethodBase(DyffSchemaBaseModel):
|
|
|
2131
2187
|
description="Specification of the Method output."
|
|
2132
2188
|
)
|
|
2133
2189
|
|
|
2134
|
-
scores: list[ScoreSpec] = pydantic.Field(
|
|
2190
|
+
scores: list[Union[ScoreSpec, CurveSpec]] = pydantic.Field(
|
|
2135
2191
|
default_factory=list,
|
|
2136
2192
|
description="Specifications of the Scores that this Method produces.",
|
|
2137
2193
|
)
|
|
@@ -2149,12 +2205,13 @@ class MethodBase(DyffSchemaBaseModel):
|
|
|
2149
2205
|
)
|
|
2150
2206
|
|
|
2151
2207
|
@pydantic.field_validator("scores")
|
|
2152
|
-
def _scores_validator(cls, scores
|
|
2153
|
-
if
|
|
2154
|
-
|
|
2208
|
+
def _scores_validator(cls, scores):
|
|
2209
|
+
score_specs = [s for s in scores if isinstance(s, ScoreSpec)]
|
|
2210
|
+
if score_specs:
|
|
2211
|
+
primary_count = sum(s.priority == "primary" for s in score_specs)
|
|
2155
2212
|
if primary_count != 1:
|
|
2156
2213
|
raise ValueError(
|
|
2157
|
-
"scores: Must have exactly one
|
|
2214
|
+
"scores: Must have exactly one primary ScoreSpec (curves excluded)"
|
|
2158
2215
|
)
|
|
2159
2216
|
return scores
|
|
2160
2217
|
|
|
@@ -2329,17 +2386,19 @@ class ScoreData(ScoreSpec):
|
|
|
2329
2386
|
description="The Analysis that generated the current score instance."
|
|
2330
2387
|
)
|
|
2331
2388
|
|
|
2332
|
-
quantity: float = pydantic.Field(
|
|
2333
|
-
description="
|
|
2389
|
+
quantity: float | None = pydantic.Field(
|
|
2390
|
+
default=None, description="Numeric quantity for scalar scores."
|
|
2391
|
+
)
|
|
2392
|
+
points: dict[str, list[float]] | None = pydantic.Field(
|
|
2393
|
+
default=None,
|
|
2394
|
+
description="Aligned vectors for curve scores. Keys should match curve.dimensions.",
|
|
2334
2395
|
)
|
|
2335
2396
|
|
|
2336
2397
|
quantityString: str = pydantic.Field(
|
|
2337
|
-
description="
|
|
2338
|
-
" after processing with the .format specification."
|
|
2398
|
+
description="Formatted string representation of .quantity (scalar) or a summary string (curve)."
|
|
2339
2399
|
)
|
|
2340
|
-
|
|
2341
2400
|
text: str = pydantic.Field(
|
|
2342
|
-
description="
|
|
2401
|
+
description="Short text description of what the value/curve means.",
|
|
2343
2402
|
max_length=summary_maxlen(),
|
|
2344
2403
|
)
|
|
2345
2404
|
|
|
@@ -2355,6 +2414,53 @@ class Score(ScoreData):
|
|
|
2355
2414
|
id: str = pydantic.Field(description="Unique identifier of the entity")
|
|
2356
2415
|
|
|
2357
2416
|
|
|
2417
|
+
class CurveData(CurveSpec):
|
|
2418
|
+
"""An instance of a curve produced by an analysis.
|
|
2419
|
+
|
|
2420
|
+
- Inherits the curve spec (name/title/summary/dimensions) directly.
|
|
2421
|
+
- `points` is a dict-of-lists: each key is a dimension name defined in `dimensions`.
|
|
2422
|
+
- All lists must be the same (non-zero) length.
|
|
2423
|
+
|
|
2424
|
+
spec: CurveSpec = pydantic.Field(description="The CurveSpec this data conforms to.")
|
|
2425
|
+
"""
|
|
2426
|
+
|
|
2427
|
+
metadata: ScoreMetadata = pydantic.Field(
|
|
2428
|
+
description="Indexing metadata (method required).",
|
|
2429
|
+
)
|
|
2430
|
+
analysis: str = pydantic.Field(
|
|
2431
|
+
description="ID of the Analysis that produced this curve."
|
|
2432
|
+
)
|
|
2433
|
+
points: dict[str, list[float]] = pydantic.Field(
|
|
2434
|
+
description="Aligned vectors for each dimension; all lists must have equal length >= 1."
|
|
2435
|
+
)
|
|
2436
|
+
|
|
2437
|
+
@pydantic.model_validator(mode="after")
|
|
2438
|
+
def _validate_points(self):
|
|
2439
|
+
if not self.points:
|
|
2440
|
+
raise ValueError("CurveData.points must not be empty")
|
|
2441
|
+
|
|
2442
|
+
lengths = {k: len(v) for k, v in self.points.items()}
|
|
2443
|
+
uniq = set(lengths.values())
|
|
2444
|
+
if len(uniq) != 1:
|
|
2445
|
+
raise ValueError(
|
|
2446
|
+
f"All vectors must have equal length; got lengths {lengths}"
|
|
2447
|
+
)
|
|
2448
|
+
n = next(iter(uniq))
|
|
2449
|
+
if n < 1:
|
|
2450
|
+
raise ValueError("Vectors must contain at least 1 point")
|
|
2451
|
+
|
|
2452
|
+
missing = [k for k in self.dimensions.keys() if k not in self.points]
|
|
2453
|
+
if missing:
|
|
2454
|
+
raise ValueError(f"points is missing required dimensions: {missing}")
|
|
2455
|
+
return self
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
class Curve(CurveData):
|
|
2459
|
+
kind: Literal["Curve"] = Entities.Curve.value
|
|
2460
|
+
|
|
2461
|
+
id: str = pydantic.Field(description="Unique identifier of the entity")
|
|
2462
|
+
|
|
2463
|
+
|
|
2358
2464
|
# ---------------------------------------------------------------------------
|
|
2359
2465
|
# OCI artifacts
|
|
2360
2466
|
|
|
@@ -2635,6 +2741,19 @@ class ChallengeTaskSchedule(DyffSchemaBaseModel):
|
|
|
2635
2741
|
description="Teams are limited to this many submissions per cycle.",
|
|
2636
2742
|
)
|
|
2637
2743
|
|
|
2744
|
+
@pydantic.model_validator(mode="after")
|
|
2745
|
+
def _validate_times(self):
|
|
2746
|
+
"""Basic temporal sanity checks."""
|
|
2747
|
+
if (
|
|
2748
|
+
self.openingTime
|
|
2749
|
+
and self.closingTime
|
|
2750
|
+
and self.closingTime <= self.openingTime
|
|
2751
|
+
):
|
|
2752
|
+
raise ValueError("closingTime must be after openingTime")
|
|
2753
|
+
if self.submissionCycleDuration <= timedelta(0):
|
|
2754
|
+
raise ValueError("submissionCycleDuration must be positive")
|
|
2755
|
+
return self
|
|
2756
|
+
|
|
2638
2757
|
|
|
2639
2758
|
class ChallengeTaskRules(DyffSchemaBaseModel):
|
|
2640
2759
|
"""The rules of the challenge."""
|
|
@@ -2656,7 +2775,7 @@ class ChallengeTaskContent(DyffSchemaBaseModel):
|
|
|
2656
2775
|
)
|
|
2657
2776
|
|
|
2658
2777
|
|
|
2659
|
-
class
|
|
2778
|
+
class SubmissionStructure(DyffSchemaBaseModel):
|
|
2660
2779
|
submissionKind: EntityKindLiteral = pydantic.Field(
|
|
2661
2780
|
default=Entities.InferenceService.value,
|
|
2662
2781
|
description="The kind of entity that you can submit to this task.",
|
|
@@ -2679,12 +2798,13 @@ class ChallengeTaskBase(DyffSchemaBaseModel):
|
|
|
2679
2798
|
" This may appear in URLs and must follow naming restrictions.",
|
|
2680
2799
|
max_length=title_maxlen(),
|
|
2681
2800
|
pattern=r"[a-z0-9-]*",
|
|
2801
|
+
min_length=1,
|
|
2682
2802
|
)
|
|
2683
2803
|
assessment: str = pydantic.Field(
|
|
2684
2804
|
description="ID of the Pipeline used to assess the submission."
|
|
2685
2805
|
)
|
|
2686
|
-
submissionStructure:
|
|
2687
|
-
default_factory=
|
|
2806
|
+
submissionStructure: SubmissionStructure = pydantic.Field(
|
|
2807
|
+
default_factory=SubmissionStructure,
|
|
2688
2808
|
description="How to run the assessment pipeline on a new submission.",
|
|
2689
2809
|
)
|
|
2690
2810
|
rules: ChallengeTaskRules = pydantic.Field(description="The rules for submissions.")
|
|
@@ -2745,14 +2865,14 @@ class Challenge(DyffEntity):
|
|
|
2745
2865
|
return None
|
|
2746
2866
|
|
|
2747
2867
|
|
|
2748
|
-
class
|
|
2868
|
+
class SubmissionBase(DyffSchemaBaseModel):
|
|
2749
2869
|
team: str = pydantic.Field(description="The ID of the team making the submission.")
|
|
2750
2870
|
submission: EntityIdentifier = pydantic.Field(
|
|
2751
2871
|
description="The resource being submitted for assessment."
|
|
2752
2872
|
)
|
|
2753
2873
|
|
|
2754
2874
|
|
|
2755
|
-
class
|
|
2875
|
+
class Submission(DyffEntity, SubmissionBase):
|
|
2756
2876
|
"""A submission of an inference system to a challenge by a team.
|
|
2757
2877
|
|
|
2758
2878
|
All of the constituent resources must already exist. Creating a Submission simply
|
|
@@ -2787,14 +2907,33 @@ class ChallengeSubmission(DyffEntity, ChallengeSubmissionBase):
|
|
|
2787
2907
|
class PipelineEvaluationRequest(EvaluationRequestBase):
|
|
2788
2908
|
kind: Literal["PipelineEvaluationRequest"] = "PipelineEvaluationRequest"
|
|
2789
2909
|
|
|
2910
|
+
def dependencies(self) -> list[str]:
|
|
2911
|
+
if self.inferenceSession is None:
|
|
2912
|
+
raise AssertionError()
|
|
2913
|
+
return [self.dataset, self.inferenceSession.inferenceService]
|
|
2914
|
+
|
|
2915
|
+
@pydantic.model_validator(mode="after")
|
|
2916
|
+
def check_session_not_reference(self):
|
|
2917
|
+
if self.inferenceSession is None or self.inferenceSessionReference is not None:
|
|
2918
|
+
raise ValueError(
|
|
2919
|
+
"evaluations in pipelines must set inferenceSession, not inferenceSessionReference"
|
|
2920
|
+
)
|
|
2921
|
+
return self
|
|
2922
|
+
|
|
2790
2923
|
|
|
2791
2924
|
class PipelineMeasurementRequest(AnalysisRequestBase):
|
|
2792
2925
|
kind: Literal["PipelineMeasurementRequest"] = "PipelineMeasurementRequest"
|
|
2793
2926
|
|
|
2927
|
+
def dependencies(self) -> list[str]:
|
|
2928
|
+
return [self.method] + [x.entity for x in self.inputs]
|
|
2929
|
+
|
|
2794
2930
|
|
|
2795
2931
|
class PipelineSafetyCaseRequest(AnalysisRequestBase):
|
|
2796
2932
|
kind: Literal["PipelineSafetyCaseRequest"] = "PipelineSafetyCaseRequest"
|
|
2797
2933
|
|
|
2934
|
+
def dependencies(self) -> list[str]:
|
|
2935
|
+
return [self.method] + [x.entity for x in self.inputs]
|
|
2936
|
+
|
|
2798
2937
|
|
|
2799
2938
|
PipelineNodeRequest = Union[
|
|
2800
2939
|
PipelineEvaluationRequest,
|
|
@@ -2836,16 +2975,25 @@ class PipelineNode(DyffSchemaBaseModel):
|
|
|
2836
2975
|
|
|
2837
2976
|
class PipelineParameter(DyffSchemaBaseModel):
|
|
2838
2977
|
"""Declares a parameter that can be passed to the pipeline to customize its
|
|
2839
|
-
behavior.
|
|
2978
|
+
behavior.
|
|
2979
|
+
|
|
2980
|
+
By default, the argument will be substituted for the placeholder value
|
|
2981
|
+
``$(keyword)``, where ``keyword`` is the ``.keyword`` property of the
|
|
2982
|
+
parameter. In this case, the value of the argument must be a string.
|
|
2840
2983
|
|
|
2841
|
-
|
|
2842
|
-
|
|
2984
|
+
If ``.destination`` is specified, the argument will instead overwrite
|
|
2985
|
+
the value at the specified JSON path.
|
|
2986
|
+
"""
|
|
2987
|
+
|
|
2988
|
+
keyword: str = pydantic.Field(description="The keyword of the parameter.")
|
|
2989
|
+
destination: Optional[str] = pydantic.Field(
|
|
2990
|
+
default=None,
|
|
2843
2991
|
description="The field in a pipeline node to substitute with the"
|
|
2844
|
-
" parameter value. Should be a string like 'node_name.field1.field2'."
|
|
2992
|
+
" parameter value. Should be a string like 'node_name.field1.field2'.",
|
|
2845
2993
|
)
|
|
2846
2994
|
description: Optional[str] = pydantic.Field(
|
|
2847
2995
|
default=None,
|
|
2848
|
-
description="A description of the
|
|
2996
|
+
description="A description of the parameter.",
|
|
2849
2997
|
max_length=summary_maxlen(),
|
|
2850
2998
|
)
|
|
2851
2999
|
|
|
@@ -2856,6 +3004,10 @@ class PipelineBase(DyffSchemaBaseModel):
|
|
|
2856
3004
|
description="The nodes in the pipeline graph.",
|
|
2857
3005
|
min_length=1,
|
|
2858
3006
|
)
|
|
3007
|
+
parameters: dict[str, PipelineParameter] = pydantic.Field(
|
|
3008
|
+
default_factory=dict,
|
|
3009
|
+
description="Input parameters used to customize the pipeline.",
|
|
3010
|
+
)
|
|
2859
3011
|
|
|
2860
3012
|
@pydantic.field_validator("nodes", mode="after")
|
|
2861
3013
|
def validate_node_names_match(cls, nodes: dict[str, PipelineNode]):
|
|
@@ -2864,6 +3016,15 @@ class PipelineBase(DyffSchemaBaseModel):
|
|
|
2864
3016
|
raise ValueError(f"nodes[{k}]: dict key must match value.name")
|
|
2865
3017
|
return nodes
|
|
2866
3018
|
|
|
3019
|
+
@pydantic.field_validator("parameters", mode="after")
|
|
3020
|
+
def validate_parameter_keywords_match(
|
|
3021
|
+
cls, parameters: dict[str, PipelineParameter]
|
|
3022
|
+
):
|
|
3023
|
+
for k, v in parameters.items():
|
|
3024
|
+
if k != v.keyword:
|
|
3025
|
+
raise ValueError(f"parameters[{k}]: dict key must match value.keyword")
|
|
3026
|
+
return parameters
|
|
3027
|
+
|
|
2867
3028
|
|
|
2868
3029
|
class Pipeline(DyffEntity, PipelineBase):
|
|
2869
3030
|
"""A set of Dyff workflows that can be executed as a group.
|
|
@@ -3182,6 +3343,7 @@ _DyffEntityTypeRevisable = Union[
|
|
|
3182
3343
|
PipelineRun,
|
|
3183
3344
|
Report,
|
|
3184
3345
|
SafetyCase,
|
|
3346
|
+
Submission,
|
|
3185
3347
|
Team,
|
|
3186
3348
|
UseCase,
|
|
3187
3349
|
]
|
|
@@ -3261,6 +3423,7 @@ _ENTITY_CLASS: dict[Entities, type[DyffEntityType]] = {
|
|
|
3261
3423
|
Entities.Report: Report,
|
|
3262
3424
|
Entities.Revision: Revision,
|
|
3263
3425
|
Entities.SafetyCase: SafetyCase,
|
|
3426
|
+
Entities.Submission: Submission,
|
|
3264
3427
|
Entities.Team: Team,
|
|
3265
3428
|
Entities.UseCase: UseCase,
|
|
3266
3429
|
}
|
|
@@ -3294,6 +3457,7 @@ DyffEntityT = TypeVar(
|
|
|
3294
3457
|
Report,
|
|
3295
3458
|
Revision,
|
|
3296
3459
|
SafetyCase,
|
|
3460
|
+
Submission,
|
|
3297
3461
|
Team,
|
|
3298
3462
|
UseCase,
|
|
3299
3463
|
)
|
|
@@ -3325,8 +3489,6 @@ __all__ = [
|
|
|
3325
3489
|
"Challenge",
|
|
3326
3490
|
"ChallengeContent",
|
|
3327
3491
|
"ChallengeContentPage",
|
|
3328
|
-
"ChallengeSubmission",
|
|
3329
|
-
"ChallengeSubmissionBase",
|
|
3330
3492
|
"ChallengeTask",
|
|
3331
3493
|
"ChallengeTaskBase",
|
|
3332
3494
|
"ChallengeTaskContent",
|
|
@@ -3338,6 +3500,9 @@ __all__ = [
|
|
|
3338
3500
|
"ConcernBase",
|
|
3339
3501
|
"Container",
|
|
3340
3502
|
"ContainerImageSource",
|
|
3503
|
+
"Curve",
|
|
3504
|
+
"CurveData",
|
|
3505
|
+
"CurveSpec",
|
|
3341
3506
|
"DataSchema",
|
|
3342
3507
|
"Dataset",
|
|
3343
3508
|
"DatasetBase",
|
|
@@ -3463,6 +3628,9 @@ __all__ = [
|
|
|
3463
3628
|
"ScoreMetadataRefs",
|
|
3464
3629
|
"Status",
|
|
3465
3630
|
"StorageSignedURL",
|
|
3631
|
+
"Submission",
|
|
3632
|
+
"SubmissionBase",
|
|
3633
|
+
"SubmissionStructure",
|
|
3466
3634
|
"TagName",
|
|
3467
3635
|
"TagNameType",
|
|
3468
3636
|
"TaskSchema",
|
dyff/schema/v0/r1/requests.py
CHANGED
|
@@ -27,7 +27,6 @@ from .platform import (
|
|
|
27
27
|
AnalysisRequestBase,
|
|
28
28
|
AnalysisScope,
|
|
29
29
|
ChallengeContent,
|
|
30
|
-
ChallengeSubmissionBase,
|
|
31
30
|
ChallengeTaskBase,
|
|
32
31
|
ConcernBase,
|
|
33
32
|
DatasetBase,
|
|
@@ -46,6 +45,7 @@ from .platform import (
|
|
|
46
45
|
PipelineBase,
|
|
47
46
|
PipelineRunBase,
|
|
48
47
|
ReportBase,
|
|
48
|
+
SubmissionBase,
|
|
49
49
|
TagNameType,
|
|
50
50
|
TeamBase,
|
|
51
51
|
summary_maxlen,
|
|
@@ -149,9 +149,7 @@ class ChallengeCreateRequest(DyffEntityCreateRequest):
|
|
|
149
149
|
)
|
|
150
150
|
|
|
151
151
|
|
|
152
|
-
class
|
|
153
|
-
DyffEntityCreateRequest, ChallengeSubmissionBase
|
|
154
|
-
):
|
|
152
|
+
class SubmissionCreateRequest(DyffEntityCreateRequest, SubmissionBase):
|
|
155
153
|
pass
|
|
156
154
|
|
|
157
155
|
|
|
@@ -504,7 +502,6 @@ __all__ = [
|
|
|
504
502
|
"ChallengeContentEditRequest",
|
|
505
503
|
"ChallengeCreateRequest",
|
|
506
504
|
"ChallengeQueryRequest",
|
|
507
|
-
"ChallengeSubmissionCreateRequest",
|
|
508
505
|
"ChallengeTaskCreateRequest",
|
|
509
506
|
"ChallengeTaskRulesEditRequest",
|
|
510
507
|
"ChallengeTeamCreateRequest",
|
|
@@ -544,6 +541,7 @@ __all__ = [
|
|
|
544
541
|
"ReportQueryRequest",
|
|
545
542
|
"SafetyCaseQueryRequest",
|
|
546
543
|
"ScoreQueryRequest",
|
|
544
|
+
"SubmissionCreateRequest",
|
|
547
545
|
"TeamEditRequest",
|
|
548
546
|
"TeamQueryRequest",
|
|
549
547
|
"UseCaseQueryRequest",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
dyff/schema/__init__.py,sha256=w7OWDFuyGKd6xt_yllNtKzHahPgywrfU4Ue02psYaMA,2244
|
|
2
|
-
dyff/schema/_version.py,sha256=
|
|
2
|
+
dyff/schema/_version.py,sha256=I6LzRmj6u3696UihPDbtQ6SvcXb8zA4Bc4JYoFGddx0,80
|
|
3
3
|
dyff/schema/adapters.py,sha256=YMTHv_2VlLGFp-Kqwa6H51hjffHmk8gXjZilHysIF5Q,123
|
|
4
4
|
dyff/schema/annotations.py,sha256=nE6Jk1PLqlShj8uqjE_EzZC9zYnTDW5AVtQcjysiK8M,10018
|
|
5
5
|
dyff/schema/base.py,sha256=jvaNtsSZyFfsdUZTcY_U-yfLY5_GyrMxSXhON2R9XR0,119
|
|
@@ -29,8 +29,8 @@ dyff/schema/v0/r1/adapters.py,sha256=hpwCSW8lkMkUKCLe0zaMUDu-VS_caSxJvPsECEi_XRA
|
|
|
29
29
|
dyff/schema/v0/r1/base.py,sha256=1VJXVLKldOq3aH2HdVgxXXk4DJTZEIiaTa4GzMKzziU,20228
|
|
30
30
|
dyff/schema/v0/r1/commands.py,sha256=jqbEvDRLpcVGWXqlbniuSKg3UIjlrpKt6_0hiwUpPfQ,20153
|
|
31
31
|
dyff/schema/v0/r1/oci.py,sha256=YjHDVBJ2IIxqijll70OK6pM-qT6pq8tvU7D3YB9vGM0,6700
|
|
32
|
-
dyff/schema/v0/r1/platform.py,sha256=
|
|
33
|
-
dyff/schema/v0/r1/requests.py,sha256=
|
|
32
|
+
dyff/schema/v0/r1/platform.py,sha256=qAy2yBRtaRLrWbONDxOa2Z89lFstOBq8V0SsOg7cpIE,118312
|
|
33
|
+
dyff/schema/v0/r1/requests.py,sha256=OhkM9QpSimsGaX8TtjSHcWlHg1UYyPCiq-WW9DJ7FdQ,18548
|
|
34
34
|
dyff/schema/v0/r1/responses.py,sha256=nxy7FPtfw2B_bljz5UGGuSE79HTkDQxKH56AJVmd4Qo,1287
|
|
35
35
|
dyff/schema/v0/r1/test.py,sha256=X6dUyVd5svcPCI-PBMOAqEfK9jv3bRDvkQTJzwS96c0,10720
|
|
36
36
|
dyff/schema/v0/r1/version.py,sha256=NONebgcv5Thsw_ymud6PacZdGjV6ndBrmLnap-obcpo,428
|
|
@@ -43,9 +43,9 @@ dyff/schema/v0/r1/dataset/text.py,sha256=MYG5seGODDryRSCy-g0Unh5dD0HCytmZ3FeElC-
|
|
|
43
43
|
dyff/schema/v0/r1/dataset/vision.py,sha256=tJFF4dkhHX0UXTj1sPW-G22xTSI40gbYO465FuvmvAU,443
|
|
44
44
|
dyff/schema/v0/r1/io/__init__.py,sha256=L5y8UhRnojerPYHumsxQJRcHCNz8Hj9NM8b47mewMNs,92
|
|
45
45
|
dyff/schema/v0/r1/io/vllm.py,sha256=vWyLg-susbg0JDfv6VExBpgFdU2GHP2a14ChOdbckvs,5321
|
|
46
|
-
dyff_schema-0.
|
|
47
|
-
dyff_schema-0.
|
|
48
|
-
dyff_schema-0.
|
|
49
|
-
dyff_schema-0.
|
|
50
|
-
dyff_schema-0.
|
|
51
|
-
dyff_schema-0.
|
|
46
|
+
dyff_schema-0.39.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
47
|
+
dyff_schema-0.39.0.dist-info/licenses/NOTICE,sha256=YONACu0s_Ui6jNi-wtEsVQbTU1JIkh8wvLH6d1-Ni_w,43
|
|
48
|
+
dyff_schema-0.39.0.dist-info/METADATA,sha256=ZGqsePJhzMjBYADI2vpkJL0aur7pZLhFSSZ1tOCmIZs,3734
|
|
49
|
+
dyff_schema-0.39.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
50
|
+
dyff_schema-0.39.0.dist-info/top_level.txt,sha256=9e3VVdeX73t_sUJOPQPCcGtYO1JhoErhHIi3WoWGcFI,5
|
|
51
|
+
dyff_schema-0.39.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|