[PATCH 6 of 8] dirstate: create class for status lists
Martin von Zweigbergk
martinvonz at gmail.com
Thu Oct 2 08:12:16 CDT 2014
On Thu, Oct 2, 2014 at 5:07 AM, Yuya Nishihara <yuya at tcha.org> wrote:
> On Wed, 1 Oct 2014 22:00:15 -0700, Martin von Zweigbergk wrote:
>> >> +class status(object):
>> > Please describe the intention with this class.
>> >> + def __init__(self, modified, added, removed, deleted, unknown,
>> >> + ignored, clean):
>> >> + self.modified = modified
>> >> + self.added = added
>> >> + self.removed = removed
>> >> + self.deleted = deleted
>> >> + self.unknown = unknown
>> >> + self.ignored = ignored
>> >> + self.clean = clean
>> > http://mercurial.selenic.com/wiki/CodingStyle#Classes ... but I agree it is
>> > nicer than the 7-tuples.
>> Heh, I guess I should have read that first. I guess "recovering Java
>> programmer" describes me well, but I'm not sure I thought three times.
>> I did, however, ask on the IRC channel and heard no complaints (and no
>> encouragement either). I know Augie is for it.
>> > It is also very similar to a named tuple. Could we use that instead ... or
>> > inherit from it? (That would require some kludge as long as we support
>> > Python < 2.6.)
>> After having read the style guide, I know that extending from it is
>> not an option :-) I'll let others discuss and decide, since I know
>> nothing about Python. The ~8 lines of constructor doesn't seem that
>> bad to me.
> It's fairly easy to build namedtuple-like object.
> class statustuple(tuple):
> __slots__ = ()
> def __new__(cls, modified, added, ...):
> return tuple.__new__(cls, (modified, added, ...))
> def modified(self):
> return self
> def __repr__(self):
> It can avoid breaking third-party extensions (and thg) that expects status()
> returns a tuple.
Sure, I'm happy to make it extend tuple if others agree. I actually
considered letting the class extend tuple temporarily in the patch
series to make the diffs smaller, but I don't really want it to be a
tuple in the end (I'd prefer if new instances of "status" could not
be added later).
I'll also let the rest of you reach decide whether to use namedtuple.
After reading about them for about a minute, I can't answer that
More information about the Mercurial-devel