]> git.decadent.org.uk Git - dak.git/blob - daklib/formats.py
Move parse_format into daklib.formats
[dak.git] / daklib / formats.py
1 from regexes import re_verwithext
2 from dak_exceptions import UnknownFormatError
3
4 def parse_format(txt):
5     """
6     Parse a .changes Format string into a tuple representation for easy
7     comparison.
8
9     >>> parse_format('1.0')
10     (1, 0)
11     >>> parse_format('8.4 (hardy)')
12     (8, 4, 'hardy')
13
14     If the format doesn't match these forms, raises UnknownFormatError.
15     """
16
17     format = re_verwithext.search(txt)
18
19     if format is None:
20         raise UnknownFormatError, txt
21
22     format = format.groups()
23
24     if format[1] is None:
25         format = int(float(format[0])), 0, format[2]
26     else:
27         format = int(format[0]), int(format[1]), format[2]
28
29     if format[2] is None:
30         format = format[:2]
31
32     return format