New submission from Serhiy Storchaka:

Proposed patch fixes several bugs in plistlib.Data.__eq__().

* isinstance(other, str) was used instead of isinstance(other, bytes). Data 
always wraps bytes and should be comparable with bytes. str was correct type in 
Python 2.

* id(self) == id(other) is always false, because if other is self, the first 
condition (isinstance(other, self.__class__)) should be true. NotImplemented 
should be returned as fallback. This allows comparing with Data subclasses and 
correct work of __ne__().

* The __eq__() method should be used instead of the equality operator. This is 
needed for correct work in case if value is bytes subclass with overloaded 
__eq__().

----------
components: Library (Lib)
files: plistlib_data_eq.patch
keywords: patch
messages: 263001
nosy: ronaldoussoren, serhiy.storchaka
priority: normal
severity: normal
stage: patch review
status: open
title: Fix comparison of plistlib.Data
type: behavior
versions: Python 3.5, Python 3.6
Added file: http://bugs.python.org/file42394/plistlib_data_eq.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue26711>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to