def test_radar_request_site_current_sweep_vol_v_hdf5_single(): """ Example for testing radar sites single current SWEEP_VOL, this time in OPERA HDF5 (ODIM_H5) format. """ request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_VOL_VELOCITY_H, start_date=DwdRadarDate.CURRENT, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, subset=DwdRadarDataSubset.SIMPLE, elevation=1, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") assert len(results) <= 1 assert "vradh_01" in results[0].url buffer = results[0].data hdf = h5py.File(buffer, "r") assert hdf["/how"].attrs.get("scan_count") == 10 assert hdf["/dataset1/how"].attrs.get("scan_index") == 2
def test_radar_request_composite_historic_fx_yesterday(): """ Example for testing radar/composite FX for a specific date. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.FX_REFLECTIVITY, start_date=timestamp, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") # Verify number of results. assert len(results) == 25 # Verify data. payload = results[0].data.getvalue() # TODO: Use wradlib to parse binary format. # https://docs.wradlib.org/en/stable/notebooks/radolan/radolan_format.html date_time = request.start_date.strftime("%d%H%M") month_year = request.start_date.strftime("%m%y") header = ( f"FX{date_time}10000{month_year}BY.......VS 3SW 2.12.0PR E-01INT 5GP 900x 900VV 000MF 00000002MS " # noqa:E501,B950 f"..<{station_reference_pattern_unsorted}>") assert re.match(bytes(header, encoding="ascii"), payload[:160])
def test_radar_request_composite_historic_radolan_rw_yesterday(): """ Verify acquisition of radar/composite/radolan_rw data works when using a specific date. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.RW_REFLECTIVITY, start_date=timestamp, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") payload = results[0].data.getvalue() # Verify data. # TODO: Use wradlib to parse binary format. # https://docs.wradlib.org/en/stable/notebooks/radolan/radolan_format.html date_time = request.start_date.strftime("%d%H%M") month_year = request.start_date.strftime("%m%y") header = ( f"RW{date_time}10000{month_year}BY.......VS 3SW ......PR E-01INT 60GP 900x 900MF 00000001MS " # noqa:E501,B950 f"..<{station_reference_pattern_unsorted}>" # noqa:E501,B950 ) assert re.match(bytes(header, encoding="ascii"), payload[:160])
def test_radar_request_site_historic_dx_yesterday(): """ Verify acquisition of radar/site/DX data works when using a specific date. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.DX_REFLECTIVITY, start_date=timestamp, site=DwdRadarSite.BOO, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") buffer = results[0].data payload = buffer.getvalue() # Verify data. # TODO: Use wradlib to parse binary format. # https://docs.wradlib.org/en/stable/notebooks/radolan/radolan_format.html timestamp_aligned = round_minutes(timestamp, 5) date_time = timestamp_aligned.strftime("%d%H%M") month_year = timestamp_aligned.strftime("%m%y") header = f"DX{date_time}10132{month_year}BY.....VS 2CO0CD4CS0EP0.80.80.80.80.80.80.80.8MS" # noqa:E501,B950 assert re.match(bytes(header, encoding="ascii"), payload)
def test_radar_request_site_latest_dx_reflectivity(): """ Example for testing radar SITES latest. """ request = DwdRadarValues( parameter=DwdRadarParameter.DX_REFLECTIVITY, start_date=DwdRadarDate.LATEST, site=DwdRadarSite.BOO, ) buffer = next(request.query())[1] requested_header = wrl.io.read_radolan_header(buffer) requested_attrs = wrl.io.radolan.parse_dx_header(requested_header) # Verify data. timestamp_aligned = round_minutes(datetime.utcnow(), 5) assert timestamp_aligned.strftime( "%m%y") == requested_attrs["datetime"].strftime("%m%y") attrs = { "producttype": "DX", "version": " 2", "cluttermap": 0, "dopplerfilter": 4, "statfilter": 0, "elevprofile": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8], "message": "", } skip_attrs = ["radarid", "datetime", "bytes"] for attr in skip_attrs: requested_attrs.pop(attr, None) assert requested_attrs == attrs
def test_radar_request_radolan_cdc_most_recent(): """ Example for testing radar sites most recent RADOLAN_CDC. """ request = DwdRadarValues( parameter=DwdRadarParameter.RADOLAN_CDC, resolution=DwdRadarResolution.DAILY, start_date=DwdRadarDate.MOST_RECENT, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") assert len(results) == 1 payload = results[0].data.getvalue() # Verify data. # TODO: Use wradlib to parse binary format. # https://docs.wradlib.org/en/stable/notebooks/radolan/radolan_format.html date_time = request.start_date.strftime("%d%H%M") month_year = request.start_date.strftime("%m%y") header = ( f"SF{date_time}10000{month_year}BY.......VS 3SW ......PR E-01INT1440GP 900x 900MS " # noqa:E501,B950 f"..<{station_reference_pattern_unsorted}>" # noqa:E501,B950 ) assert re.match(bytes(header, encoding="ascii"), payload[:180])
def test_radar_request_site_historic_pe_bufr(): """ Verify acquisition of radar/site/PE_ECHO_TOP data works when using a specific date. This time, we will use the BUFR data format. """ # Acquire data from yesterday at this time. timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.PE_ECHO_TOP, start_date=timestamp, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.BUFR, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") buffer = results[0].data payload = buffer.getvalue() # Verify data. header = b"\x00\x00\x00\x00\x00...BUFR" assert re.match(header, payload), payload[:20] # Read BUFR file. decoder = pybufrkit.decoder.Decoder() decoder.process(payload, info_only=True)
def test_radar_request_site_historic_sweep_vol_v_hdf5_timerange(): """ Example for testing radar/site sweep-precipitation for a specific date, this time in HDF5 format, with timerange. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_VOL_VELOCITY_H, start_date=timestamp, end_date=timedelta(hours=0.5), site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, subset=DwdRadarDataSubset.SIMPLE, ) # Verify number of elements. results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") assert len(results) == 60 hdf = h5py.File(results[0].data, "r") assert hdf["/how"].attrs.get("scan_count") == 10 assert hdf["/dataset1/how"].attrs.get("scan_index") == 1 timestamp = round_minutes(request.start_date, 5) assert hdf["/what"].attrs.get("date") == bytes( timestamp.strftime("%Y%m%d"), encoding="ascii") assert hdf["/what"].attrs.get("time").startswith( bytes(timestamp.strftime("%H%M"), encoding="ascii"))
def test_radar_request_site_historic_pe_timerange(fmt): """ Verify acquisition of radar/site/PE_ECHO_TOP data works when using date ranges. The proof will use these parameters to acquire data: - start_date: Yesterday at this time - end_date: start_date + 1 hour This time, we will test both the BINARY and BUFR data format. """ start_date = datetime.utcnow() - timedelta(days=1) end_date = timedelta(hours=1) request = DwdRadarValues( parameter=DwdRadarParameter.PE_ECHO_TOP, start_date=start_date, end_date=end_date, site=DwdRadarSite.BOO, fmt=fmt, ) assert request.start_date.minute % 5 == 0 # Verify number of elements. results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") assert len(results) >= 1
def test_radar_request_radolan_cdc_historic_daily_data(): """ Verify data acquisition for RADOLAN_CDC/daily/historical. """ request = DwdRadarValues( parameter=DwdRadarParameter.RADOLAN_CDC, resolution=DwdRadarResolution.DAILY, period=DwdRadarPeriod.HISTORICAL, start_date="2019-08-08 00:50:00", ) assert request == DwdRadarValues( parameter=DwdRadarParameter.RADOLAN_CDC, resolution=DwdRadarResolution.DAILY, period=DwdRadarPeriod.HISTORICAL, start_date=datetime(year=2019, month=8, day=8, hour=0, minute=50, second=0), ) radolan_daily_backup_url = ( "https://github.com/earthobservations/testdata/raw/main/" "opendata.dwd.de/climate_environment/CDC/grids_germany/" "daily/radolan/historical/bin/2019/radolan_daily_201908080050") payload = requests.get(radolan_daily_backup_url) radolan_hourly = BytesIO(payload.content) radolan_hourly_test = next(request.query()).data assert radolan_hourly.getvalue() == radolan_hourly_test.getvalue()
def test_radar_request_site_historic_pe_binary_yesterday(): """ Verify acquisition of radar/site/PE_ECHO_TOP data works when using a specific date. This time, we will use the BINARY data format. """ # Acquire data from yesterday at this time. timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.PE_ECHO_TOP, start_date=timestamp, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.BINARY, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") buffer = results[0].data # Verify data. requested_header = wrl.io.read_radolan_header(buffer) date_time = request.start_date.strftime("%d%H") month_year = request.start_date.strftime("%m%y") header = ( f"PE{date_time}..10132{month_year}BY ....?VS 1LV12 1.0 2.0 3.0 4.0 5.0 " f"6.0 7.0 8.0 9.0 10.0 11.0 12.0CO0CD0CS0ET 5.0FL....MS") assert re.match(header, requested_header)
def test_radar_request_composite_latest_rw_reflectivity(): """ Example for testing radar COMPOSITES (RADOLAN) latest. """ request = DwdRadarValues( parameter=DwdRadarParameter.RW_REFLECTIVITY, start_date=DwdRadarDate.LATEST, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") buffer = results[0][1] payload = buffer.getvalue() month_year = datetime.utcnow().strftime("%m%y") header = ( f"RW......10000{month_year}" f"BY16201..VS 3SW ......PR E-01INT 60GP 900x 900MF 00000001MS " f"..<{station_reference_pattern_unsorted}>") assert re.match(bytes(header, encoding="ascii"), payload[:160])
def radar_hdf5_example(): log.info("Acquiring radar sweep data in HDF5") request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_PCP_VELOCITY_H, start_date=DwdRadarDate.MOST_RECENT, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, subset=DwdRadarDataSubset.SIMPLE, ) for item in request.query(): # Decode data using wradlib. log.info( f"Parsing radar data for {request.site} at '{item.timestamp}'") data = wrl.io.read_opera_hdf5(item.data) # Output debug information. radar_info(data) # Plot and display data. plot(data) if "PYTEST_CURRENT_TEST" not in os.environ: plt.show()
def test_radar_request_site_historic_sweep_pcp_v_hdf5_yesterday(): """ Example for testing radar/site sweep-precipitation for a specific date, this time in HDF5 format. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_PCP_VELOCITY_H, start_date=timestamp, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, subset=DwdRadarDataSubset.SIMPLE, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") # Verify number of elements. assert len(results) == 1 # Get payload. buffer = results[0][1] payload = buffer.getvalue() # Verify data. assert payload.startswith(b"\x89HDF\r\n") # Verify more details. # h5dump ras07-stqual-pcpng01_sweeph5onem_vradh_00-2020093000403400-boo-10132-hd5 hdf = h5py.File(buffer, "r") assert hdf["/how/radar_system"] is not None assert hdf["/how"].attrs.get("task") == b"Sc_Pcp-NG-01_BOO" assert hdf["/what"].attrs.get("source") == b"WMO:10132,NOD:deboo" assert hdf["/how"].attrs.get("scan_count") == 1 assert hdf["/dataset1/how"].attrs.get("scan_index") == 1 assert hdf["/dataset1/data1/data"].shape == (360, 600) timestamp = round_minutes(request.start_date, 5) assert hdf["/what"].attrs.get("date") == bytes( timestamp.strftime("%Y%m%d"), encoding="ascii") assert hdf["/what"].attrs.get("time").startswith( bytes(timestamp.strftime("%H%M"), encoding="ascii"))
def test_radar_request_site_historic_dx_timerange(): """ Verify acquisition of radar/site/DX data works when using a specific date, with timerange. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.DX_REFLECTIVITY, start_date=timestamp, end_date=timedelta(hours=0.5), site=DwdRadarSite.BOO, ) # Verify number of elements. results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") assert len(results) == 6 buffer = results[0].data # Verify data. requested_header = wrl.io.read_radolan_header(buffer) requested_attrs = wrl.io.radolan.parse_dx_header(requested_header) timestamp_aligned = round_minutes(timestamp, 5) assert timestamp_aligned.strftime( "%m%y") == requested_attrs["datetime"].strftime("%m%y") assert timestamp_aligned.strftime( "%d%H%M") == requested_attrs["datetime"].strftime("%d%H%M") attrs = { "producttype": "DX", "version": " 2", "cluttermap": 0, "dopplerfilter": 4, "statfilter": 0, "elevprofile": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8], "message": "", } skip_attrs = ["bytes", "radarid", "datetime"] for attr in skip_attrs: requested_attrs.pop(attr, None) assert requested_attrs == attrs
def test_radar_request_radvor_rq_timerange(): """ Verify acquisition of radar/radvor/rq data works when using a specific date. Querying for 45 minutes worth of data should yield 9 results. https://opendata.dwd.de/weather/radar/radvor/rq/ """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.RQ_REFLECTIVITY, start_date=timestamp, end_date=timedelta(minutes=3 * 15), ) # Verify number of elements. results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") assert len(results) == 3 * 3 requested_header = wrl.io.read_radolan_header(results[0].data) requested_attrs = wrl.io.parse_dwd_composite_header(requested_header) del requested_attrs["radarlocations"] quant = requested_attrs.pop("quantification") assert quant in (0, 1) attrs = { "producttype": "RQ", "datetime": request.start_date.to_pydatetime(), "formatversion": 3, "datasize": 1620000, "maxrange": "150 km", "precision": 0.1, "intervalseconds": 3600, "nrow": 900, "ncol": 900, "predictiontime": 0, "moduleflag": 8, "radarid": "10000", "radolanversion": "2.29.1", } assert requested_attrs == attrs
def get_current_precipitation(latitude, longitude): global local_radolan_idx global observer global last_radolan_rain_date if observer is None or observer.latitude != latitude or observer.longitude != longitude: set_location(latitude, longitude) # RY # qualitätsgeprüfte Radardaten nach Abschattungskorrektur # und nach Anwendung der verfeinerten Z-R-Beziehungen # in Niederschlagshöhen umgerechnet # # Einheit: 1/100mm # zeitliche Auflösung: 5min radolan = DwdRadarValues( parameter=DwdRadarParameter.RY_REFLECTIVITY, start_date=DwdRadarDate.LATEST, ) ry_latest = next(radolan.query()) data, attributes = wrl.io.read_radolan_composite(ry_latest.data) # local_radolan_idx selects the data within a 10km radius local_data = data[tuple(local_radolan_idx.T.tolist())] # Remove values with missing data clean_local_data = np.ma.masked_equal(local_data, attributes['nodataflag']) # Remove values below the precision, the precision is 0.083 mm/h clean_local_data = np.ma.masked_less_equal(clean_local_data, attributes['precision']) if last_radolan_rain_date is None or attributes['datetime'] - last_radolan_rain_date > datetime.timedelta(minutes=10): # initially and after a period of no rain: # at least 5 measurements required to detect rain threshold = 5 else: # when it is raining: lower threshold to lower detection jitter threshold = 2 is_raining = np.ma.count(clean_local_data) >= threshold if is_raining: last_radolan_rain_date = attributes['datetime'] else: last_radolan_rain_date = None return is_raining
def test_radar_request_site_without_site(): """ Verify requesting site data without site croaks. """ with pytest.raises(ValueError) as excinfo: request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_PCP_VELOCITY_H, start_date=DwdRadarDate.LATEST, ) list(request.query()) assert excinfo.typename == "ValueError" assert str(excinfo.value).startswith("Argument 'site' is missing")
def test_radar_request_site_recent_sweep_vol_v_hdf5(): """ Example for testing radar sites SWEEP_VOL with timerange. """ import h5py request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_VOL_VELOCITY_H, start_date=datetime.utcnow() - timedelta(minutes=20), end_date=datetime.utcnow(), site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, subset=DwdRadarDataSubset.SIMPLE, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available") # Verify number of results. assert len(results) >= 20 buffer = results[0].data payload = buffer.getvalue() # Verify data. assert payload.startswith(b"\x89HDF\r\n") # Verify more details. # wddump ras07-stqual-vol5minng01_sweeph5onem_vradh_00-2020092917055800-boo-10132-hd5 hdf = h5py.File(buffer, "r") assert hdf["/how/radar_system"] is not None assert hdf["/how"].attrs.get("task") == b"Sc_Vol-5Min-NG-01_BOO" assert hdf["/what"].attrs.get("source") == b"WMO:10132,NOD:deboo" assert hdf["/how"].attrs.get("scan_count") == 10 assert hdf["/dataset1/how"].attrs.get("scan_index") == 1 assert hdf["/dataset1/data1/data"].shape == (360, 720) # Verify that the second file is the second scan / elevation level. buffer = results[1].data hdf = h5py.File(buffer, "r") assert hdf["/how"].attrs.get("scan_count") == 10 assert hdf["/dataset1/how"].attrs.get("scan_index") == 1
def test_radar_request_site_latest_sweep_pcp_v_hdf5_wrong_parameters(): """ Verify requesting HDF5 data without RadarDataFormat croaks. """ with pytest.raises(ValueError) as excinfo: request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_PCP_VELOCITY_H, site=DwdRadarSite.BOO, start_date=DwdRadarDate.CURRENT, ) list(request.query()) assert excinfo.typename == "ValueError" assert str(excinfo.value).startswith("Argument 'format' is missing")
def test_radar_request_site_historic_pe_wrong_parameters(): """ Verify acquisition of radar/site/PE_ECHO_TOP data croaks when omitting RadarDataFormat. """ with pytest.raises(ValueError) as excinfo: request = DwdRadarValues( parameter=DwdRadarParameter.PE_ECHO_TOP, site=DwdRadarSite.BOO, start_date=datetime.utcnow(), ) next(request.query()) assert excinfo.typename == "ValueError" assert str(excinfo.value).startswith("Argument 'format' is missing")
def test_radar_request_hdf5_without_subset(): """ Verify requesting HDF5 data without "subset" croaks. """ with pytest.raises(ValueError) as excinfo: request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_PCP_VELOCITY_H, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, start_date=DwdRadarDate.MOST_RECENT, ) list(request.query()) assert excinfo.typename == "ValueError" assert str(excinfo.value).startswith("Argument 'subset' is missing")
def test_radar_request_site_latest_sweep_pcp_v_hdf5(): """ Verify requesting latest HDF5 data croaks. """ with pytest.raises(ValueError) as excinfo: request = DwdRadarValues( parameter=DwdRadarParameter.SWEEP_PCP_VELOCITY_H, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.HDF5, start_date=DwdRadarDate.LATEST, ) list(request.query()) assert excinfo.typename == "ValueError" assert str(excinfo.value).startswith("HDF5 data has no '-latest-' files")
def test_radar_request_radolan_cdc_latest(time_resolution): """ Verify requesting latest RADOLAN_CDC croaks. """ with pytest.raises(ValueError) as excinfo: request = DwdRadarValues( parameter=DwdRadarParameter.RADOLAN_CDC, resolution=time_resolution, start_date=DwdRadarDate.LATEST, ) list(request.query()) assert excinfo.typename == "ValueError" assert str( excinfo.value).startswith("RADOLAN_CDC data has no '-latest-' files")
def test_radar_request_composite_historic_radolan_rw_timerange(): """ Verify acquisition of radar/composite/radolan_rw data works when using a specific date, with timerange. """ timestamp = datetime.utcnow() - timedelta(days=1) request = DwdRadarValues( parameter=DwdRadarParameter.RW_REFLECTIVITY, start_date=timestamp, end_date=timedelta(hours=3), ) results = list(request.query()) # Verify number of results. assert len(results) == 3
def test_radar_request_site_latest_dx_reflectivity(): """ Example for testing radar SITES latest. """ request = DwdRadarValues( parameter=DwdRadarParameter.DX_REFLECTIVITY, start_date=DwdRadarDate.LATEST, site=DwdRadarSite.BOO, ) buffer = next(request.query())[1] payload = buffer.getvalue() timestamp_aligned = round_minutes(datetime.utcnow(), 5) month_year = timestamp_aligned.strftime("%m%y") header = f"DX......10132{month_year}BY.....VS 2CO0CD4CS0EP0.80.80.80.80.80.80.80.8MS" # noqa:E501,B950 assert re.match(bytes(header, encoding="ascii"), payload[:160])
def test_radar_request_radolan_cdc_current(resolution): """ Verify data acquisition for current RADOLAN_CDC/daily+hourly. Remark: More often than not, this data is not available when looking at CURRENT. """ request = DwdRadarValues( parameter=DwdRadarParameter.RADOLAN_CDC, start_date=DwdRadarDate.CURRENT, resolution=resolution, ) results = list(request.query()) if len(results) == 0: raise pytest.skip("Data currently not available")
def test_radar_request_composite_latest_rx_reflectivity(): """ Example for testing radar COMPOSITES latest. """ request = DwdRadarValues( parameter=DwdRadarParameter.RX_REFLECTIVITY, start_date=DwdRadarDate.LATEST, ) buffer = next(request.query())[1] payload = buffer.getvalue() month_year = datetime.utcnow().strftime("%m%y") header = ( f"RX......10000{month_year}BY 8101..VS 3SW ......PR E\\+00INT 5GP 900x 900MS " f"..<{station_reference_pattern_unsorted}>") assert re.match(bytes(header, encoding="ascii"), payload[:160])
def test_radar_request_radolan_cdc_future(caplog): """ Verify that ``DWDRadarRequest`` will properly emit log messages when hitting empty results. This time for RADOLAN_CDC data. """ request = DwdRadarValues( parameter=DwdRadarParameter.RADOLAN_CDC, resolution="daily", period=DwdRadarPeriod.RECENT, start_date="2099-01-01 00:50:00", ) results = list(request.query()) assert results == [] assert "WARNING" in caplog.text assert "No radar file found" in caplog.text
def test_radar_request_site_historic_pe_future(caplog): """ Verify that ``DWDRadarRequest`` will properly emit log messages when hitting empty results. This time for PE_ECHO_TOP data. """ request = DwdRadarValues( parameter=DwdRadarParameter.PE_ECHO_TOP, site=DwdRadarSite.BOO, fmt=DwdRadarDataFormat.BUFR, start_date="2099-01-01 00:00:00", ) results = list(request.query()) assert results == [] assert "WARNING" in caplog.text assert "No radar file found" in caplog.text