2
2
An AST.
3
3
"""
4
4
5
- from typing import Sequence , TypeAlias , NewType
5
+ from typing import TypeAlias , NewType
6
6
import enum
7
7
import datetime
8
8
import dataclasses
9
9
10
+ import serde
11
+
10
12
11
13
class StopPart (enum .Enum ):
12
14
"""
@@ -25,20 +27,20 @@ class StopPart(enum.Enum):
25
27
TimeTableCell : TypeAlias = datetime .time | None
26
28
27
29
28
- @dataclasses . dataclass ( frozen = True )
30
+ @serde . serde
29
31
class TimeTable :
30
32
"""
31
33
A TimeTable (mapping of Stop + StopPart to rows of times).
32
34
"""
33
35
34
- cols : Sequence [TimeTableColumn ]
35
- time_matrix : Sequence [ Sequence [TimeTableCell ]]
36
+ cols : list [TimeTableColumn ]
37
+ time_matrix : list [ list [TimeTableCell ]]
36
38
37
39
38
40
TimeTableIdx = NewType ("TimeTableIdx" , int )
39
41
40
42
41
- @dataclasses . dataclass ( frozen = True )
43
+ @serde . serde
42
44
class SubPeriod :
43
45
"""
44
46
A SubPeriod (e.g. Weekday, Weekend).
@@ -50,7 +52,7 @@ class SubPeriod:
50
52
SubPeriodIdx = NewType ("SubPeriodIdx" , int )
51
53
52
54
53
- @dataclasses . dataclass ( frozen = True )
55
+ @serde . serde
54
56
class Route :
55
57
"""
56
58
A Route (e.g. 3 RIT Inn).
@@ -64,7 +66,7 @@ class Route:
64
66
RouteIdx = NewType ("RouteIdx" , int )
65
67
66
68
67
- @dataclasses . dataclass ( frozen = True )
69
+ @serde . serde
68
70
class Period :
69
71
"""
70
72
A Period (e.g. Spring 2025 Shuttle Schedule).
@@ -76,21 +78,21 @@ class Period:
76
78
PeriodIdx = NewType ("PeriodIdx" , int )
77
79
78
80
79
- @dataclasses . dataclass ( frozen = True )
81
+ @serde . serde
80
82
class Ast :
81
83
"""
82
84
A cohesive collection of Stops, Routes, Periods, SubPeriods, and TimeTables.
83
85
"""
84
86
85
- routes : Sequence [Route ]
86
- stops : Sequence [Stop ]
87
- time_tables : Sequence [TimeTable ]
87
+ routes : list [Route ]
88
+ stops : list [Stop ]
89
+ time_tables : list [TimeTable ]
88
90
89
- periods : Sequence [Period ]
90
- sub_periods : Sequence [SubPeriod ]
91
+ periods : list [Period ]
92
+ sub_periods : list [SubPeriod ]
91
93
92
- route_stops : dict [RouteIdx , Sequence [StopIdx ]]
94
+ route_stops : dict [RouteIdx , list [StopIdx ]]
93
95
route_time_table : dict [RouteIdx , TimeTableIdx ]
94
96
95
- period_to_sub_periods : dict [PeriodIdx , Sequence [SubPeriodIdx ]]
96
- sub_period_routes : dict [SubPeriodIdx , Sequence [RouteIdx ]]
97
+ period_to_sub_periods : dict [PeriodIdx , list [SubPeriodIdx ]]
98
+ sub_period_routes : dict [SubPeriodIdx , list [RouteIdx ]]
0 commit comments