{"record":{"id":"53f522734ef012c7","repo":"apache/beam","slug":"found-multiple-schematransforms-with-the-name-s-s","errorCode":null,"errorMessage":"Found multiple SchemaTransforms with the name '%s':\n%s\n","messagePattern":"Found multiple SchemaTransforms with the name '(.+?)':\n(.+?)\n","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/transforms/external.py","lineNumber":589,"sourceCode":"    :raises:\n      ValueError: if more than one SchemaTransform is discovered, or if none\n      are discovered\n    \"\"\"\n\n    schematransforms = SchemaAwareExternalTransform.discover(\n        expansion_service, ignore_errors=True)\n    matched = []\n\n    for st in schematransforms:\n      if name in st.identifier:\n        matched.append(st)\n\n    if not matched:\n      raise ValueError(\n          \"Did not discover any SchemaTransforms resembling the name '%s'\" %\n          name)\n    elif len(matched) > 1:\n      raise ValueError(\n          \"Found multiple SchemaTransforms with the name '%s':\\n%s\\n\" %\n          (name, [st.identifier for st in matched]))\n\n    return matched[0]\n\n\nclass JavaExternalTransform(ptransform.PTransform):\n  \"\"\"A proxy for Java-implemented external transforms.\n\n  One builds these transforms just as one would in Java, e.g.::\n\n      transform = JavaExternalTransform('fully.qualified.ClassName'\n          )(contructorArg, ... ).builderMethod(...)\n\n  or::\n\n      JavaExternalTransform('fully.qualified.ClassName').staticConstructor(\n          ...).builderMethod1(...).builderMethod2(...)","sourceCodeStart":571,"sourceCodeEnd":607,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/transforms/external.py#L571-L607","documentation":"Raised by SchemaAwareExternalTransform.discover_config when resolving a SchemaTransform by a short name fragment: the discovery service returned more than one SchemaTransform whose identifier contains the given `name`, so the match is ambiguous. It fires when the name substring is too generic (e.g., 'write' matching many transforms); the error lists all matching identifiers so the caller can supply a more specific name. Its sibling checks reject zero matches as well.","triggerScenarios":"Thrown at sdks/python/apache_beam/transforms/external.py:589 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the full, exact identifier of the transform instead of an ambiguous substring","Rename or exclude one of the matching transforms from the expansion service"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}