[Python-3000] Path Reform: Get the ball rolling (original) (raw)

Fredrik Lundh fredrik at pythonware.com
Wed Nov 1 08:04:37 CET 2006


Mike Orr wrote:

You may think 'shutil' has to do with shells, not paths.

well, it has; it provides Python implementations of selected shell commands.

Why is 'split' in os.path but 'stat' and 'mkdir' and 'remove' are in os? Don't they all operate on paths?

no. are you saying that you're unable to see the conceptual difference between a name and an object?

There have been a few additional ideas on python-dev but no code. Nick Coghlan suggested separate classes for (A) string manipulation, (B) abstract path operations, (C) read-only inspection of filesystem, (D) add/remove files/directories/links.

that's the only remotely sane path-related proposal I've seen this far. here's mine; it's fully backwards compatible, can go right into 2.6, and can be incrementally improved in future releases:

1) add a pathname wrapper to "os.path", which lets you do basic
   path "algebra".  this should probably be a subclass of unicode,
   and should *only* contain operations on names.

2) make selected "shutil" operations available via the "os" name-
   space; the old POSIX API vs. POSIX SHELL distinction is pretty
   irrelevant.  also make the os.path predicates available via the
   "os" namespace.

this gives a very simple conceptual model for the user; to manipulate path names, use "os.path.(string)" functions or the "" wrapper. to manipulate objects identified by a path, given either as a string or a path wrapper, use "os.(path)". this can be taught in less than a minute.



More information about the Python-3000 mailing list