11"""This module defines re-usable contexts for the "Callable Model" framework defined in flow.callable.py."""
22
3+ import warnings
34from datetime import date , datetime
45from typing import Generic , Hashable , Optional , Sequence , Set , TypeVar
56
7+ from deprecated import deprecated
68from pydantic import field_validator , model_validator
79
810from .base import ContextBase
911from .exttypes import Frequency
1012from .validators import normalize_date , normalize_datetime
1113
14+ warnings .simplefilter ("always" , DeprecationWarning )
15+
16+
1217__all__ = (
1318 "NullContext" ,
1419 "GenericContext" ,
1520 "DateContext" ,
1621 "DatetimeContext" ,
1722 "EntryTimeContext" ,
23+ "SeedContext" ,
1824 "SourceContext" ,
1925 "DateRangeContext" ,
2026 "DatetimeRangeContext" ,
21- "SeededDateRangeContext " ,
22- "SeededDatetimeRangeContext " ,
23- "VersionedDateContext " ,
24- "VersionedDatetimeContext " ,
25- "VersionedDateRangeContext " ,
26- "VersionedDatetimeRangeContext " ,
27+ "SeedDateRangeContext " ,
28+ "SeedDatetimeRangeContext " ,
29+ "DateEntryTimeContext " ,
30+ "DatetimeEntryTimeContext " ,
31+ "DateRangeEntryTimeContext " ,
32+ "DatetimeRangeEntryTimeContext " ,
2733 "FreqContext" ,
2834 "FreqDateContext" ,
2935 "FreqDatetimeContext" ,
4046 "UniverseDatetimeContext" ,
4147 "UniverseDateRangeContext" ,
4248 "UniverseDatetimeRangeContext" ,
43- "UniverseFrequencyDateRangeContext " ,
44- "UniverseFrequencyDatetimeRangeContext " ,
45- "UniverseFrequencyHorizonDateRangeContext " ,
46- "UniverseFrequencyHorizonDatetimeRangeContext " ,
47- "VersionedUniverseDateContext " ,
48- "VersionedUniverseDatetimeContext " ,
49- "VersionedUniverseDateRangeContext " ,
50- "VersionedUniverseDatetimeRangeContext " ,
49+ "UniverseFreqDateRangeContext " ,
50+ "UniverseFreqDatetimeRangeContext " ,
51+ "UniverseFreqHorizonDateRangeContext " ,
52+ "UniverseFreqHorizonDatetimeRangeContext " ,
53+ "UniverseDateEntryTimeContext " ,
54+ "UniverseDatetimeEntryTimeContext " ,
55+ "UniverseDateRangeEntryTimeContext " ,
56+ "UniverseDatetimeRangeEntryTimeContext " ,
5157 "ModelContext" ,
5258 "ModelDateContext" ,
5359 "ModelDatetimeContext" ,
5662 "ModelDateRangeSourceContext" ,
5763 "ModelFreqDateRangeContext" ,
5864 "ModelFreqDatetimeRangeContext" ,
65+ "ModelDateEntryTimeContext" ,
66+ "ModelDatetimeEntryTimeContext" ,
67+ "ModelDateRangeEntryTimeContext" ,
68+ "ModelDatetimeRangeEntryTimeContext" ,
69+ # deprecated aliases
70+ "SeededContext" ,
71+ "SeededDateRangeContext" ,
72+ "SeededDatetimeRangeContext" ,
73+ "UniverseFrequencyDateRangeContext" ,
74+ "UniverseFrequencyDatetimeRangeContext" ,
75+ "UniverseFrequencyHorizonDateRangeContext" ,
76+ "UniverseFrequencyHorizonDatetimeRangeContext" ,
77+ "VersionedDateContext" ,
78+ "VersionedDatetimeContext" ,
79+ "VersionedDateRangeContext" ,
80+ "VersionedDatetimeRangeContext" ,
81+ "VersionedUniverseDateContext" ,
82+ "VersionedUniverseDatetimeContext" ,
83+ "VersionedUniverseDateRangeContext" ,
84+ "VersionedUniverseDatetimeRangeContext" ,
5985 "VersionedModelDateContext" ,
6086 "VersionedModelDatetimeContext" ,
6187 "VersionedModelDateRangeContext" ,
@@ -136,6 +162,10 @@ class EntryTimeContext(ContextBase):
136162 entry_time_cutoff : Optional [datetime ] = None
137163
138164
165+ class SeedContext (ContextBase ):
166+ seed : int = 1234
167+
168+
139169class SourceContext (ContextBase ):
140170 source : Optional [str ] = None
141171
@@ -162,27 +192,27 @@ class DatetimeRangeContext(ContextBase):
162192 _normalize_end = field_validator ("end_datetime" , mode = "before" )(normalize_datetime )
163193
164194
165- class SeededDateRangeContext (DateRangeContext ):
166- seed : int = 1234
195+ class SeedDateRangeContext (DateRangeContext , SeedContext ):
196+ pass
167197
168198
169- class SeededDatetimeRangeContext (DatetimeRangeContext ):
170- seed : int = 1234
199+ class SeedDatetimeRangeContext (DatetimeRangeContext , SeedContext ):
200+ pass
171201
172202
173- class VersionedDateContext ( DateContext , EntryTimeContext ):
203+ class DateEntryTimeContext ( EntryTimeContext , DateContext ):
174204 pass
175205
176206
177- class VersionedDatetimeContext ( DatetimeContext , EntryTimeContext ):
207+ class DatetimeEntryTimeContext ( EntryTimeContext , DatetimeContext ):
178208 pass
179209
180210
181- class VersionedDateRangeContext ( DateRangeContext , EntryTimeContext ):
211+ class DateRangeEntryTimeContext ( EntryTimeContext , DateRangeContext ):
182212 pass
183213
184214
185- class VersionedDatetimeRangeContext ( DatetimeRangeContext , EntryTimeContext ):
215+ class DatetimeRangeEntryTimeContext ( EntryTimeContext , DatetimeRangeContext ):
186216 pass
187217
188218
@@ -210,23 +240,39 @@ class HorizonContext(ContextBase):
210240 horizon : Frequency
211241
212242
243+ class HorizonDateContext (DateContext , HorizonContext ):
244+ pass
245+
246+
247+ class HorizonDatetimeContext (DatetimeContext , HorizonContext ):
248+ pass
249+
250+
251+ class HorizonDateRangeContext (DateRangeContext , HorizonContext ):
252+ pass
253+
254+
255+ class HorizonDatetimeRangeContext (DatetimeRangeContext , HorizonContext ):
256+ pass
257+
258+
213259class FreqHorizonContext (HorizonContext , FreqContext ):
214260 pass
215261
216262
217- class FreqHorizonDateContext (DateContext , HorizonContext , FreqContext ):
263+ class FreqHorizonDateContext (HorizonDateContext , FreqDateContext , FreqHorizonContext ):
218264 pass
219265
220266
221- class FreqHorizonDatetimeContext (DatetimeContext , HorizonContext , FreqContext ):
267+ class FreqHorizonDatetimeContext (HorizonDatetimeContext , FreqDatetimeContext , FreqHorizonContext ):
222268 pass
223269
224270
225- class FreqHorizonDateRangeContext (DateRangeContext , HorizonContext , FreqContext ):
271+ class FreqHorizonDateRangeContext (HorizonDateRangeContext , FreqDateRangeContext , FreqHorizonContext ):
226272 pass
227273
228274
229- class FreqHorizonDatetimeRangeContext (DatetimeRangeContext , HorizonContext , FreqContext ):
275+ class FreqHorizonDatetimeRangeContext (HorizonDatetimeRangeContext , FreqDatetimeRangeContext , FreqHorizonContext ):
230276 pass
231277
232278
@@ -250,35 +296,35 @@ class UniverseDatetimeRangeContext(DatetimeRangeContext, UniverseContext):
250296 pass
251297
252298
253- class UniverseFrequencyDateRangeContext ( DateRangeContext , FreqContext , UniverseContext ):
299+ class UniverseFreqDateRangeContext ( FreqDateRangeContext , UniverseDateRangeContext ):
254300 pass
255301
256302
257- class UniverseFrequencyDatetimeRangeContext ( DatetimeRangeContext , FreqContext , UniverseContext ):
303+ class UniverseFreqDatetimeRangeContext ( FreqDatetimeRangeContext , UniverseDatetimeRangeContext ):
258304 pass
259305
260306
261- class UniverseFrequencyHorizonDateRangeContext ( DateRangeContext , HorizonContext , FreqContext , UniverseContext ):
307+ class UniverseFreqHorizonDateRangeContext ( FreqHorizonDateRangeContext , UniverseFreqDateRangeContext ):
262308 pass
263309
264310
265- class UniverseFrequencyHorizonDatetimeRangeContext ( DatetimeRangeContext , HorizonContext , FreqContext , UniverseContext ):
311+ class UniverseFreqHorizonDatetimeRangeContext ( UniverseFreqDatetimeRangeContext , FreqHorizonDatetimeRangeContext ):
266312 pass
267313
268314
269- class VersionedUniverseDateContext ( VersionedDateContext , UniverseContext ):
315+ class UniverseDateEntryTimeContext ( DateEntryTimeContext , UniverseDateContext ):
270316 pass
271317
272318
273- class VersionedUniverseDatetimeContext ( VersionedDatetimeContext , UniverseContext ):
319+ class UniverseDatetimeEntryTimeContext ( DatetimeEntryTimeContext , UniverseDatetimeContext ):
274320 pass
275321
276322
277- class VersionedUniverseDateRangeContext ( VersionedDateRangeContext , UniverseContext ):
323+ class UniverseDateRangeEntryTimeContext ( DateRangeEntryTimeContext , UniverseDateRangeContext ):
278324 pass
279325
280326
281- class VersionedUniverseDatetimeRangeContext ( VersionedDatetimeRangeContext , UniverseContext ):
327+ class UniverseDatetimeRangeEntryTimeContext ( DatetimeRangeEntryTimeContext , UniverseDatetimeRangeContext ):
282328 pass
283329
284330
@@ -306,25 +352,140 @@ class ModelDateRangeSourceContext(SourceContext, ModelDateRangeContext):
306352 pass
307353
308354
309- class ModelFreqDateRangeContext (FreqDateRangeContext , ModelContext ):
355+ class ModelFreqDateRangeContext (FreqDateRangeContext , ModelDateRangeContext ):
356+ pass
357+
358+
359+ class ModelFreqDatetimeRangeContext (FreqDatetimeRangeContext , ModelDatetimeRangeContext ):
360+ pass
361+
362+
363+ class ModelDateEntryTimeContext (DateEntryTimeContext , ModelDateContext ):
364+ pass
365+
366+
367+ class ModelDatetimeEntryTimeContext (DatetimeEntryTimeContext , ModelDatetimeContext ):
368+ pass
369+
370+
371+ class ModelDateRangeEntryTimeContext (DateRangeEntryTimeContext , ModelDateRangeContext ):
372+ pass
373+
374+
375+ class ModelDatetimeRangeEntryTimeContext (DatetimeRangeEntryTimeContext , ModelDatetimeRangeContext ):
376+ pass
377+
378+
379+ # TODO - remove later to avoid breaking changes for now
380+ @deprecated (version = "0.8.0" , reason = "Use SeedContext instead" )
381+ class SeededContext (SeedContext ):
382+ __deprecated__ = True
383+ pass
384+
385+
386+ @deprecated (version = "0.8.0" , reason = "Use SeedDateRangeContext instead" )
387+ class SeededDateRangeContext (SeedDateRangeContext ):
388+ __deprecated__ = True
389+ pass
390+
391+
392+ @deprecated (version = "0.8.0" , reason = "Use SeedDatetimeRangeContext instead" )
393+ class SeededDatetimeRangeContext (SeedDatetimeRangeContext ):
394+ __deprecated__ = True
395+ pass
396+
397+
398+ @deprecated (version = "0.8.0" , reason = "Use UniverseFreqDateRangeContext instead" )
399+ class UniverseFrequencyDateRangeContext (UniverseFreqDateRangeContext ):
400+ __deprecated__ = True
401+ pass
402+
403+
404+ @deprecated (version = "0.8.0" , reason = "Use UniverseFreqDatetimeRangeContext instead" )
405+ class UniverseFrequencyDatetimeRangeContext (UniverseFreqDatetimeRangeContext ):
406+ __deprecated__ = True
407+ pass
408+
409+
410+ @deprecated (version = "0.8.0" , reason = "Use UniverseFreqHorizonDateRangeContext instead" )
411+ class UniverseFrequencyHorizonDateRangeContext (UniverseFreqHorizonDateRangeContext ):
412+ __deprecated__ = True
413+ pass
414+
415+
416+ @deprecated (version = "0.8.0" , reason = "Use UniverseFreqHorizonDatetimeRangeContext instead" )
417+ class UniverseFrequencyHorizonDatetimeRangeContext (UniverseFreqHorizonDatetimeRangeContext ):
418+ __deprecated__ = True
419+ pass
420+
421+
422+ @deprecated (version = "0.8.0" , reason = "Use UniverseDateEntryTimeContext instead" )
423+ class VersionedUniverseDateContext (UniverseDateEntryTimeContext ):
424+ __deprecated__ = True
425+ pass
426+
427+
428+ @deprecated (version = "0.8.0" , reason = "Use UniverseDatetimeEntryTimeContext instead" )
429+ class VersionedUniverseDatetimeContext (UniverseDatetimeEntryTimeContext ):
430+ __deprecated__ = True
431+ pass
432+
433+
434+ @deprecated (version = "0.8.0" , reason = "Use UniverseDateRangeEntryTimeContext instead" )
435+ class VersionedUniverseDateRangeContext (UniverseDateRangeEntryTimeContext ):
436+ __deprecated__ = True
437+ pass
438+
439+
440+ @deprecated (version = "0.8.0" , reason = "Use UniverseDatetimeRangeEntryTimeContext instead" )
441+ class VersionedUniverseDatetimeRangeContext (UniverseDatetimeRangeEntryTimeContext ):
442+ __deprecated__ = True
443+ pass
444+
445+
446+ @deprecated (version = "0.8.0" , reason = "Use ModelDateEntryTimeContext instead" )
447+ class VersionedModelDateContext (ModelDateEntryTimeContext ):
448+ __deprecated__ = True
449+ pass
450+
451+
452+ @deprecated (version = "0.8.0" , reason = "Use ModelDatetimeEntryTimeContext instead" )
453+ class VersionedModelDatetimeContext (ModelDatetimeEntryTimeContext ):
454+ __deprecated__ = True
455+ pass
456+
457+
458+ @deprecated (version = "0.8.0" , reason = "Use ModelDateRangeEntryTimeContext instead" )
459+ class VersionedModelDateRangeContext (ModelDateRangeEntryTimeContext ):
460+ __deprecated__ = True
310461 pass
311462
312463
313- class ModelFreqDatetimeRangeContext (FreqDatetimeRangeContext , ModelContext ):
464+ @deprecated (version = "0.8.0" , reason = "Use ModelDatetimeRangeEntryTimeContext instead" )
465+ class VersionedModelDatetimeRangeContext (ModelDatetimeRangeEntryTimeContext ):
466+ __deprecated__ = True
314467 pass
315468
316469
317- class VersionedModelDateContext (VersionedDateContext , ModelContext ):
470+ @deprecated (version = "0.8.0" , reason = "Use DateEntryTimeContext instead" )
471+ class VersionedDateContext (EntryTimeContext , DateContext ):
472+ __deprecated__ = True
318473 pass
319474
320475
321- class VersionedModelDatetimeContext (VersionedDatetimeContext , ModelContext ):
476+ @deprecated (version = "0.8.0" , reason = "Use DatetimeEntryTimeContext instead" )
477+ class VersionedDatetimeContext (EntryTimeContext , DatetimeContext ):
478+ __deprecated__ = True
322479 pass
323480
324481
325- class VersionedModelDateRangeContext (VersionedDateRangeContext , ModelContext ):
482+ @deprecated (version = "0.8.0" , reason = "Use DateRangeEntryTimeContext instead" )
483+ class VersionedDateRangeContext (EntryTimeContext , DateRangeContext ):
484+ __deprecated__ = True
326485 pass
327486
328487
329- class VersionedModelDatetimeRangeContext (VersionedDatetimeRangeContext , ModelContext ):
488+ @deprecated (version = "0.8.0" , reason = "Use DatetimeRangeEntryTimeContext instead" )
489+ class VersionedDatetimeRangeContext (EntryTimeContext , DatetimeRangeContext ):
490+ __deprecated__ = True
330491 pass
0 commit comments