read requirements for py32
factory pattern for sourcing modules
raise OSError instead of FileNotFoundError when not supported
use `__name__` when `__qualname__` not supported