{"record":{"id":"8bfbc988e1d7bfc3","repo":"apache/beam","slug":"f-unknown-provider-type-type-at-line-safelineloader-get-line","errorCode":null,"errorMessage":"f'Unknown provider type: {type} at line {SafeLineLoader.get_line(spec)}.'","messagePattern":"f'Unknown provider type: (.+?) at line (.+?)\\.'","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/yaml/yaml_provider.py","lineNumber":295,"sourceCode":"          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:\n      raise NotImplementedError(\n          f'Unknown provider type: {type} '\n          f'at line {SafeLineLoader.get_line(spec)}.')\n\n  @classmethod\n  def register_provider_type(cls, type_name):\n    def apply(constructor):\n      cls._provider_types[type_name] = constructor\n      return constructor\n\n    return apply\n\n\n@ExternalProvider.register_provider_type('javaJar')\ndef java_jar(urns, provider_base_path, jar: str):\n  if not os.path.exists(jar):\n    parsed = urllib.parse.urlparse(jar)\n    if not parsed.scheme or not parsed.netloc:\n      raise ValueError(f'Invalid path or url: {jar}')","sourceCodeStart":277,"sourceCodeEnd":313,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/yaml/yaml_provider.py#L277-L313","documentation":"provider_from_spec falls through to NotImplementedError when spec['type'] is not present in ExternalProvider._provider_types, i.e. no provider type was registered under that name (registration happens via @ExternalProvider.register_provider_type). The message includes the unknown type and its YAML line.","triggerScenarios":"Using type: dockerJar / type: kubernetes or any misspelled/unregistered provider type in a YAML provider spec; using a Beam version that lacks a newer provider type; custom provider plugins not imported before parsing.","commonSituations":"Typos in provider type names ('python' vs 'Python'); docs referencing provider types from a newer Beam release; third-party providers whose module was never imported.","solutions":["Correct the 'type' value to a registered name (javaJar, mavenJar, python, docker, remote, etc.).","Upgrade apache-beam if the provider type was added in a newer release.","Ensure any custom provider module that calls register_provider_type is imported before the pipeline is parsed."],"exampleFix":"# before\n- type: java_jar\n  config:\n    jar: my.jar\n# after\n- type: javaJar\n  config:\n    jar: my.jar","handlingStrategy":"validation","validationCode":"from apache_beam.yaml.yaml_provider import ExternalProvider\nif spec.get('type') not in ExternalProvider._provider_types:\n    raise SystemExit(f\"Unknown provider type: {spec.get('type')!r}; known: {sorted(ExternalProvider._provider_types)}\")","typeGuard":"def is_known_provider_type(name) -> bool:\n    from apache_beam.yaml.yaml_provider import ExternalProvider\n    return name in ExternalProvider._provider_types","tryCatchPattern":"try:\n    provider = ExternalProvider.provider_from_spec(src, spec)\nexcept NotImplementedError as e:\n    log.error('%s — check the provider type name and Beam version', e)\n    raise","preventionTips":["Copy provider type names exactly (javaJar, mavenJar, python) — they are camelCase.","Check the provider types available in your installed apache-beam version.","Import custom provider plugin modules before parsing the pipeline."],"tags":["python","apache-beam","yaml","provider","unknown-type"],"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-14T21:17:11.552Z"}