diff --git a/sdks/python/apache_beam/runners/dataflow/dataflow_runner.py b/sdks/python/apache_beam/runners/dataflow/dataflow_runner.py index 4c2a10fc2cd0..0680f0392e59 100644 --- a/sdks/python/apache_beam/runners/dataflow/dataflow_runner.py +++ b/sdks/python/apache_beam/runners/dataflow/dataflow_runner.py @@ -1267,9 +1267,9 @@ def has_job(self): def _get_job_state(self): values_enum = dataflow_api.Job.CurrentStateValueValuesEnum - # TODO: Move this table to a another location. - # Ordered by the enum values. - api_jobstate_map = { + # Ordered by the enum values. Values that may be introduced in + # future versions of Dataflow API are considered UNKNOWN by the SDK. + api_jobstate_map = defaultdict(lambda: PipelineState.UNKNOWN, { values_enum.JOB_STATE_UNKNOWN: PipelineState.UNKNOWN, values_enum.JOB_STATE_STOPPED: PipelineState.STOPPED, values_enum.JOB_STATE_RUNNING: PipelineState.RUNNING, @@ -1281,7 +1281,7 @@ def _get_job_state(self): values_enum.JOB_STATE_DRAINED: PipelineState.DRAINED, values_enum.JOB_STATE_PENDING: PipelineState.PENDING, values_enum.JOB_STATE_CANCELLING: PipelineState.CANCELLING, - } + }) return (api_jobstate_map[self._job.currentState] if self._job.currentState else PipelineState.UNKNOWN)