[Python-Dev] Portable and OS-dependent module idea/proposal/brain fart

Guido van Rossum guido@CNRI.Reston.VA.US
Wed, 18 Aug 1999 10:54:28 -0400


> I posted a note to the main list yesterday in response to Dan Connolly's
> complaint that the os module isn't very portable.  I saw no followups (it's
> amazing how fast a thread can die out :-), but I think it's a reasonable
> idea, perhaps for Python 2.0, so I'll repeat it here to get some feedback
> from people more interesting in long-term Python developments.
> 
> The basic premise is that for each platform on which Python runs there are
> portable and nonportable interfaces to the underlying operating system.  The
> term POSIX has some portability connotations, so let's assume that the posix
> module exposes the portable subset of the OS interface.  To keep things
> simple, let's also assume there are only three supported general OS
> platforms: unix, nt and mac.  The proposal then is that importing the
> platform's module by name will import both the portable and non-portable
> interface elements.  Importing the posix module will import just that
> portion of the interface that is truly portable across all platforms.  To
> add new functionality to the posix interface it would have to be added to
> all three platforms.  The posix module will be able to ferret out the
> platform it is running on and import the correct OS-independent posix
> implementation:
> 
>     import sys
>     _plat = sys.platform
>     del sys
> 
>     if _plat == "mac": from posixmac import *
>     elif _plat == "nt": from posixnt import *
>     else: from posixunix import *	# some unix variant
> 
> The platform-dependent module would simply import everything it could, e.g.:
> 
>     from posixunix import *
>     from nonposixunix import *
> 
> The os module would vanish or be deprecated with its current behavior
> intact.  The documentation would be modified so that the posix module
> documents the portable interface and the OS-dependent module's documentation
> documents the rest and just refers users to the posix module docs for the
> portable stuff.
> 
> In theory, this could be done for 1.6, however as I've proposed it, the
> semantics of importing the posix module would change.  Dan Connolly probably
> isn't going to have a problem with that, though I suppose Guido might...  If
> this idea is good enough for 1.6, perhaps we leave os and posix module
> semantics alone and add a module named "portable", "portableos" or
> "portableposix" or something equally arcane.

And the advantage of this would be...?

Basically, it seems you're just renaming the functionality of os to posix.

--Guido van Rossum (home page: http://www.python.org/~guido/)