PyWart: os.path needs immediate attention!

Alister Ware alister.ware at ntlworld.com
Fri Jul 29 23:21:35 CEST 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