From: Alec Warner <antarus@gentoo.org>
To: gentoo-portage-dev@lists.gentoo.org
Subject: Re: [gentoo-portage-dev] [PATCH v2 1/3] pym/portage/package/ebuild/fetch.py: Factor out _get_checksum_failure_max_tries
Date: Sun, 19 Jan 2014 14:44:59 -0800 [thread overview]
Message-ID: <CAAr7Pr-qpAD7qJi8Kv4dHJqEchOcpH--6+cC=7SRH6CoOrj3Qg@mail.gmail.com> (raw)
In-Reply-To: <a492125465640e6c9dca36b7e70df4a1f3d475a6.1390169448.git.wking@tremily.us>
[-- Attachment #1: Type: text/plain, Size: 5191 bytes --]
On Sun, Jan 19, 2014 at 2:14 PM, W. Trevor King <wking@tremily.us> wrote:
> The current fetch() function is quite long, which makes it hard to
> know what I can change without adverse side effects. By pulling this
> logic out of the main function, we get clearer logic in fetch() and
> more explicit input for the config extraction.
> ---
> pym/portage/package/ebuild/fetch.py | 59
> +++++++++++++++++++++----------------
> 1 file changed, 34 insertions(+), 25 deletions(-)
>
> diff --git a/pym/portage/package/ebuild/fetch.py
> b/pym/portage/package/ebuild/fetch.py
> index 5316f03..6f46572 100644
> --- a/pym/portage/package/ebuild/fetch.py
> +++ b/pym/portage/package/ebuild/fetch.py
> @@ -240,6 +240,38 @@ _size_suffix_map = {
> 'Y' : 80,
> }
>
> +
> +def _get_checksum_failure_max_tries(settings, default=5):
> + """
> + Get the maximum number of failed download attempts
> +
> + Generally, downloading the same file repeatedly from
> + every single available mirror is a waste of bandwidth
> + and time, so there needs to be a cap.
> + """
> + v = default
> + try:
> + v = int(settings.get("PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS",
> + default))
> + except (ValueError, OverflowError):
> + writemsg(_("!!! Variable
> PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"
> + " contains non-integer value: '%s'\n") % \
> + settings["PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"],
> + noiselevel=-1)
> + writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS "
> + "default value: %s\n") % default,
> + noiselevel=-1)
> + v = default
> + if v < 1:
> + writemsg(_("!!! Variable
> PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"
> + " contains value less than 1: '%s'\n") % v,
> noiselevel=-1)
> + writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS "
> + "default value: %s\n") % default,
> + noiselevel=-1)
> + v = default
> + return v
> +
> +
>
This function and the next function you wrote are identical. How about
making a single function?
def getValueFromSettings(settings, key, default, validator):
try:
return validator(settings.get(key, default))
except ValidationError as e:
# writemsg the exception, it will contain the juicy bits.)
def getIntValueFromSettings(settings, key, default):
def validator(v):
try:
v = int(v)
except (ValueError, OverflowError) as e:
raise ValidationError(" bla bla bla not an int, we picked the
default.")
if v < 1:
v = default
raise ValidationError("bla bla bla less than one we used the
defualt.")
return getValueFromSettings(settings, key, default, validator)
Then we are not necessarily writing a bunch of the same functions over and
over. The defaults we can stick in a config file, or in python, or at the
call site.
-A
> def fetch(myuris, mysettings, listonly=0, fetchonly=0,
> locks_in_subdir=".locks", use_locks=1, try_mirrors=1, digests=None,
> allow_missing_digests=True):
> @@ -263,31 +295,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0,
> print(_(">>> \"mirror\" mode desired and
> \"mirror\" restriction found; skipping fetch."))
> return 1
>
> - # Generally, downloading the same file repeatedly from
> - # every single available mirror is a waste of bandwidth
> - # and time, so there needs to be a cap.
> - checksum_failure_max_tries = 5
> - v = checksum_failure_max_tries
> - try:
> - v =
> int(mysettings.get("PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS",
> - checksum_failure_max_tries))
> - except (ValueError, OverflowError):
> - writemsg(_("!!! Variable
> PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"
> - " contains non-integer value: '%s'\n") % \
> - mysettings["PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"],
> noiselevel=-1)
> - writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS "
> - "default value: %s\n") %
> checksum_failure_max_tries,
> - noiselevel=-1)
> - v = checksum_failure_max_tries
> - if v < 1:
> - writemsg(_("!!! Variable
> PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"
> - " contains value less than 1: '%s'\n") % v,
> noiselevel=-1)
> - writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS "
> - "default value: %s\n") %
> checksum_failure_max_tries,
> - noiselevel=-1)
> - v = checksum_failure_max_tries
> - checksum_failure_max_tries = v
> - del v
> + checksum_failure_max_tries = _get_checksum_failure_max_tries(
> + settings=mysettings)
>
> fetch_resume_size_default = "350K"
> fetch_resume_size = mysettings.get("PORTAGE_FETCH_RESUME_MIN_SIZE")
> --
> 1.8.5.2.8.g0f6c0d1
>
>
>
[-- Attachment #2: Type: text/html, Size: 7069 bytes --]
next prev parent reply other threads:[~2014-01-19 22:45 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-19 3:07 [gentoo-portage-dev] [PATCH 0/3] Initial fetch() refactoring W. Trevor King
2014-01-19 3:07 ` [gentoo-portage-dev] [PATCH 1/3] pym/portage/package/ebuild/fetch.py: Factor out _get_checksum_failure_max_tries W. Trevor King
2014-01-20 1:26 ` Tom Wijsman
2014-01-20 1:56 ` W. Trevor King
2014-01-19 3:07 ` [gentoo-portage-dev] [PATCH 2/3] pym/portage/package/ebuild/fetch.py: Factor out _get_fetch_resume_size W. Trevor King
2014-01-20 1:41 ` Tom Wijsman
2014-01-20 2:01 ` W. Trevor King
2014-01-20 2:26 ` Tom Wijsman
2014-01-19 3:07 ` [gentoo-portage-dev] [PATCH 3/3] pym/portage/package/ebuild/fetch.py: Factor out _get_uris W. Trevor King
2014-01-19 21:36 ` Sebastian Luther
2014-01-19 21:43 ` W. Trevor King
2014-01-19 22:36 ` Alec Warner
2014-01-19 23:06 ` W. Trevor King
2014-01-19 23:31 ` W. Trevor King
2014-01-19 20:05 ` [gentoo-portage-dev] [PATCH 0/3] Initial fetch() refactoring Sebastian Luther
2014-01-19 20:58 ` W. Trevor King
2014-01-19 22:14 ` [gentoo-portage-dev] [PATCH v2 " W. Trevor King
2014-01-19 22:14 ` [gentoo-portage-dev] [PATCH v2 1/3] pym/portage/package/ebuild/fetch.py: Factor out _get_checksum_failure_max_tries W. Trevor King
2014-01-19 22:44 ` Alec Warner [this message]
2014-01-19 22:45 ` Alec Warner
2014-01-19 22:51 ` W. Trevor King
2014-01-19 22:52 ` Alec Warner
2014-01-19 22:14 ` [gentoo-portage-dev] [PATCH v2 2/3] pym/portage/package/ebuild/fetch.py: Factor out _get_fetch_resume_size W. Trevor King
2014-01-19 22:14 ` [gentoo-portage-dev] [PATCH v2 3/3] pym/portage/package/ebuild/fetch.py: Factor out _get_uris W. Trevor King
2014-01-20 3:26 ` [gentoo-portage-dev] [PATCH v3 0/4] Initial fetch() refactoring W. Trevor King
2014-01-20 3:26 ` [gentoo-portage-dev] [PATCH v3 1/4] pym/portage/package/ebuild/fetch.py: Factor out _get_checksum_failure_max_tries W. Trevor King
2014-01-20 3:26 ` [gentoo-portage-dev] [PATCH v3 2/4] pym/portage/package/ebuild/fetch.py: Factor out _get_fetch_resume_size W. Trevor King
2014-01-20 3:26 ` [gentoo-portage-dev] [PATCH v3 3/4] pym/portage/package/ebuild/fetch.py: Factor out _get_uris W. Trevor King
2014-01-21 2:57 ` [gentoo-portage-dev] " W. Trevor King
2014-01-20 3:26 ` [gentoo-portage-dev] [PATCH v3 4/4] pym/portage/package/ebuild/fetch.py: Flatten conditionals in _get_fetch_resume_size W. Trevor King
2014-01-22 5:35 ` [gentoo-portage-dev] [PATCH v3 0/4] Initial fetch() refactoring Mike Frysinger
2014-01-22 16:10 ` W. Trevor King
2014-01-22 19:00 ` Mike Frysinger
2014-01-27 4:00 ` [gentoo-portage-dev] " W. Trevor King
2014-01-19 21:22 ` [gentoo-portage-dev] [PATCH 0/3] " Sebastian Luther
2014-01-19 22:45 ` Alexander Berntsen
2014-01-19 22:46 ` Alec Warner
2014-01-19 22:50 ` Alexander Berntsen
2014-01-19 22:54 ` Alec Warner
2014-01-19 23:51 ` Alexander Berntsen
2014-01-19 23:53 ` Alec Warner
2014-01-19 23:11 ` W. Trevor King
2014-01-22 5:34 ` Mike Frysinger
2014-01-19 21:39 ` Sebastian Luther
2014-01-19 22:46 ` W. Trevor King
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='CAAr7Pr-qpAD7qJi8Kv4dHJqEchOcpH--6+cC=7SRH6CoOrj3Qg@mail.gmail.com' \
--to=antarus@gentoo.org \
--cc=gentoo-portage-dev@lists.gentoo.org \
/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