-
-
Notifications
You must be signed in to change notification settings - Fork 87
Description
Recently I had to check whether an item in a list of untangle.Element was inside a second list using the in operator. Turns out the result was very misleading:
Note: I know I shouldn't initialise an untangle.Element object like this (in my real life code I am using untangle.parse('file.xml') which creates a list of various untangle.Element), but this is the smallest syntactically correct code I could supply for this illustration.
import untangle
a = untangle.Element('a', '1')
b = untangle.Element('b', '1')
listA = [a, b]
c = untangle.Element('c', '1')
print(c in listA)
This prints True, but should print False as it does in:
a = object()
b = object()
listA = [a, b]
c = object()
print(c in listA)
So, since the in operator uses == to compare items, I thought it could be a problem with how == is being implemented in the Element class, which I think I confirmed by running:
import untangle
a = untangle.Element('a', '1')
b = untangle.Element('b', '1')
print(a == b)
This prints out True, but should print False, as this other code does:
a = object()
b = object()
print(a == b)
Using Python 3.6.8 and untangle 1.1.1
@adijbr contributed to these tests and bug report.
Thanks!