[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