[blivet f20/master] Add a function to translate sizes from English
Vratislav Podzimek
vpodzime at redhat.com
Mon Nov 25 08:46:02 UTC 2013
On Wed, 2013-11-20 at 15:29 -0500, David Shea wrote:
> Size specs are expected to be translated to the current locale, so
> translate constant size specs before passing them to the Size
> constructor.
> ---
> blivet/__init__.py | 12 ++++++------
> blivet/size.py | 16 ++++++++++++++++
> 2 files changed, 22 insertions(+), 6 deletions(-)
>
> diff --git a/blivet/__init__.py b/blivet/__init__.py
> index dbd8b69..327389b 100644
> --- a/blivet/__init__.py
> +++ b/blivet/__init__.py
> @@ -85,7 +85,7 @@ import util
> import arch
> from flags import flags
> from platform import platform as _platform
> -from size import Size
> +from size import Size, xlate_size
>
> import shelve
> import contextlib
> @@ -876,7 +876,7 @@ class Blivet(object):
> should_clear = self.shouldClear(disk, clearPartType=clearPartType,
> clearPartDisks=[disk.name])
> if should_clear:
> - free[disk.name] = (Size(spec="%f mb" % disk.size), 0)
> + free[disk.name] = (Size(spec=xlate_size("%f mb" % disk.size)), 0)
> continue
>
> disk_free = 0
> @@ -899,8 +899,8 @@ class Blivet(object):
> elif disk.format.type is None:
> disk_free = disk.size
>
> - free[disk.name] = (Size(spec="%f mb" % disk_free),
> - Size(spec="%f mb" % fs_free))
> + free[disk.name] = (Size(spec=xlate_size("%f mb" % disk_free)),
> + Size(spec=xlate_size("%f mb" % fs_free)))
>
> return free
>
> @@ -1595,8 +1595,8 @@ class Blivet(object):
> "'biosboot' type partition."))
>
> if not swaps:
> - installed = Size(spec="%s kb" % util.total_memory())
> - required = Size(spec="%s kb" % isys.EARLY_SWAP_RAM)
> + installed = Size(spec=xlate_size("%s kb" % util.total_memory()))
> + required = Size(spec=xlate_size("%s kb" % isys.EARLY_SWAP_RAM))
>
> if installed < required:
> errors.append(_("You have not specified a swap partition. "
> diff --git a/blivet/size.py b/blivet/size.py
> index 6c3eb90..d9af722 100644
> --- a/blivet/size.py
> +++ b/blivet/size.py
> @@ -99,6 +99,22 @@ def _parseSpec(spec):
>
> raise ValueError("invalid size specification", spec)
>
> +def xlate_size(spec):
> + """Translate English size specifiers into the current locale."""
> +
> + m = re.match(r'(.*?)([A-Za-z]*)$', spec.strip())
I belive this RE deserves a comment about the .*? combination.
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic
More information about the anaconda-patches
mailing list