[FIX] script poetry_update: support ~= when compare dependency

- clean code
This commit is contained in:
Mathieu Benoit 2023-02-14 17:32:25 -05:00
parent b913300b5b
commit 5be3b1c1c8

View file

@ -82,8 +82,10 @@ def combine_requirements(config):
""" """
priority_filename_requirement = "requirements.txt" priority_filename_requirement = "requirements.txt"
second_priority_filename_requirement = "odoo/requirements.txt" second_priority_filename_requirement = "odoo/requirements.txt"
lst_sign = ("==", "!=", ">=", "<=", "<", ">", ";") except_sign = ";"
lst_sign = ("==", "!=", ">=", "<=", "<", ">", except_sign, "~=")
lst_requirements = [] lst_requirements = []
lst_replace_special_sign = {} # the lib iscompatible doesn't support ~=
ignore_requirements = ["sys_platform == 'win32'", "python_version < '3.7'"] ignore_requirements = ["sys_platform == 'win32'", "python_version < '3.7'"]
dct_requirements = defaultdict(set) dct_requirements = defaultdict(set)
lst_requirements_file = get_lst_requirements_txt() lst_requirements_file = get_lst_requirements_txt()
@ -102,23 +104,23 @@ def combine_requirements(config):
if sign in b: if sign in b:
# Exception, some time the sign ; can be first, just check # Exception, some time the sign ; can be first, just check
if ( if (
sign != ";" sign != except_sign
and ";" in b and except_sign in b
and b.find(sign) > b.find(";") and b.find(sign) > b.find(except_sign)
): ):
module_name = b[: b.find(";")] module_name = b[: b.find(except_sign)]
else: else:
module_name = b[: b.find(sign)] module_name = b[: b.find(sign)]
module_name = module_name.strip() module_name = module_name.strip()
# Special condition for ";", ignore it # Special condition for ";", ignore it
if ";" in b: if except_sign in b:
for ignore_string in ignore_requirements: for ignore_string in ignore_requirements:
if ignore_string in b: if ignore_string in b:
break break
if ignore_string in b: if ignore_string in b:
break break
lst_requirements_with_condition.add(module_name) lst_requirements_with_condition.add(module_name)
value = b[: b.find(";")].strip() value = b[: b.find(except_sign)].strip()
dct_special_condition[module_name].append(b) dct_special_condition[module_name].append(b)
else: else:
value = b value = b
@ -174,6 +176,10 @@ def combine_requirements(config):
for requirement in lst_requirement: for requirement in lst_requirement:
if ".*" in requirement: if ".*" in requirement:
requirement = requirement.replace(".*", "") requirement = requirement.replace(".*", "")
if "~=" in requirement:
old_requirement = requirement
requirement = requirement.replace("~=", "==")
lst_replace_special_sign[requirement] = old_requirement
result_number = iscompatible.parse_requirements(requirement) result_number = iscompatible.parse_requirements(requirement)
if not result_number: if not result_number:
# Ignore empty version # Ignore empty version
@ -225,8 +231,13 @@ def combine_requirements(config):
odoo_value = None odoo_value = None
erplibre_value = None erplibre_value = None
for version_requirement in lst_version_requirement: for version_requirement in lst_version_requirement:
key_require = version_requirement[0]
if key_require in lst_replace_special_sign.keys():
key_require = lst_replace_special_sign.get(
key_require
)
filename_1 = dct_requirements_module_filename.get( filename_1 = dct_requirements_module_filename.get(
version_requirement[0] key_require
) )
if priority_filename_requirement in filename_1: if priority_filename_requirement in filename_1:
erplibre_value = version_requirement[0] erplibre_value = version_requirement[0]
@ -265,7 +276,7 @@ def combine_requirements(config):
result = key result = key
if result: if result:
dct_requirements[key] = set((result,)) dct_requirements[key] = {result}
else: else:
print(f"Internal error, missing result for {lst_requirement}.") print(f"Internal error, missing result for {lst_requirement}.")