{"record":{"id":"80fdb9ff889a3a66","repo":"apache/beam","slug":"unexpected-parameters-in-provider-of-type-type-at-line","errorCode":null,"errorMessage":"Unexpected parameters in provider of type {type} at line {SafeLineLoader.get_line(spec)}: {extra_params}","messagePattern":"Unexpected parameters in provider of type (.+?) at line (.+?): (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/yaml/yaml_provider.py","lineNumber":276,"sourceCode":"        external.ImplicitSchemaPayloadBuilder(args).payload(),\n        self._service)\n\n  @classmethod\n  def provider_from_spec(cls, source_path, spec):\n    from apache_beam.yaml.yaml_transform import SafeLineLoader\n    for required in ('type', 'transforms'):\n      if required not in spec:\n        raise ValueError(\n            f'Missing {required} in provider '\n            f'at line {SafeLineLoader.get_line(spec)}')\n    urns = SafeLineLoader.strip_metadata(spec['transforms'])\n    type = spec['type']\n    config = SafeLineLoader.strip_metadata(spec.get('config', {}))\n    extra_params = set(SafeLineLoader.strip_metadata(spec).keys()) - {\n        'transforms', 'type', 'config'\n    }\n    if extra_params:\n      raise ValueError(\n          f'Unexpected parameters in provider of type {type} '\n          f'at line {SafeLineLoader.get_line(spec)}: {extra_params}')\n    if config.get('version', None) == 'BEAM_VERSION':\n      config['version'] = beam_version\n    if type in cls._provider_types:\n      try:\n        constructor = cls._provider_types[type]\n        if 'provider_base_path' in inspect.signature(constructor).parameters:\n          config['provider_base_path'] = source_path\n        result = constructor(urns, **config)\n        if not hasattr(result, 'to_json'):\n          result.to_json = lambda: spec\n        return result\n      except Exception as exn:\n        raise ValueError(\n            f'Unable to instantiate provider of type {type} '\n            f'at line {SafeLineLoader.get_line(spec)}: {exn}') from exn\n    else:","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/yaml/yaml_provider.py#L258-L294","documentation":"provider_from_spec (yaml_provider.py:276) whitelists the keys 'transforms', 'type' and 'config' in a provider spec; any other key triggers a ValueError listing the extra parameters and the spec's line number. This catches typos and misplaced options early instead of silently ignoring them.","triggerScenarios":"A provider spec containing keys outside {type, transforms, config}, e.g. 'jars:', 'version:' placed at provider level, or a misspelled 'configs'.","commonSituations":"Users moving config options up a level out of 'config'; copying examples for other provider syntaxes; typos like 'transform' instead of 'transforms'.","solutions":["Move unexpected keys inside the 'config:' sub-mapping of the provider spec.","Fix typos in 'type'/'transforms'/'config' key names.","Remove keys that are not part of the provider spec schema at the reported line."],"exampleFix":"# before\n- type: javaJar\n  jar: my.jar\n  transforms: {...}\n# after\n- type: javaJar\n  config:\n    jar: my.jar\n  transforms: {...}","handlingStrategy":"validation","validationCode":"ALLOWED = {'type', 'transforms', 'config'}\nextra = set(spec) - ALLOWED\nif extra:\n    raise SystemExit(f'Move unexpected provider keys into config: {extra}')","typeGuard":null,"tryCatchPattern":"try:\n    provider = ExternalProvider.provider_from_spec(src, spec)\nexcept ValueError as e:\n    log.error('Provider spec rejected: %s', e)\n    raise","preventionTips":["Put all provider-specific options under the config: key.","Use a YAML editor with schema validation for Beam pipeline specs.","Double-check key spellings ('transforms', not 'transform')."],"tags":["python","apache-beam","yaml","provider","validation"],"backgroundTag":"schema-validation-failed","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T21:17:11.552Z"}