From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46697) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9zcW-0005nV-Oi for qemu-devel@nongnu.org; Tue, 20 Mar 2012 10:01:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S9zcN-0001RP-QM for qemu-devel@nongnu.org; Tue, 20 Mar 2012 10:01:04 -0400 Received: from roura.ac.upc.es ([147.83.33.10]:53954) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9zcN-0001Qs-F7 for qemu-devel@nongnu.org; Tue, 20 Mar 2012 10:00:55 -0400 From: =?utf-8?Q?Llu=C3=ADs_Vilanova?= References: <20120313200235.24179.63987.stgit@ginnungagap.bsc.es> <20120313200332.24179.78152.stgit@ginnungagap.bsc.es> Date: Tue, 20 Mar 2012 15:00:19 +0100 In-Reply-To: (Stefan Hajnoczi's message of "Tue, 20 Mar 2012 09:22:56 +0000") Message-ID: <87obrrgyoc.fsf@ginnungagap.bsc.es> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 10/12] trace: [tracetool] Automatically establish available backends and formats List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: harsh@linux.vnet.ibm.com, qemu-devel@nongnu.org, aneesh.kumar@linux.vnet.ibm.com Stefan Hajnoczi writes: > 2012/3/13 Llu=C3=ADs Vilanova : >> Adds decorators to establish which backend and/or format each routine is= meant >> to process. >>=20 >> With this, tables enumerating format and backend routines can be elimina= ted and >> part of the usage message can be computed in a more generic way. >>=20 >> Signed-off-by: Llu=C3=ADs Vilanova >> Signed-off-by: Harsh Prateek Bora >> --- >> =C2=A0Makefile.objs =C2=A0 =C2=A0 =C2=A0 =C2=A0| =C2=A0 =C2=A06 - >> =C2=A0Makefile.target =C2=A0 =C2=A0 =C2=A0| =C2=A0 =C2=A03 >> =C2=A0scripts/tracetool.py | =C2=A0320 ++++++++++++++++++++++++++++++++-= ----------------- >> =C2=A03 files changed, 211 insertions(+), 118 deletions(-) > I find the decorators are overkill and we miss the chance to use more > straightforward approaches that Python supports. The decorators build > structures behind the scenes instead of using classes in an open coded > way. I think this makes it more difficult for people to modify the > code - they will need to dig in to what exactly the decorators do - > what they do is pretty similar to what you get from a class. > I've tried out an alternative approach which works very nicely for > formats. For backends it's not a perfect fit because it creates > instances when we don't really need them, but I think it's still an > overall cleaner approach: > https://github.com/stefanha/qemu/commit/3500eb43f80f3c9200107aa0ca19a1b57= 300ef8a > What do you think? I don't like it: 1) Format and backend tables must be manually filled. 2) The base Backend class has empty methods for each possible format. 3) There is no control on format/backend compatibility. But I do like the idea of having a single per-backend class having methods = for each possible format. The main reason for automatically establishing formats, backends and their compatibility is that the instrumentation patches add some extra formats and backends, which makes the process much more tedious if it's not automated. Whether you use decorators or classes is not that important. Auto-registration can be accomplished using metaclasses and special per-format/backend "special" attributes the metaclasses will look for (e.g.= NAME to set the commandline-visible name of a format/backend.). Format/backend compatibility can be established by introspecting into the methods on each backend child class, matched against the NAMEs of the regis= tered formats. But going this way does not sound to me like it will be much clearer than decorators. Do you agree? (I'll wait on solving this before fixing the rest of your con= cerns in this series). Do you still prefer classes over decorators? Lluis --=20 "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth