Compare docker versions >>> v1 = '1.9' >>> v2 = '1.10' >>> compare_version(v1, v2) 1 >>> compare_version(v2, v1) -1 >>> compare_version(v2, v2) 0
(v1, v2)
| 47 | |
| 48 | @lru_cache(maxsize=None) |
| 49 | def compare_version(v1, v2): |
| 50 | """Compare docker versions |
| 51 | |
| 52 | >>> v1 = '1.9' |
| 53 | >>> v2 = '1.10' |
| 54 | >>> compare_version(v1, v2) |
| 55 | 1 |
| 56 | >>> compare_version(v2, v1) |
| 57 | -1 |
| 58 | >>> compare_version(v2, v2) |
| 59 | 0 |
| 60 | """ |
| 61 | if v1 == v2: |
| 62 | return 0 |
| 63 | # Split into `sys.version_info` like tuples. |
| 64 | s1 = tuple(int(p) for p in v1.split('.')) |
| 65 | s2 = tuple(int(p) for p in v2.split('.')) |
| 66 | # Compare each component, padding with 0 if necessary. |
| 67 | for c1, c2 in zip_longest(s1, s2, fillvalue=0): |
| 68 | if c1 == c2: |
| 69 | continue |
| 70 | elif c1 > c2: |
| 71 | return -1 |
| 72 | else: |
| 73 | return 1 |
| 74 | return 0 |
| 75 | |
| 76 | |
| 77 | def version_lt(v1, v2): |
no outgoing calls