Show More
@@ -1,69 +1,36 b'' | |||||
1 | # encoding: utf-8 |
|
1 | # encoding: utf-8 | |
2 | """ |
|
2 | """ | |
3 | Utilities for version comparison |
|
3 | Utilities for version comparison | |
4 |
|
4 | |||
5 | It is a bit ridiculous that we need these. |
|
5 | It is a bit ridiculous that we need these. | |
6 | """ |
|
6 | """ | |
7 |
|
7 | |||
8 | #----------------------------------------------------------------------------- |
|
8 | #----------------------------------------------------------------------------- | |
9 | # Copyright (C) 2013 The IPython Development Team |
|
9 | # Copyright (C) 2013 The IPython Development Team | |
10 | # |
|
10 | # | |
11 | # Distributed under the terms of the BSD License. The full license is in |
|
11 | # Distributed under the terms of the BSD License. The full license is in | |
12 | # the file COPYING, distributed as part of this software. |
|
12 | # the file COPYING, distributed as part of this software. | |
13 | #----------------------------------------------------------------------------- |
|
13 | #----------------------------------------------------------------------------- | |
14 |
|
14 | |||
15 | #----------------------------------------------------------------------------- |
|
15 | #----------------------------------------------------------------------------- | |
16 | # Imports |
|
16 | # Imports | |
17 | #----------------------------------------------------------------------------- |
|
17 | #----------------------------------------------------------------------------- | |
18 |
|
18 | |||
19 | from distutils.version import LooseVersion |
|
19 | from distutils.version import LooseVersion | |
20 |
|
20 | |||
21 | #----------------------------------------------------------------------------- |
|
21 | #----------------------------------------------------------------------------- | |
22 | # Code |
|
22 | # Code | |
23 | #----------------------------------------------------------------------------- |
|
23 | #----------------------------------------------------------------------------- | |
24 |
|
24 | |||
25 | class NumericalVersion(LooseVersion): |
|
|||
26 | """A version of LooseVersion that is *always* comparable |
|
|||
27 |
|
||||
28 | String elements (of any kind!) are interpreted as infinite. |
|
|||
29 | Since these are generally only on development branches, |
|
|||
30 | that is fairly safe, even though technically 1.0a1 should be less than 1.0. |
|
|||
31 | """ |
|
|||
32 | def parse (self, vstring): |
|
|||
33 | # I've given up on thinking I can reconstruct the version string |
|
|||
34 | # from the parsed tuple -- so I just store the string here for |
|
|||
35 | # use by __str__ |
|
|||
36 | self.vstring = vstring |
|
|||
37 | components = filter(lambda x: x and x != '.', |
|
|||
38 | self.component_re.split(vstring)) |
|
|||
39 | for i in range(len(components)): |
|
|||
40 | try: |
|
|||
41 | components[i] = int(components[i]) |
|
|||
42 | except ValueError: |
|
|||
43 | # this is the only change |
|
|||
44 | components[i] = float('inf') |
|
|||
45 |
|
||||
46 | self.version = components |
|
|||
47 |
|
||||
48 | def version_tuple(vs): |
|
|||
49 | """Return a tuple of numbers from a version string. |
|
|||
50 |
|
||||
51 | 'dev' 'a', 'etc' are transformed to float('inf'), |
|
|||
52 | so they will always compare positively to any |
|
|||
53 | regular integer element. |
|
|||
54 | """ |
|
|||
55 | return tuple(NumericalVersion(vs).version) |
|
|||
56 |
|
||||
57 | # |
|
|||
58 | def check_version(v, check): |
|
25 | def check_version(v, check): | |
59 | """check version string v >= check |
|
26 | """check version string v >= check | |
60 |
|
27 | |||
61 | If dev/prerelease tags result in TypeError for string-number comparison, |
|
28 | If dev/prerelease tags result in TypeError for string-number comparison, | |
62 | it is assumed that the dependency is satisfied. |
|
29 | it is assumed that the dependency is satisfied. | |
63 | Users on dev branches are responsible for keeping their own packages up to date. |
|
30 | Users on dev branches are responsible for keeping their own packages up to date. | |
64 | """ |
|
31 | """ | |
65 | try: |
|
32 | try: | |
66 | return LooseVersion(v) >= LooseVersion(check) |
|
33 | return LooseVersion(v) >= LooseVersion(check) | |
67 | except TypeError: |
|
34 | except TypeError: | |
68 | return True |
|
35 | return True | |
69 |
|
36 |
General Comments 0
You need to be logged in to leave comments.
Login now