apache/beam · error · ValueError

Only one of extra_args or append_args may be provided

Error message

Only one of extra_args or append_args may be provided

What it means

JarExpansionService/BeamJar construction rejects specifying both extra_args (replacing default service arguments) and append_args (extending them); the two argument-override styles are mutually exclusive.

Solutions

  1. Use append_args to add to the default argument list
  2. Or use extra_args to fully replace it — but not both
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at sdks/python/apache_beam/transforms/external.py:1054 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/6bbc8a011e78f02f. Report an issue: GitHub.

Appendix: source

Thrown at sdks/python/apache_beam/transforms/external.py:1054

      expansion service using the jar file. These arguments will be appended to
      the default arguments.
    user_agent: HTTP user agent string used when downloading jars via
      `JavaJarServer.local_jar`, including the main jar and any classpath
      dependencies.
    maven_repository_url: Maven repository base URL to resolve artifacts when
      classpath entries or jars are specified as Maven coordinates
      (`group:artifact:version`). Defaults to Maven Central if not provided.
  """
  def __init__(
      self,
      path_to_jar,
      extra_args=None,
      classpath=None,
      append_args=None,
      user_agent=None,
      maven_repository_url=None):
    if extra_args and append_args:
      raise ValueError('Only one of extra_args or append_args may be provided')
    self.path_to_jar = path_to_jar
    self._extra_args = extra_args
    self._classpath = classpath or []
    self._service_count = 0
    self._append_args = append_args or []
    self._user_agent = user_agent
    self._maven_repository_url = maven_repository_url

  def is_existing_service(self):
    return subprocess_server.is_service_endpoint(self.path_to_jar)

  @staticmethod
  def _expand_jars(jar, user_agent=None, maven_repository_url=None):
    if glob.glob(jar):
      return glob.glob(jar)
    elif isinstance(jar, str) and (jar.startswith('http://') or
                                   jar.startswith('https://')):
      return [subprocess_server.JavaJarServer.local_jar(jar)]

View on GitHub (pinned to 12126d8942)