{"id":"a710bbf5cb677d0d","repo":"boto/boto3","slug":"unsupported-source-type-source","errorCode":null,"errorMessage":"Unsupported source type: {source}","messagePattern":"Unsupported source type: (.+?)","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"boto3/resources/params.py","lineNumber":93,"sourceCode":"    for param in request_model.params:\n        source = param.source\n        target = param.target\n\n        if source == 'identifier':\n            # Resource identifier, e.g. queue.url\n            value = getattr(parent, xform_name(param.name))\n        elif source == 'data':\n            # If this is a data member then it may incur a load\n            # action before returning the value.\n            value = get_data_member(parent, param.path)\n        elif source in ['string', 'integer', 'boolean']:\n            # These are hard-coded values in the definition\n            value = param.value\n        elif source == 'input':\n            # This is provided by the user, so ignore it here\n            continue\n        else:\n            raise NotImplementedError(f'Unsupported source type: {source}')\n\n        build_param_structure(params, target, value, index)\n\n    return params\n\n\ndef build_param_structure(params, target, value, index=None):\n    \"\"\"\n    This method provides a basic reverse JMESPath implementation that\n    lets you go from a JMESPath-like string to a possibly deeply nested\n    object. The ``params`` are mutated in-place, so subsequent calls\n    can modify the same element by its index.\n\n        >>> build_param_structure(params, 'test[0]', 1)\n        >>> print(params)\n        {'test': [1]}\n\n        >>> build_param_structure(params, 'foo.bar[0].baz', 'hello world')","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/boto/boto3/blob/c7b4afac237b976d48395d7523eaf7cec3a450b3/boto3/resources/params.py#L75-L111","documentation":"Raised by create_request_parameters() in boto3/resources/params.py when a request parameter's source attribute is not one of the recognized values ('identifier', 'data', 'string', 'integer', 'boolean', 'input'). This is an internal/definition-level error: the source comes from the service resource JSON model, so hitting it means the model contains an unrecognized source type or the model/boto3 versions are out of sync. End users almost never trigger this through normal API usage.","triggerScenarios":"Loading a resource model whose params include a source value not handled by the if/elif chain; using a custom or patched service model with a new source type that this boto3 version does not understand.","commonSituations":"Boto3/botocore version mismatch where a newer botocore data file introduces a source type; locally patched or custom resource definitions; very old boto3 against new botocore data.","solutions":["Upgrade boto3 (and botocore) to matching, current versions so the resource model and code agree on source types.","If using custom resource models, ensure all param.source values are among the recognized set.","Downgrade botocore to a version compatible with your boto3 if upgrading is not possible."],"exampleFix":"# no user code fix; environment fix\n# before: mismatched boto3/botocore\npip install boto3==1.26.0 botocore==1.40.0  # mismatched\n\n# after: aligned versions\npip install --upgrade boto3 botocore","handlingStrategy":"validation","validationCode":"# Not preventable at call-site; validate environment instead.\nimport boto3, botocore\nassert boto3.__version__ and botocore.__version__, 'boto3/botocore must be importable'\n# Ensure versions are compatible (bundled botocore ships with boto3)\nprint(f'boto3={boto3.__version__} botocore={botocore.__version__}')","typeGuard":null,"tryCatchPattern":"try:\n    resource.action()\nexcept NotImplementedError as e:\n    if 'Unsupported source type' in str(e):\n        # likely version mismatch; report and guide upgrade\n        raise RuntimeError('boto3/botocore version mismatch; run pip install --upgrade boto3') from e\n    raise","preventionTips":["Keep boto3 and botocore versions aligned (let boto3 pull its compatible botocore).","Pin both packages together in requirements to avoid drift.","Avoid patching service resource models with non-standard source types."],"tags":["resources","internal","model","version-mismatch","not-implemented"],"analyzedSha":"c7b4afac237b976d48395d7523eaf7cec3a450b3","analyzedAt":"2026-08-04T20:35:51.598Z","schemaVersion":2}