@@ -28,8 +28,10 @@ lazy_static! {
2828}
2929
3030/// Weekly market hours schedule
31+ /// TODO: Remove after all publishers have upgraded to support the new schedule format
3132#[ derive( Clone , Default , Debug , Eq , PartialEq ) ]
32- pub struct WeeklySchedule {
33+ #[ deprecated( note = "This struct is deprecated, use MarketSchedule instead." ) ]
34+ pub struct LegacySchedule {
3335 pub timezone : Tz ,
3436 pub mon : MHKind ,
3537 pub tue : MHKind ,
@@ -40,7 +42,7 @@ pub struct WeeklySchedule {
4042 pub sun : MHKind ,
4143}
4244
43- impl WeeklySchedule {
45+ impl LegacySchedule {
4446 pub fn all_closed ( ) -> Self {
4547 Self {
4648 timezone : Default :: default ( ) ,
@@ -76,7 +78,7 @@ impl WeeklySchedule {
7678 }
7779}
7880
79- impl FromStr for WeeklySchedule {
81+ impl FromStr for LegacySchedule {
8082 type Err = anyhow:: Error ;
8183 fn from_str ( s : & str ) -> Result < Self > {
8284 let mut split_by_commas = s. split ( "," ) ;
@@ -235,9 +237,9 @@ mod tests {
235237 // Mon-Fri 9-5, inconsistent leading space on Tuesday, leading 0 on Friday (expected to be fine)
236238 let s = "Europe/Warsaw,9:00-17:00, 9:00-17:00,9:00-17:00,9:00-17:00,09:00-17:00,C,C" ;
237239
238- let parsed: WeeklySchedule = s. parse ( ) ?;
240+ let parsed: LegacySchedule = s. parse ( ) ?;
239241
240- let expected = WeeklySchedule {
242+ let expected = LegacySchedule {
241243 timezone : Tz :: Europe__Warsaw ,
242244 mon : MHKind :: TimeRange (
243245 NaiveTime :: from_hms_opt ( 9 , 0 , 0 ) . unwrap ( ) ,
@@ -273,7 +275,7 @@ mod tests {
273275 // Valid but missing a timezone
274276 let s = "O,C,O,C,O,C,O" ;
275277
276- let parsing_result: Result < WeeklySchedule > = s. parse ( ) ;
278+ let parsing_result: Result < LegacySchedule > = s. parse ( ) ;
277279
278280 dbg ! ( & parsing_result) ;
279281 assert ! ( parsing_result. is_err( ) ) ;
@@ -284,7 +286,7 @@ mod tests {
284286 // One day short
285287 let s = "Asia/Hong_Kong,C,O,C,O,C,O" ;
286288
287- let parsing_result: Result < WeeklySchedule > = s. parse ( ) ;
289+ let parsing_result: Result < LegacySchedule > = s. parse ( ) ;
288290
289291 dbg ! ( & parsing_result) ;
290292 assert ! ( parsing_result. is_err( ) ) ;
@@ -294,7 +296,7 @@ mod tests {
294296 fn test_parsing_gibberish_timezone_is_error ( ) {
295297 // Pretty sure that one's extinct
296298 let s = "Pangea/New_Dino_City,O,O,O,O,O,O,O" ;
297- let parsing_result: Result < WeeklySchedule > = s. parse ( ) ;
299+ let parsing_result: Result < LegacySchedule > = s. parse ( ) ;
298300
299301 dbg ! ( & parsing_result) ;
300302 assert ! ( parsing_result. is_err( ) ) ;
@@ -303,7 +305,7 @@ mod tests {
303305 #[ test]
304306 fn test_parsing_gibberish_day_schedule_is_error ( ) {
305307 let s = "Europe/Amsterdam,mondays are alright I guess,O,O,O,O,O,O" ;
306- let parsing_result: Result < WeeklySchedule > = s. parse ( ) ;
308+ let parsing_result: Result < LegacySchedule > = s. parse ( ) ;
307309
308310 dbg ! ( & parsing_result) ;
309311 assert ! ( parsing_result. is_err( ) ) ;
@@ -313,7 +315,7 @@ mod tests {
313315 fn test_parsing_too_many_days_is_error ( ) {
314316 // One day too many
315317 let s = "Europe/Lisbon,O,O,O,O,O,O,O,O,C" ;
316- let parsing_result: Result < WeeklySchedule > = s. parse ( ) ;
318+ let parsing_result: Result < LegacySchedule > = s. parse ( ) ;
317319
318320 dbg ! ( & parsing_result) ;
319321 assert ! ( parsing_result. is_err( ) ) ;
@@ -322,7 +324,7 @@ mod tests {
322324 #[ test]
323325 fn test_market_hours_happy_path ( ) -> Result < ( ) > {
324326 // Prepare a schedule of narrow ranges
325- let wsched: WeeklySchedule = "America/New_York,00:00-1:00,1:00-2:00,2:00-3:00,3:00-4:00,4:00-5:00,5:00-6:00,6:00-7:00" . parse ( ) ?;
327+ let wsched: LegacySchedule = "America/New_York,00:00-1:00,1:00-2:00,2:00-3:00,3:00-4:00,4:00-5:00,5:00-6:00,6:00-7:00" . parse ( ) ?;
326328
327329 // Prepare UTC datetimes that fall before, within and after market hours
328330 let format = "%Y-%m-%d %H:%M" ;
@@ -379,7 +381,7 @@ mod tests {
379381 #[ test]
380382 fn test_market_hours_midnight_00_24 ( ) -> Result < ( ) > {
381383 // Prepare a schedule of midnight-neighboring ranges
382- let wsched: WeeklySchedule =
384+ let wsched: LegacySchedule =
383385 "Europe/Amsterdam,23:00-24:00,00:00-01:00,O,C,C,C,C" . parse ( ) ?;
384386
385387 let format = "%Y-%m-%d %H:%M" ;
@@ -433,8 +435,8 @@ mod tests {
433435 // CDT/CET 6h offset in use for 2 weeks, CDT/CEST 7h offset after)
434436 // * Autumn 2023: Oct29(EU)-Nov5(US) (clocks go back 1h,
435437 // CDT/CET 6h offset in use 1 week, CST/CET 7h offset after)
436- let wsched_eu: WeeklySchedule = "Europe/Amsterdam,9:00-17:00,O,O,O,O,O,O" . parse ( ) ?;
437- let wsched_us: WeeklySchedule = "America/Chicago,2:00-10:00,O,O,O,O,O,O" . parse ( ) ?;
438+ let wsched_eu: LegacySchedule = "Europe/Amsterdam,9:00-17:00,O,O,O,O,O,O" . parse ( ) ?;
439+ let wsched_us: LegacySchedule = "America/Chicago,2:00-10:00,O,O,O,O,O,O" . parse ( ) ?;
438440
439441 let format = "%Y-%m-%d %H:%M" ;
440442
0 commit comments