Extending open() to accept custom RawIOBase, BufferedIOBase, and TextIOBase classes

:+1: I think opener allows you to do what you want here today. I’m really hesitant to add more knobs to open; it’s already a really complicated function.

There is a similar proposed feature `open()`able objects which gives the ability to do arbitrary transformations / processing for opening and reading. That would enable using open on things like zipfile.Path or other “virtual” filesystems such as HTTP accessible blob storage. For this particular case I think it would provide a good abstraction to encapsulate “work with files in this directory or bit of codebase in this particular way”.