From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v5 04/11] autobuild-run: use **kwargs to avoid explicit parameter passthroughs
Date: Fri, 6 Feb 2015 08:58:08 +0100 [thread overview]
Message-ID: <20150206085808.66acc651@free-electrons.com> (raw)
In-Reply-To: <1418414696-32584-5-git-send-email-patrickdepinguin@gmail.com>
Dear Thomas De Schampheleire,
On Fri, 12 Dec 2014 21:04:49 +0100, Thomas De Schampheleire wrote:
> From: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
>
> The current version of autobuild-run has some extensive explicit
> parameter passing, for example:
>
> - fixup_config needs sysinfo, passed via gen_config, in turn via
> run_instance, in turn via main.
> - send_results needs username/password settings, passed via
> run_instance, in turn via main.
>
> Everytime a leaf function needs an extra parameter (for example coming
> from the arguments or config file), the entire call chain needs to be
> adapted to pass along that parameter.
>
> This patch introduces the **kwargs dictionary principle, that allows
> implicit parameter passing. A function can accept this dictionary and
> extract parameters from it by name. The dictionary can be passed as a
> whole to a child function, without explicitly enumerating which entries
> in the dictionary are needed in the child.
I must say I find this **kwargs thing a bit weird. Yes indeed, it
avoids passing several parameters to functions. But on the other hand,
it means that you're passing the *entire* context to *all* functions.
Which more or less boils down to using global variables. It means that
it isn't clear looking at the prototype of a function, which parameters
it is taking.
Maybe it's just that I'm not doing enough Python, and I'm thinking too
much C, but I find this **kwargs to not be such a great idea. But oh
well, since this is Python, I guess I should convince myself to use the
Python spirit :)
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
next prev parent reply other threads:[~2015-02-06 7:58 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 20:04 [Buildroot] [PATCH v5 00/11] autobuild-run improvements Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 01/11] scripts: add python module docopt Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 02/11] autobuild-run: use docopt for argument parsing Thomas De Schampheleire
2015-02-05 22:52 ` Thomas Petazzoni
2015-02-06 11:13 ` Thomas De Schampheleire
2015-02-28 19:31 ` Thomas Petazzoni
2014-12-12 20:04 ` [Buildroot] [PATCH v5 03/11] autobuild-run: add option --make-opts for custom Buildroot options Thomas De Schampheleire
2015-02-28 19:29 ` Thomas Petazzoni
2015-03-01 20:42 ` Thomas De Schampheleire
2015-03-02 8:33 ` Thomas Petazzoni
2014-12-12 20:04 ` [Buildroot] [PATCH v5 04/11] autobuild-run: use **kwargs to avoid explicit parameter passthroughs Thomas De Schampheleire
2015-02-06 7:58 ` Thomas Petazzoni [this message]
2015-02-06 11:15 ` Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 05/11] autobuild-run: check-requirements does not need to know the login details Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 06/11] autobuild-run: set LC_ALL=C to not use locale settings of host machine Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 07/11] autobuild-run: improve the logic to generate build-end.log Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 08/11] autobuild-run: save config.log files for failed package Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 09/11] autobuild-run: extend TODO list Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 10/11] autobuild-run: kill all children on SIGTERM Thomas De Schampheleire
2014-12-12 20:16 ` Thomas De Schampheleire
2014-12-12 20:18 ` Thomas De Schampheleire
2015-02-28 19:28 ` Thomas Petazzoni
2015-03-01 20:02 ` Thomas De Schampheleire
2014-12-12 20:04 ` [Buildroot] [PATCH v5 11/11] autobuild-run: catch KeyboardInterrupt in the same way as SIGTERM Thomas De Schampheleire
2014-12-22 12:45 ` [Buildroot] [PATCH v5 00/11] autobuild-run improvements Thomas De Schampheleire
2015-02-28 19:34 ` Thomas Petazzoni
2015-03-01 21:13 ` Thomas De Schampheleire
2015-03-15 13:34 ` Thomas Petazzoni
2015-03-15 13:51 ` Thomas De Schampheleire
2015-03-15 14:10 ` Thomas Petazzoni
2015-03-18 16:03 ` André Erdmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150206085808.66acc651@free-electrons.com \
--to=thomas.petazzoni@free-electrons.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox