astroid
astroid copied to clipboard
Inference of JoinedStr is inconsistent
Inference of JoinedStr is inconsistent. For example:
f"{unknown}" raises an InferenceError if unknown is not declared f"{unknown}" returns Uninferable (the instance) if unknown is declared f"a/{unknown}/b" raises an InferenceError if unknown is not declared f"a/{unknown}/b" returns "a/Uninferable/b" if unknown is declared
This pushes to the user a lot of unwanted responsibility
Additionally, there are usage scenarios where the user would rather have a composite string (such as the latter case above) than the Uninferable instance.
Thanks for catching that we're not catching exceptions thrown by _infer() inside infer_from_values().
But re: the inconsistencies between raising and returning a partial string seem like something we should resolve in favor of not using partial strings, based on the decision we took in #2459.