/
structs.py
148 lines (116 loc) · 2.3 KB
/
structs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
"""
Contains dataclasses to hold report data
"""
# stdlib
from dataclasses import asdict, dataclass
from datetime import datetime
@dataclass
class StationInfo(object):
city: str
country: str
elevation: float
iata: str
icao: str
latitude: float
longitude: float
name: str
priority: int
state: str
@dataclass
class Units(object):
altimeter: str
altitude: str
temperature: str
visibility: str
wind_speed: str
@dataclass
class Number(object):
repr: str
value: float
spoken: str
@dataclass
class Fraction(Number):
numerator: int
denominator: int
normalized: str
@dataclass
class Timestamp(object):
repr: str
dt: datetime
@dataclass
class Cloud(object):
repr: str
type: str
altitude: int
modifier: str = None
@dataclass
class RemarksData(object):
dewpoint_decimal: float = None
temperature_decimal: float = None
@dataclass
class ReportData(object):
raw: str
remarks: str
station: str
time: Timestamp
@dataclass
class SharedData(object):
altimeter: Number
clouds: [Cloud]
flight_rules: str
other: [str]
sanitized: str
visibility: Number
wind_direction: Number
wind_gust: Number
wind_speed: Number
@dataclass
class MetarData(ReportData, SharedData):
dewpoint: Number
remarks_info: RemarksData
runway_visibility: [str]
temperature: Number
wind_variable_direction: [Number]
@dataclass
class TafLineData(SharedData):
end_time: Timestamp
icing: [str]
probability: Number
raw: str
start_time: Timestamp
turbulance: [str]
type: str
wind_shear: str
@dataclass
class TafData(ReportData):
forecast: [TafLineData]
start_time: Timestamp
end_time: Timestamp
max_temp: float = None
min_temp: float = None
alts: [str] = None
temps: [str] = None
@dataclass
class ReportTrans(object):
altimeter: str
clouds: str
other: str
visibility: str
@dataclass
class MetarTrans(ReportTrans):
dewpoint: str
remarks: dict
temperature: str
wind: str
@dataclass
class TafLineTrans(ReportTrans):
icing: str
turbulance: str
wind: str
wind_shear: str
@dataclass
class TafTrans(object):
forecast: [TafLineTrans]
max_temp: str
min_temp: str
remarks: dict