Re: How to check something is in a list with rich-comparison objects?
I will raise this with pysvn, if I can ever find their issue reporting system. In the meantime, I suppose I can only do this by traversing the list with a loop and catching exceptions. Ugly, but seems to be the only way. On Sep 16, 2:39 am, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: Looks like a bug in pysvn. Some class (whatever pysvn.wc_notify_action.status_completed is) is not well written. When compared against something unknown, it should return NotImplemented instead of raising AttributeError. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check something is in a list with rich-comparison objects?
En Wed, 16 Sep 2009 03:36:32 -0300, Jason jason.hee...@gmail.com escribió: On Sep 16, 2:39 am, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: Looks like a bug in pysvn. Some class (whatever pysvn.wc_notify_action.status_completed is) is not well written. When compared against something unknown, it should return NotImplemented instead of raising AttributeError. (top posting corrected) I will raise this with pysvn, if I can ever find their issue reporting system. In the meantime, I suppose I can only do this by traversing the list with a loop and catching exceptions. Ugly, but seems to be the only way. You might use a list subclass and override its __contains__ method (and perhaps index() too). It's the same ugly code, but at least expressions like: 'foo' in some_list would still work. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check something is in a list with rich-comparison objects?
On Wed, 16 Sep 2009 03:57:30 -0300, Gabriel Genellina wrote: En Wed, 16 Sep 2009 03:36:32 -0300, Jason jason.hee...@gmail.com escribió: On Sep 16, 2:39 am, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: Looks like a bug in pysvn. Some class (whatever pysvn.wc_notify_action.status_completed is) is not well written. When compared against something unknown, it should return NotImplemented instead of raising AttributeError. (top posting corrected) I will raise this with pysvn, if I can ever find their issue reporting system. In the meantime, I suppose I can only do this by traversing the list with a loop and catching exceptions. Ugly, but seems to be the only way. You might use a list subclass and override its __contains__ method (and perhaps index() too). It's the same ugly code, but at least expressions like: 'foo' in some_list would still work. Or you can wrap each item in an object that does the right thing. # untested class Wrapper: # Thin wrapper to make equals comparisons work correctly def __init__(self, payload): self.payload = payload def __eq__(self, other): payload = self.payload try: return payload.__eq__(other) except AttributeError: return other.__eq__(payload) some_list = map(Wrapper, some_list) -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check something is in a list with rich-comparison objects?
Jason wrote: I will raise this with pysvn, if I can ever find their issue reporting system. In the meantime, I suppose I can only do this by traversing the list with a loop and catching exceptions. Ugly, but seems to be the only way. On Sep 16, 2:39 am, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: Looks like a bug in pysvn. Some class (whatever pysvn.wc_notify_action.status_completed is) is not well written. When compared against something unknown, it should return NotImplemented instead of raising AttributeError. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check something is in a list with rich-comparison objects?
En Tue, 15 Sep 2009 11:18:33 -0300, Jason jason.hee...@gmail.com escribió: Comparing a string to the enumerations in pysvn gives me an attribute error, because they've overloaded the rich compare methods: import pysvn string in [pysvn.wc_notify_action.status_completed, string] Traceback (most recent call last): File stdin, line 1, in module AttributeError: expecting wc_notify_action object for rich compare Is there a simple way around this? Looks like a bug in pysvn. Some class (whatever pysvn.wc_notify_action.status_completed is) is not well written. When compared against something unknown, it should return NotImplemented instead of raising AttributeError. py class BadBoy(object): ... foo = 1 ... # ... def __eq__(self, other): ... if not isinstance(other, BadBoy): ... raise TypeError, expecting BadBoy object for rich compare ... return self.foo==other.foo ... py hello in [BadBoy(), hello] Traceback (most recent call last): File stdin, line 1, in module File stdin, line 6, in __eq__ TypeError: expecting BadBoy object for rich compare py py class GoodBoy(object): ... foo = 1 ... # ... def __eq__(self, other): ... if not isinstance(other, GoodBoy): ... return NotImplemented ... return self.foo==other.foo ... py hello in [GoodBoy(), hello] True -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list