astroid icon indicating copy to clipboard operation
astroid copied to clipboard

Inference of JoinedStr is inconsistent

Open ericvergnaud opened this issue 1 year ago • 1 comments

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.

ericvergnaud avatar Oct 22 '24 17:10 ericvergnaud

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.

jacobtylerwalls avatar Oct 23 '24 03:10 jacobtylerwalls