def test_data_frequency_total_ordering(valid_frequencies): assert len(valid_frequencies) == 10 for idx_1, f1 in enumerate(valid_frequencies): for idx_2, f2 in enumerate(valid_frequencies): freq1 = DataFrequency(frequency=f1) freq2 = DataFrequency(frequency=f2) if idx_1 > idx_2: assert freq1 > freq2 if idx_1 < idx_2: assert freq1 < freq2 if idx_1 == idx_2: assert freq1 == freq2 if idx_1 != idx_2: assert freq1 != freq2 if idx_1 <= idx_2: assert freq1 <= freq2 if idx_1 >= idx_2: assert freq1 >= freq2
def data_frequency(self, dataset_file: DatasetFile) -> DataFrequency: """ Get the data frequency from config :param dataset_file: The dataset file to use :return: the desired data frequency """ frequency = self.config_item(dataset_file, "Dataset.DataFrequency") return DataFrequency(frequency)
def test_dataset_frequency_invalid(): with pytest.raises(ValueError) as ex: DataFrequency("1y") assert ( str(ex.value) == "Invalid frequency. Frequency 1y does not match ^Y|M|W|D|H|30min|15min|10min|5min|1min$" )
def test_dataset_create_noop_errors(configuration_data, forecast_stub): config = Config() config.config = configuration_data dataset_file = DatasetFile("RetailDemandTRM.csv", "some_bucket") dataset = config.dataset(dataset_file) configured_dataset = configuration_data.get("RetailDemandTRM").get( "Datasets")[2] params = { "DatasetType": configured_dataset.get("DatasetType"), "DatasetName": "RetailDemandTRM", "Domain": configured_dataset.get("Domain"), "Schema": configured_dataset.get("Schema"), "DataFrequency": configured_dataset.get("DataFrequency"), } create_params = deepcopy(params) create_params["Tags"] = [{"Key": "SolutionId", "Value": "SOL0123"}] forecast_stub.add_response( "describe_dataset", params, ) forecast_stub.add_response("create_dataset", {"DatasetArn": dataset.arn}, create_params) forecast_stub.add_response( "describe_dataset", params, ) dataset.cli = forecast_stub.client dataset.create() # clobber the values to trigger some exceptions # this is likey caused by a user changing configuration unexpectedly dataset._dataset_type = DatasetType.RELATED_TIME_SERIES dataset._dataset_domain = DatasetDomain.WORK_FORCE dataset._data_frequency = DataFrequency("1min") dataset._dataset_schema = {} with pytest.raises(ValueError) as excinfo: dataset.create() assert "dataset type" in str(excinfo.value) assert "dataset domain" in str(excinfo.value) assert "data frequency" in str(excinfo.value) assert "dataset schema" in str(excinfo.value)
def test_dataset_create_noop_errors(configuration_data, forecast_stub): config = Config() config.config = configuration_data dataset_file = DatasetFile("RetailDemandTRM.csv", "some_bucket") dataset = config.dataset(dataset_file) configured_dataset = configuration_data.get("RetailDemandTRM").get("Datasets")[2] for i in range(0, 2): forecast_stub.add_response( "describe_dataset", { "DatasetType": configured_dataset.get("DatasetType"), "DatasetName": "RetailDemandTRM", "Domain": configured_dataset.get("Domain"), "Schema": configured_dataset.get("Schema"), "DataFrequency": configured_dataset.get("DataFrequency"), }, ) # should not call anything dataset.cli = forecast_stub.client dataset.create() # clobber the values to trigger some exceptions # this is likey caused by a user changing configuration unexpectedly dataset._dataset_type = DatasetType.RELATED_TIME_SERIES dataset._dataset_domain = DatasetDomain.WORK_FORCE dataset._data_frequency = DataFrequency("1min") dataset._dataset_schema = {} with pytest.raises(ValueError) as excinfo: dataset.create() assert "dataset type" in str(excinfo.value) assert "dataset domain" in str(excinfo.value) assert "data frequency" in str(excinfo.value) assert "dataset schema" in str(excinfo.value)
def test_dataset_frequency_str(valid_frequencies): for frequency in valid_frequencies: freq = DataFrequency(frequency=frequency) assert str(freq) == frequency
def test_dataset_frequency_repr(valid_frequencies): for frequency in valid_frequencies: freq = DataFrequency(frequency=frequency) assert repr(freq) == f"DataFrequency(frequency='{frequency}')"
def test_dataset_frequency_valid(valid_frequencies): for valid_frequency in valid_frequencies: frequency = DataFrequency(valid_frequency) assert frequency == valid_frequency
def test_invalid_data_frequency_comparison(): frequency = DataFrequency("1min") invalid = "not_valid" with pytest.raises(ValueError): frequency > invalid