All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.