Source code for pyquickhelper.texthelper.version_helper

# -*- coding: utf-8 -*-
"""
Helpers about versionning.

.. versionadded:: 1.8


:githublink:`%|py|8`
"""


[docs]def numeric_module_version(vers): """ Converts a string into a tuple with numbers wherever possible. :param vers: string :return: tuple :githublink:`%|py|16` """ if isinstance(vers, tuple): return vers spl = vers.split(".") r = [] for _ in spl: try: i = int(_) r.append(i) except ValueError: r.append(_) return tuple(r)
[docs]def compare_module_version(num, vers): """ Compares two versions. :param num: first version :param vers: second version :return: -1, 0, 1 This function implements something similar to *StrictVersion* (from *distutils*) but probably more simple. :githublink:`%|py|41` """ if num is None: if vers is None: return 0 else: return 1 if vers is None: return -1 if not isinstance(vers, tuple): vers = numeric_module_version(vers) if not isinstance(num, tuple): num = numeric_module_version(num) if len(num) == len(vers): for a, b in zip(num, vers): if isinstance(a, int) and isinstance(b, int): if a < b: return -1 elif a > b: return 1 else: a = str(a) b = str(b) if a < b: return -1 elif a > b: return 1 return 0 else: if len(num) < len(vers): num = num + (0,) * (len(vers) - len(num)) return compare_module_version(num, vers) else: vers = vers + (0,) * (len(num) - len(vers)) return compare_module_version(num, vers)