3
3
from __future__ import annotations
4
4
5
5
6
- __all__ = ["DatasetIndex" , "Dataset" , "LazyDataset" , "DatasetVariation" , "GenOrder" ]
6
+ __all__ = ["DatasetIndex" , "Dataset" , "LazyDataset" , "DatasetVariation" ,"DatasetVariationIndex" , "GenOrder" ]
7
7
8
8
9
9
import enum
10
10
11
11
from pydantic import Field , field_validator
12
12
13
13
from order .types import (
14
- Union , List , Dict , NonEmptyStrictStr , PositiveStrictInt , Lazy , ClassVar , Any ,
14
+ Union , List , Dict , NonEmptyStrictStr , PositiveStrictInt ,
15
+ PositiveStrictFloat , Lazy , ClassVar , Any ,
15
16
)
16
17
# from order.util import validated
17
18
from order .models .base import Model , AdapterModel
@@ -23,7 +24,13 @@ class DatasetIndex(UniqueObjectIndex):
23
24
class_name : NonEmptyStrictStr = Field (default = "Dataset" , frozen = True )
24
25
objects : Lazy [List [Union ["LazyDataset" , "Dataset" ]]] = Field (default_factory = list , repr = False )
25
26
27
+ class DatasetVariationIndex (UniqueObjectIndex ):
26
28
29
+ class_name : NonEmptyStrictStr = Field (default = "DatasetVariation" , frozen = True )
30
+ # This may become Lazy if we read the dataset variations from somewhere else
31
+ objects : Lazy [List [Union ["LazyDataset" , "DatasetVariation" ]]] = Field (default_factory = list , repr = False )
32
+
33
+
27
34
class LazyDataset (LazyUniqueObject ):
28
35
29
36
class_name : NonEmptyStrictStr = Field (default = "Dataset" , frozen = True )
@@ -65,14 +72,17 @@ def __str__(self) -> str:
65
72
return self .value
66
73
67
74
68
- class DatasetVariation (Model ):
69
-
75
+ class DatasetVariation (UniqueObject ):
76
+
70
77
keys : List [NonEmptyStrictStr ] = Field (frozen = True )
71
78
gen_order : NonEmptyStrictStr = Field (default = str (GenOrder .unknown ))
72
79
n_files : Lazy [PositiveStrictInt ]
73
80
n_events : Lazy [PositiveStrictInt ]
81
+ file_size : Lazy [PositiveStrictInt ]
74
82
lfns : Lazy [List [NonEmptyStrictStr ]]
75
83
84
+ lazy_cls : ClassVar [UniqueObjectBase ] = LazyDataset
85
+
76
86
@field_validator ("gen_order" , mode = "after" )
77
87
@classmethod
78
88
def validate_gen_order (cls , gen_order : str ) -> str :
@@ -85,7 +95,7 @@ def validate_gen_order(cls, gen_order: str) -> str:
85
95
class Dataset (UniqueObject ):
86
96
87
97
campaign : Lazy ["Campaign" ]
88
- variations : Dict [ str , DatasetVariation ] = Field (frozen = True )
98
+ variations : DatasetVariationIndex = Field (default_factory = DatasetVariationIndex , frozen = True )
89
99
90
100
lazy_cls : ClassVar [UniqueObjectBase ] = LazyDataset
91
101
@@ -127,10 +137,17 @@ def n_events(self) -> int:
127
137
def lfns (self ) -> list [NonEmptyStrictStr ]:
128
138
return self .variations ["nominal" ].lfns
129
139
140
+ @property
141
+ def file_size (self ) -> int :
142
+ return self .variations ["nominal" ].file_size
143
+
144
+
130
145
131
146
# trailing imports
132
147
from order .models .campaign import Campaign
133
148
134
149
# rebuild models that contained forward type declarations
135
150
DatasetIndex .model_rebuild ()
151
+ DatasetVariation .model_rebuild ()
152
+ DatasetVariationIndex .model_rebuild ()
136
153
Dataset .model_rebuild ()
0 commit comments