{"record":{"id":"da7c3435ef4e13f7","repo":"apache/beam","slug":"unknown-language-language-for-identify-object-spec","errorCode":null,"errorMessage":"Unknown language {language} for {identify_object(spec)}","messagePattern":"Unknown language (.+?) for (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/yaml/yaml_transform.py","lineNumber":1348,"sourceCode":"      if spec['type'] not in known_transforms:\n        raise ValueError(\n            'Unknown type or missing provider '\n            f'for type {spec[\"type\"]} for {identify_object(spec)}')\n    return spec\n\n  def preprocess_languages(spec):\n    if spec['type'] in ('AssignTimestamps',\n                        'Combine',\n                        'Filter',\n                        'MapToFields',\n                        'Partition'):\n      language = spec.get('config', {}).get('language', 'generic')\n      new_type = spec['type'] + '-' + language\n      if known_transforms and new_type not in known_transforms:\n        if language == 'generic':\n          raise ValueError(f'Missing language for {identify_object(spec)}')\n        else:\n          raise ValueError(\n              f'Unknown language {language} for {identify_object(spec)}')\n      return dict(spec, type=new_type, name=spec.get('name', spec['type']))\n    else:\n      return spec\n\n  def validate_transform_references(spec):\n    name = spec.get('name', '')\n    transform_type = spec.get('type')\n    inputs = spec.get('input').get('input', [])\n\n    if not is_empty(inputs):\n      input_values = [inputs] if isinstance(inputs, str) else inputs\n      for input_value in input_values:\n        if input_value in (name, transform_type):\n          raise ValueError(\n              f\"Circular reference detected: Transform {name} \"\n              f\"references itself as input in {identify_object(spec)}\")\n","sourceCodeStart":1330,"sourceCodeEnd":1366,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/yaml/yaml_transform.py#L1330-L1366","documentation":"When preprocess_languages rewrites a language-sensitive transform to type-<language>, an explicitly set language that has no corresponding known transform/provider produces this ValueError. Unlike the 'generic' case, the user did specify a language — it is just not available in this environment.","triggerScenarios":"preprocess_languages on a spec whose config.language is set to a non-'generic' value (e.g. 'javascript', 'rust') where known_transforms is non-empty and '<type>-<language>' is not in known_transforms — the language's provider is not registered or the language is unsupported for that transform.","commonSituations":"Requesting a language the runner/plugins don't support (e.g. javascript on a setup with only python providers); typo in the language string; Beam version that doesn't ship that language's transform implementation.","solutions":["Correct the language string (check supported values: typically 'python', 'java', 'generic').","Register the provider for that language's transform variant.","Switch to a supported language for this transform or run in an environment that provides it."],"exampleFix":"# before\nconfig:\n  language: javascript\n# after\nconfig:\n  language: python","handlingStrategy":"validation","validationCode":"SUPPORTED_LANGS = {'generic', 'python', 'java'}\nfor t in spec.get('transforms', []):\n    lang = t.get('config', {}).get('language')\n    if lang is not None and lang not in SUPPORTED_LANGS:\n        raise ValueError(f\"unsupported language {lang} for {t.get('name')}\")","typeGuard":"def lang_supported(t, known):\n    lang = t.get('config', {}).get('language', 'generic')\n    return f\"{t['type']}-{lang}\" in known","tryCatchPattern":"try:\n    spec = expand_pipeline(spec, providers=providers)\nexcept ValueError as e:\n    if 'Unknown language' in str(e):\n        raise SystemExit(f\"{e} — use a supported language or register its provider\")\n    raise","preventionTips":["Check the language spelling against supported values","Confirm the environment registers providers for the chosen language","Fall back to 'python' or 'generic' when a language provider is unavailable"],"tags":["python","apache-beam","yaml","language","provider"],"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-20T03:17:13.778Z"}