in source/forecast-shared/shared/Predictor/predictor.py [0:0]
def export(self, dataset_file: DatasetFile) -> Export:
"""
Export/ check on a predictor backtest import
:param dataset_file: The dataset file last updated that generated this predictor
:return: Status
"""
if not self.arn:
raise ValueError(
"Predictor does not yet exist - cannot perform backtest export."
)
# Build the export arn
export_arn = self.arn.replace(":predictor/", ":predictor-backtest-export-job/")
if self.is_auto_predictor:
export_name = f"export_{self._dataset_group.dataset_group_name}_auto_{self._latest_timestamp()}"
export_arn = export_arn[:-27]
else:
export_name = f"export_{self._dataset_group.dataset_group_name}_{self._latest_timestamp()}"
export_arn = export_arn + f"/{export_name}"
past_export = Export()
try:
past_status = self.cli.describe_predictor_backtest_export_job(
PredictorBacktestExportJobArn=export_arn
)
past_export.status = Status[past_status.get("Status")]
except self.cli.exceptions.ResourceInUseException as excinfo:
logger.debug(
"Predictor backtest export %s is updating: %s"
% (export_name, str(excinfo))
)
except self.cli.exceptions.ResourceNotFoundException:
logger.info("Creating predictor backtest export %s" % export_name)
self.cli.create_predictor_backtest_export_job(
PredictorArn=self.arn,
PredictorBacktestExportJobName=export_name,
Destination={
"S3Config": {
"Path": f"s3://{dataset_file.bucket}/exports/{export_name}",
"RoleArn": environ.get("FORECAST_ROLE"),
}
},
)
past_export.status = Status.CREATE_PENDING
logger.debug(
"Predictor backtest export status for %s is %s"
% (export_name, str(past_export.status))
)
self.set_user_tags(resource_arn=export_arn)
return past_export