def get_dag_params(self) -> Dict[str, Any]: """ Merges default config with dag config, sets dag_id, and extropolates dag_start_date :returns: dict of dag parameters """ try: dag_params: Dict[str, Any] = utils.merge_configs( self.dag_config, self.default_config) except Exception as err: raise Exception( f"Failed to merge config with default config, err: {err}") dag_params["dag_id"]: str = self.dag_name try: # ensure that default_args dictionary contains key "start_date" # with "datetime" value in specified timezone dag_params["default_args"][ "start_date"]: datetime = utils.get_start_date( date_value=dag_params["default_args"]["start_date"], timezone=dag_params["default_args"].get("timezone", "UTC"), ) except KeyError as err: raise Exception( f"{self.dag_name} config is missing start_date, err: {err}") return dag_params
def get_dag_params(self): """ Merges default config with dag config, sets dag_id, and extropolates dag_start_date :returns: dict of dag parameters """ try: dag_params = utils.merge_configs(self.dag_config, self.default_config) except Exception as e: raise Exception(f"Failed to merge config with default config, err: {e}") dag_params["dag_id"] = self.dag_name try: dag_params["default_args"]["start_date"] = utils.get_start_date( dag_params["default_args"]["start_date"], dag_params["default_args"].get("timezone", "UTC"), ) except KeyError as e: raise Exception(f"{self.dag_name} config is missing start_date, err: {e}") return dag_params
def test_get_start_date_bad_date(): with pytest.raises(Exception): utils.get_start_date("bad_date")
def test_get_start_date_bad_timezone(): with pytest.raises(Exception): utils.get_start_date(datetime.datetime(2018, 2, 1), "bad_timezone")
def test_get_start_date_relative_time_timezone(): expected = NOW.replace(tzinfo=CET) - datetime.timedelta(days=1) actual = utils.get_start_date("1 day", "Europe/Amsterdam") assert actual == expected
def test_get_start_date_datetime_timezone(): expected = datetime.datetime(2018, 2, 1, 0, 0, tzinfo=CET) actual = utils.get_start_date(datetime.datetime(2018, 2, 1), "Europe/Amsterdam") assert actual == expected
def test_get_start_date_relative_time_no_timezone(): expected = NOW.replace(tzinfo=UTC) - datetime.timedelta(days=1) actual = utils.get_start_date("1 day") assert actual == expected
def test_get_start_date_datetime_no_timezone(): expected = datetime.datetime(2018, 2, 1, 0, 0, tzinfo=UTC) actual = utils.get_start_date(datetime.datetime(2018, 2, 1)) assert actual == expected
def test_relative_time_timezone(self): expected = self.now.replace(tzinfo=self.cet) - datetime.timedelta(days=1) actual = utils.get_start_date("1 day", "Europe/Amsterdam") assert actual == expected
def test_relative_time_no_timezone(self): expected = self.now.replace(tzinfo=self.utc) - datetime.timedelta(days=1) actual = utils.get_start_date("1 day") assert actual == expected
def test_datetime_no_timezone(self): expected = datetime.datetime(2018, 2, 1, 0, 0, tzinfo=self.utc) actual = utils.get_start_date(datetime.datetime(2018, 2, 1)) assert actual == expected