Skip to content

Commit 329c368

Browse files
committed
[Archive] Fixes bug #110, returns None instead of crash when there is no file on server
Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>
1 parent bc87314 commit 329c368

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

speasy/core/direct_archive_downloader/direct_archive_downloader.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,21 @@
2020

2121

2222
@CacheCall(cache_retention=timedelta(hours=24), is_pure=True)
23-
def _read_cdf(url: str, variable: str) -> SpeasyVariable:
23+
def _read_cdf(url: Optional[str], variable: str) -> Optional[SpeasyVariable]:
24+
if url is None:
25+
return None
2426
return load_variable(file=url, variable=variable)
2527

2628

27-
def _build_url(url_pattern: str, date: datetime, use_file_list=False) -> str:
29+
def _build_url(url_pattern: str, date: datetime, use_file_list=False) -> Optional[str]:
2830
base_ulr = url_pattern.format(Y=date.year, M=date.month, D=date.day)
2931
if not use_file_list:
3032
return base_ulr
3133
folder_url, rx = base_ulr.rsplit('/', 1)
32-
return '/'.join((folder_url, sorted(list_files(folder_url, re.compile(rx)))[-1]))
34+
files = sorted(list_files(folder_url, re.compile(rx)))
35+
if len(files):
36+
return '/'.join((folder_url, files[-1]))
37+
return None
3338

3439

3540
def spilt_range(split_frequency: str, start_time: AnyDateTimeType, stop_time: AnyDateTimeType):

tests/test_direct_archive_downloader.py

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,36 @@ def test_get_data(self, product, start, stop):
9797
v = spz.get_data(product, start, stop)
9898
self.assertIsNotNone(v)
9999

100-
def test_get_data_with_no_file(self):
101-
v = spz.get_data(spz.inventories.tree.archive.cdpp.THEMIS.THA.L2.tha_scm.tha_scf_gse, "2018-03-10",
102-
"2018-03-11")
100+
@data(
101+
("archive/cdpp/THEMIS/THA/L2/tha_scm/tha_scf_gse",
102+
"2018-03-10",
103+
"2018-03-11"),
104+
("archive/cda/MMS/MMS1/FGM/SRVY/mms1_fgm_srvy_l2/mms1_fgm_b_bcs_srvy_l2",
105+
"2019-08-19",
106+
"2019-08-25"),
107+
)
108+
@unpack
109+
def test_get_data_with_no_file(self, product, start, stop):
110+
v = spz.get_data(product, start, stop)
111+
self.assertIsNone(v)
112+
113+
@data(
114+
("archive/cda/MMS/MMS1/FGM/SRVY/mms1_fgm_srvy_l2/mms1_fgm_b_bcs_srvy_l2",
115+
"2010-08-19",
116+
"2010-08-25"),
117+
("archive/cdpp/THEMIS/THA/L2/tha_scm/tha_scf_gse",
118+
"2030-03-10",
119+
"2030-03-11"),
120+
("archive/cda/MMS/MMS1/FPI/BURST/MOMS/mms1_fpi_brst_l2_des_moms/mms1_des_temppara_brst",
121+
"2006-02-28",
122+
"2006-03-02"),
123+
("archive/cda/MMS/MMS1/FPI/FAST/MOMS/mms1_fpi_fast_l2_des_moms/mms1_des_energyspectr_omni_fast",
124+
"2010-01-30T10",
125+
"2010-02-01T12"),
126+
)
127+
@unpack
128+
def test_get_data_outside_of_range(self, product, start, stop):
129+
v = spz.get_data(product, start, stop)
103130
self.assertIsNone(v)
104131

105132
def test_axes_merging_across_files(self):

0 commit comments

Comments
 (0)