Unipath /

Full commit
from distutils.core import setup

VERSION = "0.2.1"

Unipath is an object-oriented approach to file/pathname 
manipulations and filesystem calls, an alternative to ``os.path.*``,
``shutil.*``, and some ``os.*`` functions.  It's based on
Orendorff's but has been refactored to make application code
more concise, by focusing on what the programmer wants to do rather
than on low-level operations exactly like the C library.  For

- ``p.mkdir()`` succeeds silently if the directory already exists, and
- ``p.mkdir(True)`` creates intermediate directories a la
- ``p.rmtree(parents=True)`` combines ``shutil.rmtree``,
  ``os.path.isdir``, ``os.remove``, and ``os.removedirs``, to
  recursively remove whatever it is if it exists.  
-  ``p.read_file("rb")`` returns the file's contents in binary mode.  
- ``p.needs_update([other_path1, ...])`` returns True if p doesn't
  exist or has an older timestamp than any of the others.
- extra convenience functions in the ```` module.
  ``dict2dir`` creates a directory hierarchy described by a ``dict``.
  ``dump_path`` displays an ASCII tree of a directory hierarchy.

Unipath has a ``Path`` class for abstract pathname manipulations
(``p.parent``, ``p.expand()``), and a ``FSPath`` subclass for
filesystem calls (all the ones above).  You can do "from unipath
import FSPath as Path" and forget about the distinction, or use the
``Path`` class and be confident you'll never access the filesystem.
The ``Path`` class is also being proposed as an addition to the
standard libary (``os.path.Path``).  Compare::

    # Reference a file that's two directories above another file.
    p = os.path.join(os.path.dirname(os.path.dirname("/A/B/C")), "file.txt")
    p = Path("A/B/C").parent.parent.child("file.txt")
    p = Path("A/B/C").ancestor(2).child("file.txt")
    p0 = Path("/A/B/C");  p = Path(p0.parent.parent, "file.txt")

    # Change the extension of a path.
    p = os.path.splitext("image.jpg")[0] + ".png"
    p = Path("image.jpg").name + ".png"

Documentation is in the README and on the
`website <>`__.

Unipath is in early alpha release so the API may change as it get
greater use in the "real world".  Unipath comes with extensive
unittests, and has been tested on Python 2.5 and 2.4.4 on Linux.
Feedback and Windows/Macintosh testers are encouraged.

    description="Object-oriented alternative to os/os.path/shutil",
    author="Mike Orr",
        "" % VERSION,
    keywords="os.path filename pathspec path files directories filesystem",
        "License :: OSI Approved :: Python Software Foundation License",
        "Operating System :: OS Independent",
        "Topic :: Software Development :: Libraries :: Python Modules",
        "Topic :: Utilities",