From 117910dc445a2262bd96bbfefaf43714ae59c11b Mon Sep 17 00:00:00 2001 From: Skip Montanaro Date: Fri, 14 Feb 2003 19:35:31 +0000 Subject: Migrate definitions of several platform-dependent path-related variables into the relevant path modules. See patch #686397. --- Doc/lib/libos.tex | 7 +++++ Lib/macpath.py | 10 ++++++ Lib/ntpath.py | 16 ++++++++++ Lib/os.py | 73 ++++++++++--------------------------------- Lib/os2emxpath.py | 10 ++++++ Lib/plat-riscos/riscospath.py | 8 +++++ Lib/posixpath.py | 10 ++++++ 7 files changed, 77 insertions(+), 57 deletions(-) diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex index 8f13e0e..b2c10f7 100644 --- a/Doc/lib/libos.tex +++ b/Doc/lib/libos.tex @@ -1620,12 +1620,14 @@ Higher-level operations on pathnames are defined in the The constant string used by the operating system to refer to the current directory. For example: \code{'.'} for \POSIX{} or \code{':'} for the Macintosh. +Also available via \module{os.path}. \end{datadesc} \begin{datadesc}{pardir} The constant string used by the operating system to refer to the parent directory. For example: \code{'..'} for \POSIX{} or \code{'::'} for the Macintosh. +Also available via \module{os.path}. \end{datadesc} \begin{datadesc}{sep} @@ -1634,6 +1636,7 @@ for example, \character{/} for \POSIX{} or \character{:} for the Macintosh. Note that knowing this is not sufficient to be able to parse or concatenate pathnames --- use \function{os.path.split()} and \function{os.path.join()} --- but it is occasionally useful. +Also available via \module{os.path}. \end{datadesc} \begin{datadesc}{altsep} @@ -1641,11 +1644,13 @@ An alternative character used by the operating system to separate pathname components, or \code{None} if only one separator character exists. This is set to \character{/} on Windows systems where \code{sep} is a backslash. +Also available via \module{os.path}. \end{datadesc} \begin{datadesc}{extsep} The character which separates the base filename from the extension; for example, the \character{.} in \file{os.py}. +Also available via \module{os.path}. \versionadded{2.2} \end{datadesc} @@ -1653,12 +1658,14 @@ for example, the \character{.} in \file{os.py}. The character conventionally used by the operating system to separate search patch components (as in \envvar{PATH}), such as \character{:} for \POSIX{} or \character{;} for Windows. +Also available via \module{os.path}. \end{datadesc} \begin{datadesc}{defpath} The default search path used by \function{exec*p*()} and \function{spawn*p*()} if the environment doesn't have a \code{'PATH'} key. +Also available via \module{os.path}. \end{datadesc} \begin{datadesc}{linesep} diff --git a/Lib/macpath.py b/Lib/macpath.py index e8ac467..8277d41 100644 --- a/Lib/macpath.py +++ b/Lib/macpath.py @@ -7,8 +7,18 @@ __all__ = ["normcase","isabs","join","splitdrive","split","splitext", "basename","dirname","commonprefix","getsize","getmtime", "getatime","getctime", "islink","exists","isdir","isfile", "walk","expanduser","expandvars","normpath","abspath", + "curdir","pardir","sep","pathsep","defpath","altsep","extsep", "realpath","supports_unicode_filenames"] +# strings representing various path-related bits and pieces +curdir = ':' +pardir = '::' +extsep = '.' +sep = ':' +pathsep = '\n' +defpath = ':' +altsep = None + # Normalize the case of a pathname. Dummy in Posix, but .lower() here. def normcase(path): diff --git a/Lib/ntpath.py b/Lib/ntpath.py index b820514..e39266b 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -13,8 +13,24 @@ __all__ = ["normcase","isabs","join","splitdrive","split","splitext", "basename","dirname","commonprefix","getsize","getmtime", "getatime","getctime", "islink","exists","isdir","isfile","ismount", "walk","expanduser","expandvars","normpath","abspath","splitunc", + "curdir","pardir","sep","pathsep","defpath","altsep","extsep", "realpath","supports_unicode_filenames"] +# strings representing various path-related bits and pieces +curdir = '.' +pardir = '..' +extsep = '.' +sep = '\\' +pathsep = ';' +altsep = None +if 'ce' in sys.builtin_module_names: + defpath = '\\Windows' +elif 'os2' in sys.builtin_module_names: + # OS/2 w/ EMX + altsep = '/' +else: + defpath = '.;C:\\bin' + # Normalize the case of a pathname and map slashes to backslashes. # Other normalizations (such as optimizing '../' away) are not done # (this is done by normpath). diff --git a/Lib/os.py b/Lib/os.py index e3b7761..d3078d6 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -26,10 +26,8 @@ import sys _names = sys.builtin_module_names -altsep = None - __all__ = ["altsep", "curdir", "pardir", "sep", "pathsep", "linesep", - "defpath", "name"] + "defpath", "name", "path"] def _get_exports_list(module): try: @@ -40,17 +38,13 @@ def _get_exports_list(module): if 'posix' in _names: name = 'posix' linesep = '\n' - curdir = '.'; pardir = '..'; sep = '/'; pathsep = ':' - defpath = ':/bin:/usr/bin' from posix import * try: from posix import _exit except ImportError: pass - import posixpath - path = posixpath - del posixpath - + import posixpath as path + import posix __all__.extend(_get_exports_list(posix)) del posix @@ -58,17 +52,13 @@ if 'posix' in _names: elif 'nt' in _names: name = 'nt' linesep = '\r\n' - curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';' - defpath = '.;C:\\bin' from nt import * try: from nt import _exit except ImportError: pass - import ntpath - path = ntpath - del ntpath - + import ntpath as path + import nt __all__.extend(_get_exports_list(nt)) del nt @@ -76,28 +66,16 @@ elif 'nt' in _names: elif 'os2' in _names: name = 'os2' linesep = '\r\n' - curdir = '.'; pardir = '..'; pathsep = ';' - if sys.version.find('EMX GCC') == -1: - # standard OS/2 compiler (VACPP or Watcom?) - sep = '\\'; altsep = '/' - else: - # EMX - sep = '/'; altsep = '\\' - defpath = '.;C:\\bin' from os2 import * try: from os2 import _exit except ImportError: pass if sys.version.find('EMX GCC') == -1: - import ntpath - path = ntpath - del ntpath + import ntpath as path else: - import os2emxpath - path = os2emxpath - del os2emxpath - + import os2emxpath as path + import os2 __all__.extend(_get_exports_list(os2)) del os2 @@ -105,17 +83,13 @@ elif 'os2' in _names: elif 'mac' in _names: name = 'mac' linesep = '\r' - curdir = ':'; pardir = '::'; sep = ':'; pathsep = '\n' - defpath = ':' from mac import * try: from mac import _exit except ImportError: pass - import macpath - path = macpath - del macpath - + import macpath as path + import mac __all__.extend(_get_exports_list(mac)) del mac @@ -123,18 +97,14 @@ elif 'mac' in _names: elif 'ce' in _names: name = 'ce' linesep = '\r\n' - curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';' - defpath = '\\Windows' from ce import * try: from ce import _exit except ImportError: pass # We can use the standard Windows path. - import ntpath - path = ntpath - del ntpath - + import ntpath as path + import ce __all__.extend(_get_exports_list(ce)) del ce @@ -142,17 +112,13 @@ elif 'ce' in _names: elif 'riscos' in _names: name = 'riscos' linesep = '\n' - curdir = '@'; pardir = '^'; sep = '.'; pathsep = ',' - defpath = '' from riscos import * try: from riscos import _exit except ImportError: pass - import riscospath - path = riscospath - del riscospath - + import riscospath as path + import riscos __all__.extend(_get_exports_list(riscos)) del riscos @@ -160,18 +126,11 @@ elif 'riscos' in _names: else: raise ImportError, 'no os specific module found' - -if sep=='.': - extsep = '/' -else: - extsep = '.' - -__all__.append("path") +sys.modules['os.path'] = path +from os.path import curdir, pardir, sep, pathsep, defpath, extsep, altsep del _names -sys.modules['os.path'] = path - #' # Super directory utilities. diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py index f92841f..67f00df 100644 --- a/Lib/os2emxpath.py +++ b/Lib/os2emxpath.py @@ -12,8 +12,18 @@ __all__ = ["normcase","isabs","join","splitdrive","split","splitext", "basename","dirname","commonprefix","getsize","getmtime", "getatime","getctime", "islink","exists","isdir","isfile","ismount", "walk","expanduser","expandvars","normpath","abspath","splitunc", + "curdir","pardir","sep","pathsep","defpath","altsep","extsep", "realpath","supports_unicode_filenames"] +# strings representing various path-related bits and pieces +curdir = '.' +pardir = '..' +extsep = '.' +sep = '/' +altsep = '\\' +pathsep = ';' +defpath = '.;C:\\bin' + # Normalize the case of a pathname and map slashes to backslashes. # Other normalizations (such as optimizing '../' away) are not done # (this is done by normpath). diff --git a/Lib/plat-riscos/riscospath.py b/Lib/plat-riscos/riscospath.py index 30c0c9f..c875a4f 100644 --- a/Lib/plat-riscos/riscospath.py +++ b/Lib/plat-riscos/riscospath.py @@ -12,6 +12,14 @@ Instead of importing this module directly, import os and refer to this module as os.path. """ +# strings representing various path-related bits and pieces +curdir = '@' +pardir = '^' +extsep = '.' +sep = '.' +pathsep = ',' +defpath = '' +altsep = None # Imports - make an error-generating swi object if the swi module is not # available (ie. we are not running on RISC OS Python) diff --git a/Lib/posixpath.py b/Lib/posixpath.py index d0179f1..50073dc 100644 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@ -18,8 +18,18 @@ __all__ = ["normcase","isabs","join","splitdrive","split","splitext", "getatime","getctime","islink","exists","isdir","isfile","ismount", "walk","expanduser","expandvars","normpath","abspath", "samefile","sameopenfile","samestat", + "curdir","pardir","sep","pathsep","defpath","altsep","extsep", "realpath","supports_unicode_filenames"] +# strings representing various path-related bits and pieces +curdir = '.' +pardir = '..' +extsep = '.' +sep = '/' +pathsep = ':' +defpath = ':/bin:/usr/bin' +altsep = None + # Normalize the case of a pathname. Trivial in Posix, string.lower on Mac. # On MS-DOS this may also turn slashes into backslashes; however, other # normalizations (such as optimizing '../' away) are not allowed -- cgit v0.12