[Python-Dev] Path PEP: some comments (equality)

Jason Orendorff jason.orendorff at gmail.com
Wed Feb 22 19:17:51 CET 2006


On 2/20/06, Mark Mc Mahon <mark.m.mcmahon at gmail.com> wrote:
>
> It seems that the Path module as currently defined leaves equality
> testing up to the underlying string comparison. My guess is that this
> is fine for Unix (maybe not even) but it is a bit lacking for Windows.
>
> Should the path class implement an __eq__ method that might do some of
> the following things:
> - Get the absolute path of both self and the other path
> - normcase both
> - now see if they are equal
>

This has been suggested to me many times.

Unfortunately, since Path is a subclass of string, this breaks stuff in
weird ways.

For example:
    'x.py' == path('x.py') == path('X.PY') == 'X.PY', but 'x.py' != 'X.PY'

And hashing needs to be consistent with __eq__:
    hash('x.py') == hash(path('X.PY')) == hash('X.PY') ???

Granted these problems would only pop up in code where people are mixing
Path and string objects.  But they would cause really obscure bugs in
practice, very difficult for a non-expert to figure out and fix.  It's safer
for Paths to behave just like strings.

-j
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20060222/8577a431/attachment.html 


More information about the Python-Dev mailing list