From: Chris Lamb Date: Wed, 28 Oct 2009 16:06:59 +0000 (+0000) Subject: Move parse_format into daklib.formats X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c266683b16ad4f1ddcf2cc48cc7931ac007af59;p=dak Move parse_format into daklib.formats Signed-off-by: Chris Lamb --- diff --git a/daklib/formats.py b/daklib/formats.py new file mode 100644 index 00000000..e8ab1d77 --- /dev/null +++ b/daklib/formats.py @@ -0,0 +1,32 @@ +from regexes import re_verwithext +from dak_exceptions import UnknownFormatError + +def parse_format(txt): + """ + Parse a .changes Format string into a tuple representation for easy + comparison. + + >>> parse_format('1.0') + (1, 0) + >>> parse_format('8.4 (hardy)') + (8, 4, 'hardy') + + If the format doesn't match these forms, raises UnknownFormatError. + """ + + format = re_verwithext.search(txt) + + if format is None: + raise UnknownFormatError, txt + + format = format.groups() + + if format[1] is None: + format = int(float(format[0])), 0, format[2] + else: + format = int(format[0]), int(format[1]), format[2] + + if format[2] is None: + format = format[:2] + + return format diff --git a/daklib/srcformats.py b/daklib/srcformats.py index ade3c453..d26a642b 100644 --- a/daklib/srcformats.py +++ b/daklib/srcformats.py @@ -1,6 +1,5 @@ import re -from regexes import re_verwithext from dak_exceptions import UnknownFormatError srcformats = [] @@ -18,36 +17,6 @@ def get_format_from_string(txt): raise UnknownFormatError, "Unknown format %r" % txt -def parse_format(txt): - """ - Parse a .changes Format string into a tuple representation for easy - comparison. - - >>> parse_format('1.0') - (1, 0) - >>> parse_format('8.4 (hardy)') - (8, 4, 'hardy') - - If the format doesn't match these forms, raises UnknownFormatError. - """ - - format = re_verwithext.search(txt) - - if format is None: - raise UnknownFormatError, txt - - format = format.groups() - - if format[1] is None: - format = int(float(format[0])), 0, format[2] - else: - format = int(format[0]), int(format[1]), format[2] - - if format[2] is None: - format = format[:2] - - return format - class SourceFormat(type): def __new__(cls, name, bases, attrs): klass = super(SourceFormat, cls).__new__(cls, name, bases, attrs) diff --git a/tests/test_srcformats.py b/tests/test_srcformats.py index f6d7215f..1e78981b 100755 --- a/tests/test_srcformats.py +++ b/tests/test_srcformats.py @@ -8,6 +8,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from collections import defaultdict from daklib import srcformats +from daklib.formats import parse_format from daklib.dak_exceptions import UnknownFormatError class SourceFormatTestCase(unittest.TestCase): @@ -107,12 +108,12 @@ class FormatTreeQuiltTestCase(SourceFormatTestCase): class ParseFormatTestCase(unittest.TestCase): def assertParse(self, format, expected): - self.assertEqual(srcformats.parse_format(format), expected) + self.assertEqual(parse_format(format), expected) def assertParseFail(self, format): self.assertRaises( UnknownFormatError, - lambda: srcformats.parse_format(format) + lambda: parse_format(format) ) def testParse(self):