async def get_table( dataset: DatasetName, table: TableName, session_id: Optional[str] = "", filters: List[str] = Query(default=[]), token: Optional[str] = Security(oauth), blob_settings: BlobSettings = Depends(get_blob_settings), ): await log_dep(token, session_id) """Get Geo:N:G data from a given dataset and table""" try: geong_data = get_dataframe_from_blob( dataset, table, await oauth.obo(token), blob_settings, ) except ResourceNotFoundError: raise HTTPException(status_code=500) return models.filter_data(geong_data, as_dict(filters)).to_dict(orient="split")
def read_filtered(dataset, table, **filters): """Read filtered data from the API, convert to pandas dataframe""" unfiltered = read_all(dataset=dataset, table=table) return models.filter_data(unfiltered, filters)
def test_filter_select_one_row_multiple_keys(data_multiple): result = filter_data(data_multiple, {"key0": "val00", "key1": "val10"}) assert (result.to_numpy() == np.array([["val00", "val10"]])).all()
def test_filter_non_overlapping_selection_is_empty(data_multiple): result = filter_data(data_multiple, {"key0": "val00", "key1": "val11"}) assert result.empty
def test_filter_unknown_key(single_column_row): with pytest.raises(KeyError): filter_data(single_column_row, {"unknown_key": ""})
def test_filter_no_match(single_column_row): result = filter_data(single_column_row, {"key": "missing_value"}) assert result.empty
def test_filter_match_single_element(single_column_row): result = filter_data(single_column_row, {"key": "val"}) assert result.compare(single_column_row).empty
def test_no_filter(single_column_row): result = filter_data(single_column_row, {}) assert result.compare(single_column_row).empty
def read_filtered(reader, dataset, table, **filters): """Mock for calling read_filtered() without contacting the API""" unfiltered = read_all(reader, dataset=dataset, table=table) return models.filter_data(unfiltered, filters)