[Python-Dev] Proposal to revert r54204 (splitext change)

M.-A. Lemburg mal at egenix.com
Thu Mar 15 08:49:18 CET 2007


On 2007-03-15 07:45, Martin v. Löwis wrote:
> Phillip J. Eby schrieb:
>> And yet, that "incorrect" behavior was clearly intended by the author(s) 
>> of the code, test, and docstrings.
>>
>> As it happens, Guido wrote that code (16 years ago) and the docstring (9 
>> years ago), in the case of the posixpath module at least.
> 
> I don't find it that clear that it was the intention, AFAICT, it could 
> have been an accident also. Guido added the doc strings as a 
> contribution from Charles G. Waldman; he may just have documented the
> implemented behavior.
> 
> In r4493, Sjoerd Mullender changed splitext (in an incompatible way)
> so that it would split off only the last extension, before, foo.tar.gz
> would be split into 'foo', '.tar.gz'. So it's clear that the intention
> was always to "split off the extension", whether or not the behavior
> on dotfiles was considered I cannot tell.
> 
> As for Doc/lib, in r6524 Guido changed it to document the actual 
> behavior, from
> 
> the last component of \var{root} contains no periods,
> and \var{ext} is empty or begins with a period.
> 
> to
> 
> and \var{ext} is empty or begins with a period and contains
> at most one period.
> 
> So it seems the original (Guido's) intention was that it splits
> of all extensions; Sjoerd then changed it to split off only the
> last extension.

Whatever the intention was or has been: the term "extension"
itself is not well-defined, so there's no obvious right way
to implement an API that splits off an extension.

E.g. in some cases, .tar.gz is considered an extension, in others,
the .gz part is just a transfer encoding and .tar the extension.
Then you have .tgz which is a bit of both. It also depends on the
platform, e.g. on Windows, only the very last part of a filename
is used as extension by the OS to determine the (MIME) type of
a file.

As always, it's best to just right your own application-specific
code to get defined behavior.

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Mar 15 2007)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::


More information about the Python-Dev mailing list