@@ -27,7 +27,7 @@ class Plan(PydanticModel, frozen=True):
2727 context_diff : ContextDiff
2828 plan_id : str
2929 provided_start : t .Optional [TimeLike ] = None
30- end : t .Optional [TimeLike ] = None
30+ provided_end : t .Optional [TimeLike ] = None
3131
3232 is_dev : bool
3333 skip_backfill : bool
@@ -56,6 +56,7 @@ class Plan(PydanticModel, frozen=True):
5656 _snapshots : t .Optional [t .Dict [SnapshotId , Snapshot ]] = None
5757 _environment : t .Optional [Environment ] = None
5858 _start : t .Optional [TimeLike ] = None
59+ _end : t .Optional [TimeLike ] = None
5960 __earliest_interval_start : t .Optional [datetime ] = None
6061
6162 @property
@@ -72,8 +73,10 @@ def start(self) -> TimeLike:
7273 return t .cast (TimeLike , self ._start )
7374
7475 @property
75- def end_or_now (self ) -> TimeLike :
76- return self .end or now ()
76+ def end (self ) -> TimeLike :
77+ if self ._end is None :
78+ self ._end = self .provided_end or now ()
79+ return self ._end
7780
7881 @property
7982 def previous_plan_id (self ) -> t .Optional [str ]:
@@ -172,7 +175,7 @@ def missing_intervals(self) -> t.List[SnapshotIntervals]:
172175 for snapshot , missing in missing_intervals (
173176 [s for s in self .snapshots .values () if self .is_selected_for_backfill (s .name )],
174177 start = self .provided_start or self ._earliest_interval_start ,
175- end = self .end ,
178+ end = self .provided_end ,
176179 execution_time = self .execution_time ,
177180 restatements = self .restatements ,
178181 deployability_index = self .deployability_index ,
@@ -204,7 +207,7 @@ def environment(self) -> Environment:
204207 self ._environment = Environment (
205208 snapshots = snapshots ,
206209 start_at = self .provided_start or self ._earliest_interval_start ,
207- end_at = self .end ,
210+ end_at = self .provided_end ,
208211 plan_id = self .plan_id ,
209212 previous_plan_id = self .previous_plan_id ,
210213 expiration_ts = expiration_ts ,
0 commit comments