It seems to me like you have to ideas of what "equal" means. You want to update a "non-equal/equal" value in the set (because of a different time stamp). If you truly considered them equal, the time stamp would be irrelevant and updating the value in the set would be unnecessary.

I would:

a) /not/ consider two different leases with two different time stamps to be equal, and b) as already mentioned, store them in another data structure like a dictionary.

Not knowing the specifics of the DHCP object structure, if a DHCP lease object has some immutable key or other durable immutable attribute, I would be inclined to make that the dictionary key, and store the DHCP object as the value.


On Fri, Dec 30 2022 at 04:27:56 PM -0600, Ian Pilcher <arequip...@gmail.com> wrote:
On 12/30/22 15:47, Paul Bryan wrote:
What kind of elements are being added to the set? Can you show reproducible sample code?

The objects in question are DHCP leases.  I consider them "equal" if
the lease address (or IPv6 prefix) is equal, even if the timestamps have
changed.  That code is not small, but it's easy to demonstrate the
behavior.

>>> import datetime
>>> class Foo(object):
...     def __init__(self, index):
...         self.index = index
...         self.timestamp = datetime.datetime.now()
...     def __eq__(self, other):
...         return type(other) is Foo and other.index == self.index
...     def __hash__(self):
...         return hash(self.index)
...     def __repr__(self):
... return f'Foo({self.index}) created at {str(self.timestamp)}'
...
>>> f1 = Foo(1)
>>> s = { f1 }
>>> s
{Foo(1) created at 2022-12-30 16:24:12.352908}
>>> f2 = Foo(1)
>>> f2
Foo(1) created at 2022-12-30 16:24:35.489208
>>> s.add(f2)
>>> s
{Foo(1) created at 2022-12-30 16:24:12.352908}

--
========================================================================
Google Where SkyNet meets Idiocracy
========================================================================


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to