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
- Use append_args to add to the default argument list
- 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)