windborne 1.2.1__py3-none-any.whl → 1.2.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- windborne/__init__.py +3 -1
- windborne/cli.py +9 -0
- windborne/forecasts_api.py +23 -0
- {windborne-1.2.1.dist-info → windborne-1.2.3.dist-info}/METADATA +1 -1
- windborne-1.2.3.dist-info/RECORD +13 -0
- {windborne-1.2.1.dist-info → windborne-1.2.3.dist-info}/WHEEL +1 -1
- windborne-1.2.1.dist-info/RECORD +0 -13
- {windborne-1.2.1.dist-info → windborne-1.2.3.dist-info}/entry_points.txt +0 -0
- {windborne-1.2.1.dist-info → windborne-1.2.3.dist-info}/top_level.txt +0 -0
windborne/__init__.py
CHANGED
@@ -23,6 +23,7 @@ from .forecasts_api import (
|
|
23
23
|
get_point_forecasts,
|
24
24
|
get_initialization_times,
|
25
25
|
get_forecast_hours,
|
26
|
+
get_generation_times,
|
26
27
|
|
27
28
|
get_gridded_forecast,
|
28
29
|
get_full_gridded_forecast,
|
@@ -61,7 +62,8 @@ __all__ = [
|
|
61
62
|
"get_point_forecasts",
|
62
63
|
"get_initialization_times",
|
63
64
|
"get_forecast_hours",
|
64
|
-
|
65
|
+
"get_generation_times",
|
66
|
+
|
65
67
|
"get_gridded_forecast",
|
66
68
|
"get_full_gridded_forecast",
|
67
69
|
"get_temperature_2m",
|
windborne/cli.py
CHANGED
@@ -20,6 +20,7 @@ from . import (
|
|
20
20
|
get_point_forecasts,
|
21
21
|
get_initialization_times,
|
22
22
|
get_forecast_hours,
|
23
|
+
get_generation_times,
|
23
24
|
get_full_gridded_forecast,
|
24
25
|
get_gridded_forecast,
|
25
26
|
get_tropical_cyclones
|
@@ -235,6 +236,11 @@ def main():
|
|
235
236
|
forecast_hours_parser.add_argument('-i', '--intracycle', action='store_true', help='Use the intracycle forecast')
|
236
237
|
forecast_hours_parser.add_argument('-e', '--ens-member', help='Ensemble member (eg 1 or mean)')
|
237
238
|
|
239
|
+
# Output Creation Times Command
|
240
|
+
output_creation_times_parser = subparsers.add_parser('generation_times', help='Get the time at which each forecast hour output file was generated')
|
241
|
+
output_creation_times_parser.add_argument('-i', '--intracycle', action='store_true', help='Use the intracycle forecast')
|
242
|
+
output_creation_times_parser.add_argument('-e', '--ens-member', help='Ensemble member (eg 1 or mean)')
|
243
|
+
|
238
244
|
args = parser.parse_args()
|
239
245
|
|
240
246
|
####################################################################################################################
|
@@ -437,6 +443,9 @@ def main():
|
|
437
443
|
elif args.command == 'forecast_hours':
|
438
444
|
get_forecast_hours(print_response=True, ensemble_member=args.ens_member, intracycle=args.intracycle)
|
439
445
|
|
446
|
+
elif args.command == 'generation_times':
|
447
|
+
get_generation_times(print_response=True, ensemble_member=args.ens_member, intracycle=args.intracycle)
|
448
|
+
|
440
449
|
elif args.command == 'gridded':
|
441
450
|
if len(args.args) in [0,1,2]:
|
442
451
|
print(f"To get the gridded forecast for a variable you need to provide the variable, time, and an output file.")
|
windborne/forecasts_api.py
CHANGED
@@ -324,6 +324,29 @@ def get_forecast_hours(print_response=False, ensemble_member=None, intracycle=Fa
|
|
324
324
|
return response
|
325
325
|
|
326
326
|
|
327
|
+
def get_generation_times(print_response=False, ensemble_member=None, intracycle=False):
|
328
|
+
"""
|
329
|
+
Get the creation time for each forecast hour output file.
|
330
|
+
|
331
|
+
Returns dict with keys of initialization times and values of dicts, each of which has keys of forecast hours and values of creation times (as ISO strings)
|
332
|
+
"""
|
333
|
+
|
334
|
+
params = {
|
335
|
+
'ens_member': ensemble_member,
|
336
|
+
'intracycle': intracycle
|
337
|
+
}
|
338
|
+
response = make_api_request(f"{FORECASTS_API_BASE_URL}/generation_times.json", params=params)
|
339
|
+
|
340
|
+
if print_response:
|
341
|
+
print("Generation times:")
|
342
|
+
for time, hours in response.items():
|
343
|
+
print(f" - {time}:")
|
344
|
+
for hour, creation_time in hours.items():
|
345
|
+
print(f" - {hour}: {creation_time}")
|
346
|
+
|
347
|
+
return response
|
348
|
+
|
349
|
+
|
327
350
|
# Tropical cyclones
|
328
351
|
def print_tc_supported_formats():
|
329
352
|
"""Print supported file formats for saving tcs data."""
|
@@ -0,0 +1,13 @@
|
|
1
|
+
windborne/__init__.py,sha256=dslI8_5Wozr96w7c0E7_HEpYIHt9YaTLo3ADF2yapSk,2102
|
2
|
+
windborne/api_request.py,sha256=wh8-LANzB62eJt699Zk3YHv4pIzwa1DIhiTJdWRp-To,11264
|
3
|
+
windborne/cli.py,sha256=TzEZtfzOgMgPU11ARgJ6O3YZFV3TcXPPYOabHBKb01Y,29247
|
4
|
+
windborne/data_api.py,sha256=sYZkcQog8RuLErfdLLa4gC8fRkAoPGNKKQJ8i6o-LTQ,33826
|
5
|
+
windborne/forecasts_api.py,sha256=mg7rJkBUE9xSyKIx4RMN0-RIZBdqqSz7Jp5JqFg8DhI,17053
|
6
|
+
windborne/observation_formatting.py,sha256=c739aaun6aaYhXl5VI-SRGR-TDS355_0Bfu1t6McoiM,14993
|
7
|
+
windborne/track_formatting.py,sha256=LaLfTyjpWoOtHmReJPLViY0MKm_iPL_5I2OB_lNvGGA,10054
|
8
|
+
windborne/utils.py,sha256=H8gvZ4Lrr0UmLl25iMZs6NsZliCY_73Ved_rBIqxJg4,7240
|
9
|
+
windborne-1.2.3.dist-info/METADATA,sha256=UvrhPEAgHC8C7kZ0o0Ii8qqOWVZCa3HEw72M7QfqLkI,1235
|
10
|
+
windborne-1.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
11
|
+
windborne-1.2.3.dist-info/entry_points.txt,sha256=j_YrqdCDrCd7p5MIwQ2BYwNXEi95VNANzLRJmcXEg1U,49
|
12
|
+
windborne-1.2.3.dist-info/top_level.txt,sha256=PE9Lauriu5S5REf7JKhXprufZ_V5RiZ_TnfnrLGJrmE,10
|
13
|
+
windborne-1.2.3.dist-info/RECORD,,
|
windborne-1.2.1.dist-info/RECORD
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
windborne/__init__.py,sha256=nRvcreJarSKLwx40adsZSbYm-pc3htE2HZJvgY0MQUA,2044
|
2
|
-
windborne/api_request.py,sha256=wh8-LANzB62eJt699Zk3YHv4pIzwa1DIhiTJdWRp-To,11264
|
3
|
-
windborne/cli.py,sha256=Y0oLQLqHAhGX1xCM4vpREpGAMhECM4SK87h2DkUjalU,28643
|
4
|
-
windborne/data_api.py,sha256=sYZkcQog8RuLErfdLLa4gC8fRkAoPGNKKQJ8i6o-LTQ,33826
|
5
|
-
windborne/forecasts_api.py,sha256=tp0tirS91xBwv9CuScJwjNiiVhrV3fHL6U5UxAdWLXk,16266
|
6
|
-
windborne/observation_formatting.py,sha256=c739aaun6aaYhXl5VI-SRGR-TDS355_0Bfu1t6McoiM,14993
|
7
|
-
windborne/track_formatting.py,sha256=LaLfTyjpWoOtHmReJPLViY0MKm_iPL_5I2OB_lNvGGA,10054
|
8
|
-
windborne/utils.py,sha256=H8gvZ4Lrr0UmLl25iMZs6NsZliCY_73Ved_rBIqxJg4,7240
|
9
|
-
windborne-1.2.1.dist-info/METADATA,sha256=jKnNK7Ar8N3mn9Ab1ptcim8rTX-gPD6L5w6tG_nhIzM,1235
|
10
|
-
windborne-1.2.1.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
11
|
-
windborne-1.2.1.dist-info/entry_points.txt,sha256=j_YrqdCDrCd7p5MIwQ2BYwNXEi95VNANzLRJmcXEg1U,49
|
12
|
-
windborne-1.2.1.dist-info/top_level.txt,sha256=PE9Lauriu5S5REf7JKhXprufZ_V5RiZ_TnfnrLGJrmE,10
|
13
|
-
windborne-1.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|