Really, if you want bytes, you should
use os.fsencode(); if you want strings, use os.fsencode();
if you want to be polymorphic, use os.fspath() and check the
type it returns.
Am I severely misunderstanding the API, or did you mean "if you want
strings, use os.fsdecode()" here?