{"record":{"id":"74dd825522d10414","repo":"apache/beam","slug":"unsupported-atomic-type-0-schemas","errorCode":null,"errorMessage":"Unsupported atomic type: {0}","messagePattern":"Unsupported atomic type: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/typehints/schemas.py","lineNumber":566,"sourceCode":"      self, fieldtype_proto: schema_pb2.FieldType) -> type:\n    if fieldtype_proto.nullable:\n      # In order to determine the inner type, create a copy of fieldtype_proto\n      # with nullable=False and pass back to typing_from_runner_api\n      base_type = schema_pb2.FieldType()\n      base_type.CopyFrom(fieldtype_proto)\n      base_type.nullable = False\n      base = self.typing_from_runner_api(base_type)\n      if base == Any:\n        return base\n      else:\n        return Optional[base]\n\n    type_info = fieldtype_proto.WhichOneof(\"type_info\")\n    if type_info == \"atomic_type\":\n      try:\n        return ATOMIC_TYPE_TO_PRIMITIVE[fieldtype_proto.atomic_type]\n      except KeyError:\n        raise ValueError(\n            \"Unsupported atomic type: {0}\".format(fieldtype_proto.atomic_type))\n    elif type_info == \"array_type\":\n      return Sequence[self.typing_from_runner_api(\n          fieldtype_proto.array_type.element_type)]\n    elif type_info == \"map_type\":\n      return Mapping[\n          self.typing_from_runner_api(fieldtype_proto.map_type.key_type),\n          self.typing_from_runner_api(fieldtype_proto.map_type.value_type)]\n    elif type_info == \"row_type\":\n      schema = fieldtype_proto.row_type.schema\n      schema_options = [\n          self.option_from_runner_api(option_proto)\n          for option_proto in schema.options\n      ]\n      field_options = {\n          field.name: [\n              self.option_from_runner_api(option_proto)\n              for option_proto in field.options","sourceCodeStart":548,"sourceCodeEnd":584,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/typehints/schemas.py#L548-L584","documentation":"`typing_from_runner_api` maps schema_pb2 atomic_type enum values to Python primitives via ATOMIC_TYPE_TO_PRIMITIVE. When the proto contains an atomic_type with no entry in that table, the KeyError is converted into this ValueError, indicating an unknown/unsupported atomic type (often from a newer protocol version).","triggerScenarios":"Decoding a FieldType proto whose atomic_type is not in ATOMIC_TYPE_TO_PRIMITIVE, e.g. proto produced by a newer Beam version or cross-language pipeline with extended atomic types.","commonSituations":"Version mismatch between runner and Python SDK; cross-language schemas using types Python doesn't map.","solutions":["Upgrade apache-beam so the enum value is known and mapped","Check which atomic_type value is present and change the schema to use a supported primitive","Align the producing SDK version with the Python SDK"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if fieldtype_proto.WhichOneof('type_info') == 'atomic_type' and fieldtype_proto.atomic_type not in schema_pb2.AtomicType.items():\n  raise ValueError(f'unsupported atomic_type {fieldtype_proto.atomic_type}')","typeGuard":null,"tryCatchPattern":"try:\n  pytype = converter.typing_from_runner_api(fieldtype)\nexcept ValueError as e:\n  log.error('upgrade apache-beam to decode this schema'); raise","preventionTips":["Pin matching SDK/runner versions","Prefer common primitives in shared schemas"],"tags":["python","schema","protobuf","type-mapping"],"backgroundTag":"unsupported-dtype","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}