blob: 976f78524d00a251447a5979352a6ad682fc70d2 (
plain)
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
|
from dataclasses import dataclass
from enum import Enum
class _StrEnum(Enum):
def __str__(self):
return self.value
class Model(_StrEnum):
AROME = "arome"
GEOS5 = "geos5"
GFS = "gfs"
GFSWAVE = "gfsWave"
ICONEU = "iconEu"
NAMALASKA = "namAlaska"
NAMCONUS = "namConus"
NAMHAWAII = "namHawaii"
class Level(_StrEnum):
SURFACE = "surface"
H1000 = "1000h"
H950 = "950h"
H925 = "925h"
H900 = "900h"
H850 = "850h"
H800 = "800h"
H700 = "700h"
H600 = "600h"
H500 = "500h"
H400 = "400h"
H300 = "300h"
H200 = "200h"
H150 = "150h"
@dataclass
class Request:
key: str
lat: float
lon: float
model: Model
parameters: list = None
levels: list = None
def body(self):
body = {
'key': self.key,
'lat': self.lat,
'lon': self.lon,
'model': str(self.model),
'parameters': self.parameters or [],
}
if self.levels:
body['levels'] = [str(x) for x in self.levels]
return body
@dataclass
class Endpoint:
path: str
def __call__(self, windy, request: Request):
return windy.session.post(windy.api + self.path, json=request.body())
|