PyWart: os.path needs immediate attention!
Alister Ware
alister.ware at ntlworld.com
Fri Jul 29 17:21:35 EDT 2011
On Fri, 29 Jul 2011 10:22:04 -0700, rantingrick wrote:
> --------------------------------------------------
> Overview of Problems:
> --------------------------------------------------
>
> * Too many methods exported.
> * Poor choice of method names.
> * Non public classes/methods exported!
> * Duplicated functionality.
>
> --------------------------------------------------
> Proposed new functionality:
> --------------------------------------------------
>
> * New path module will ONLY support one path sep! There is NO reason
> to support more than one. When we support more than one path sep we help
> to propagate multiplicity.We should only support the slash and NOT the
> backslash across ALL OS's since the slash is more widely accepted. If an
> OS does not have the capability to support only the slash then that OS
> is not worthy of a Python builtin module. The users of such OS will be
> responsible for managing their OWN os_legacy.path module. We are moving
> forward. Those who wish to wallow in the past will be left behind.
>
> * Introduce a new method named "partition" which (along with string
> splitting methods) will replace the six methods "basename", "dirname",
> "split", "splitdrive", "splitunc", "splittext". The method will return a
> tuple of the path split into four parts: (drive, path, filename,
> extension). This is the ONLY splitting method this module needs. All
> other splits can use string methods.
>
> --------------------------------------------------
> Expose of the Warts of current module:
> --------------------------------------------------
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~
> 1. Too many methods
> ~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Follows is a list of what to keep and what to cull:
>
> + abspath + altsep - basename --> path.partition[-2]
> + commonprefix + curdir + defpath + devnull - dirname -->
> os.path.join(drive,path)
> + exists + expanduser + expandvars + extsep - genericpath --> should be
> private!
> + getatime + getctime + getmtime + getsize + isabs + isdir + isfile +
> islink + ismount + join - lexists --> duplicate!
> - normcase --> path = path.lower()
> - normpath --> should not need this!
> - os --> should be private!
> + pardir + pathsep + realpath + relpath + sep - split -->
> path.rsplit('/', 1)
> - splitdrive --> path.split(':', 1)
> - splitext --> path.rsplit('.')
> - splitunc --> Unix specific!
> - stat --> should be private!
> + supports_unicode_filenames --> windows specific!
> - sys --> should be private!
> + walk - warnings --> should be private!
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~
> 2. Poor Name Choices:
> ~~~~~~~~~~~~~~~~~~~~~~~~~
>
> * basename --> should be: filename * split --> split what?
> * splitext --> Wow, informative!
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~
> 3. Non Public Names Exposed!
> ~~~~~~~~~~~~~~~~~~~~~~~~~
>
> * genericpath * os * stat * sys * warnings
>
>
> Note: i did not check the Unix version of os.path for this.
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~
> 4. Duplicated functionality.
> ~~~~~~~~~~~~~~~~~~~~~~~~~
>
>>>> os.path.lexists.__doc__
> 'Test whether a path exists. Returns False for broken symbolic links'
>>>> os.path.exists.__doc__
> 'Test whether a path exists. Returns False for broken symbolic links'
>
> Should have been one method:
>>>> os.path.exists(path, ignoreSymLnks=False)
so far all I have is posts stating that everything is wrong.
instead of all this negativity why don't you try being productive for a
change either make a suggestion for an addition (ie something that does
not yest exits) or better yet give us all the benefit of your supreme
coding talent & provide some code?
--
One expresses well the love he does not feel.
-- J.A. Karr
More information about the Python-list
mailing list