Update force_bytes and force_unicode to support casting objects to strings.
Review Request #13033 — Created May 10, 2023 and submitted — Latest diff uploaded
force_unicode()now take a
argument, which defaults to
Truefor backwards-compatibility. When set
False, these functions can take any arbitrary object and try to
turn it into a string.
force_bytes()will look for a
__bytes__()dunder method, using that to
get the result, and then falling back on
force_unicode()will just look for
__str__(). Since every object has
this, it will technically work with any object.
Typing has been updated to provide overloads based on the
parameter, helping to ensure callers receive type warnings if they
provide something other than a string without opting into
Unit tests have been added to cover this module.
Unit tests pass.
Tested this with some upcoming fixes for command output rendering.