[better_errors] Ensure debug_info.arg_names is never None. #25992
+175
−47
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Most places in the code assumed this already, but often that usage is error reporting code, which is not yet well tested.
When we cannot get the
inspect.Signature
, or when theargs
andkwargs
do not match the signature, we generate the flattened argument names as:args[0]
,args[1]
,kwargs['foo']
, ... Previously, in these cases we returnedarg_names
is None, and then the whole debug_info ended up beingNone
, throwing away even available information.We also add support for
api_util.fun_sourceinfo
even for cases when thefun.__code__
is not available. Inthose cases we used to say that
fun_sourceinfo
isNone
. Now, we use the string representation offun
to get the name of built-in functions, or we use "".