def configbytes(self, section, name, default=0, untrusted=False): """parse a configuration element as a quantity in bytes Units can be specified as b (bytes), k or kb (kilobytes), m or mb (megabytes), g or gb (gigabytes). >>> u = ui(); s = 'foo' >>> u.setconfig(s, 'val1', '42') >>> u.configbytes(s, 'val1') 42 >>> u.setconfig(s, 'val2', '42.5 kb') >>> u.configbytes(s, 'val2') 43520 >>> u.configbytes(s, 'unknown', '7 MB') 7340032 >>> u.setconfig(s, 'invalid', 'somevalue') >>> u.configbytes(s, 'invalid') Traceback (most recent call last): ... ConfigError: foo.invalid is not a byte quantity ('somevalue') """ value = self.config(section, name) if value is None: if not isinstance(default, str): return default value = default try: return util.sizetoint(value) except error.ParseError: raise error.ConfigError( _("%s.%s is not a byte quantity ('%s')") % (section, name, value))
def configbytes(self, section, name, default=0, untrusted=False): """parse a configuration element as a quantity in bytes Units can be specified as b (bytes), k or kb (kilobytes), m or mb (megabytes), g or gb (gigabytes). >>> u = ui(); s = 'foo' >>> u.setconfig(s, 'val1', '42') >>> u.configbytes(s, 'val1') 42 >>> u.setconfig(s, 'val2', '42.5 kb') >>> u.configbytes(s, 'val2') 43520 >>> u.configbytes(s, 'unknown', '7 MB') 7340032 >>> u.setconfig(s, 'invalid', 'somevalue') >>> u.configbytes(s, 'invalid') Traceback (most recent call last): ... ConfigError: foo.invalid is not a byte quantity ('somevalue') """ value = self.config(section, name) if value is None: if not isinstance(default, str): return default value = default try: return util.sizetoint(value) except error.ParseError: raise error.ConfigError(_("%s.%s is not a byte quantity ('%s')") % (section, name, value))
def size(mctx, x): """``size(expression)`` File size matches the given expression. Examples: - 1k (files from 1024 to 2047 bytes) - < 20k (files less than 20480 bytes) - >= .5MB (files at least 524288 bytes) - 4k - 1MB (files from 4096 bytes to 1048576 bytes) """ # i18n: "size" is a keyword expr = getstring(x, _("size requires an expression")).strip() if '-' in expr: # do we have a range? a, b = expr.split('-', 1) a = util.sizetoint(a) b = util.sizetoint(b) m = lambda x: x >= a and x <= b elif expr.startswith("<="): a = util.sizetoint(expr[2:]) m = lambda x: x <= a elif expr.startswith("<"): a = util.sizetoint(expr[1:]) m = lambda x: x < a elif expr.startswith(">="): a = util.sizetoint(expr[2:]) m = lambda x: x >= a elif expr.startswith(">"): a = util.sizetoint(expr[1:]) m = lambda x: x > a elif expr[0].isdigit or expr[0] == '.': a = util.sizetoint(expr) b = _sizetomax(expr) m = lambda x: x >= a and x <= b else: raise error.ParseError(_("couldn't parse size: %s") % expr) return [f for f in mctx.existing() if m(mctx.ctx[f].size())]