Offering encoding="locale" (or open.locale or ... ) instead of a long function call using False (locale.getpreferredencoding(False)) seems like a win for Explicit is Better Than Implicit. It would then be possible to say "yeah, locale really is what I meant".
Err... unless the charset determination is so tricky that it ends up just adding another not-quite-right near-but-not-exact-synonym.
Adding a new Warning subclass, and maybe a new warning type, and maybe a new environment variable, and maybe a new launch flag ... these all seem to risk just making things more complicated without sufficient gain.
Would a recipe for site-packages be sufficient, or does this need to run too early in the bootstrapping process?