{"record":{"id":"7499aa093b9ac8b9","repo":"apache/beam","slug":"unknown-enrichment-source-enrichment-handler","errorCode":null,"errorMessage":"Unknown enrichment source: {enrichment_handler}","messagePattern":"Unknown enrichment source: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/yaml/yaml_enrichment.py","lineNumber":105,"sourceCode":"    raise ValueError(\n        f\"gcp dependencies not installed. Cannot use {enrichment_handler} \"\n        f\"handler. Please install using 'pip install apache-beam[gcp]'.\")\n\n  if (enrichment_handler == 'FeastFeatureStore' and\n      not FeastFeatureStoreEnrichmentHandler):\n    raise ValueError(\n        \"FeastFeatureStore handler requires 'feast' package to be installed. \" +\n        \"Please install using 'pip install feast[gcp]' and try again.\")\n\n  handler_map = {\n      'BigQuery': BigQueryEnrichmentHandler,\n      'BigTable': BigTableEnrichmentHandler,\n      'FeastFeatureStore': FeastFeatureStoreEnrichmentHandler,\n      'VertexAIFeatureStore': VertexAIFeatureStoreEnrichmentHandler\n  }\n\n  if enrichment_handler not in handler_map:\n    raise ValueError(f\"Unknown enrichment source: {enrichment_handler}\")\n\n  handler = handler_map[enrichment_handler](**handler_config)\n  return pcoll | Enrichment(source_handler=handler, timeout=timeout)\n","sourceCodeStart":87,"sourceCodeEnd":109,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/yaml/yaml_enrichment.py#L87-L109","documentation":"enrichment_transform looks up the handler name in a fixed handler_map of known enrichment sources (BigQuery, BigTable, FeastFeatureStore, VertexAIFeatureStore). If the requested enrichment_handler is not one of these keys, the transform raises ValueError listing nothing else valid, because enrichment only supports these built-in sources.","triggerScenarios":"Calling enrichment_transform with enrichment_handler set to any string not in handler_map, e.g. a typo like 'Bigquery', 'bigquery', or an unsupported source like 'RedisFeatureStore'.","commonSituations":"Typos or wrong casing in the YAML 'handler'/'source' field; copying a handler name from another framework; assuming arbitrary feature stores are supported.","solutions":["Use exactly one of: 'BigQuery', 'BigTable', 'FeastFeatureStore', 'VertexAIFeatureStore' (case-sensitive).","Fix casing/typos in the handler name in the YAML transform config.","If a custom source is needed, implement it via the Enrichment transform directly in Python rather than the YAML wrapper."],"exampleFix":"// before\n- type: Enrichment\n  source: bigquery\n// after\n- type: Enrichment\n  source: BigQuery","handlingStrategy":"validation","validationCode":"VALID = {'BigQuery', 'BigTable', 'FeastFeatureStore', 'VertexAIFeatureStore'}\nassert handler in VALID, f\"Unknown enrichment source: {handler}; expected one of {sorted(VALID)}\"","typeGuard":null,"tryCatchPattern":"try:\n    enrichment_transform(pcoll, handler, config)\nexcept ValueError as e:\n    if str(e).startswith('Unknown enrichment source'):\n        log_valid_handlers({'BigQuery','BigTable','FeastFeatureStore','VertexAIFeatureStore'})","preventionTips":["Copy handler names exactly (case-sensitive) from the Beam YAML docs.","Validate YAML transforms with beam_yaml linters/tests before submitting jobs.","Keep a shared constants file for valid handler names."],"tags":["python","apache-beam","yaml","invalid-enum","config"],"backgroundTag":"invalid-enum-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}