opsgenie / opsgenie-python-sdk

Other
48 stars 40 forks source link

Models do not override __hash__ making them unusable in hashed collections #38

Open asqui opened 4 years ago

asqui commented 4 years ago

Models such as Responders define the __eq__() and __ne__() methods appropriately, but not __hash__().

From the Python documentation:

If a class [...] defines __cmp__() or __eq__() but not __hash__(), its instances will not be usable in hashed collections.

The practical consequence of this is that set((Responders(type='team', name='foo'))) != set((Responders(type='team', name='foo'))) which is quite confusing!

I suspect that this may be a bug coming from the Open Api Generator, but I am not familiar with the generator implementation and its use so am raising this bug here in the first instance.

asqui commented 3 years ago

The fix for this is quite simple (see example here: https://github.com/BATS/opsgenie-python-sdk/commit/5fceef188fb4285b610c33a5646ea21206a3cee3) and it would be good if this could be fixed here so that I don't need to maintain a separate fork with the workaround for this issue...