{"record":{"id":"c149612b051f5ad4","repo":"ansible/ansible","slug":"module-metadata-must-defined-only-once","errorCode":null,"errorMessage":"Module METADATA must defined only once.","messagePattern":"Module METADATA must defined only once\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"lib/ansible/executor/module_common.py","lineNumber":794,"sourceCode":"    if not C.config.get_config_value('_MODULE_METADATA'):\n        return _DEFAULT_LEGACY_METADATA\n\n    metadata_nodes: list[ast.Assign] = []\n\n    for node in module.body:\n        if isinstance(node, ast.Assign):\n            if len(node.targets) == 1:\n                target = node.targets[0]\n\n                if isinstance(target, ast.Name):\n                    if target.id == 'METADATA':\n                        metadata_nodes.append(node)\n\n    if not metadata_nodes:\n        return _DEFAULT_LEGACY_METADATA\n\n    if len(metadata_nodes) > 1:\n        raise ValueError('Module METADATA must defined only once.')\n\n    metadata_node = metadata_nodes[0]\n\n    if not isinstance(metadata_node.value, ast.Constant):\n        raise TypeError(f'Module METADATA node must be {ast.Constant} not {type(metadata_node)}.')\n\n    unparsed_metadata = metadata_node.value.value\n\n    if not isinstance(unparsed_metadata, str):\n        raise TypeError(f'Module METADATA must be {str} not {type(unparsed_metadata)}.')\n\n    try:\n        parsed_metadata = yaml_load(unparsed_metadata)\n    except Exception as ex:\n        raise ValueError('Module METADATA must be valid YAML.') from ex\n\n    if not isinstance(parsed_metadata, dict):\n        raise TypeError(f'Module METADATA must parse to {dict} not {type(parsed_metadata)}.')","sourceCodeStart":776,"sourceCodeEnd":812,"githubUrl":"https://github.com/ansible/ansible/blob/9cf16a4aca7898481c257f1e17ad28d0b67b1f85/lib/ansible/executor/module_common.py#L776-L812","documentation":"Error \"Module METADATA must defined only once.\" thrown in ansible/ansible.","triggerScenarios":"Thrown at lib/ansible/executor/module_common.py:794 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove duplicate METADATA definitions in the module; only one is allowed."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9cf16a4aca7898481c257f1e17ad28d0b67b1f85","analyzedAt":"2026-08-15T00:15:47.100Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}