untangle
untangle copied to clipboard
Unexpected results when comparing two untangle.Element objects with the == operator
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!
You are right about this. The problem stems from the fact that untangle tries to be clever, so you can say object.attribute == "Foo".
I will have to think about how to fix this, if it is even possible without major breaking changes.
Ok, thanks for letting me know.
Lucas Amorim
On 18 Nov 2019, at 15:56, Christian Stefanescu [email protected] wrote:
You are right about this. The problem stems from the fact that untangle tries to be clever, so you can say object.attribute == "Foo".
I will have to think about how to fix this, if it is even possible without major breaking changes.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/stchris/untangle/issues/63?email_source=notifications&email_token=ABMNZRE4UGYXJAVQDAG7MBTQULQNPA5CNFSM4IKNCGUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEELQVNQ#issuecomment-555158198, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABMNZRFQMCS4BETE7QFY5PDQULQNPANCNFSM4IKNCGUA.