From 2b588aeb69ae1f89280f2d9c8fa8290d0e1cdf57 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Fri, 2 Jan 2015 13:58:54 -0600 Subject: [PATCH] Update only if version requirement has changed Previously, if any change was made to a line, it would update the line. This includes whitespace changes around comments on the line. See https://review.openstack.org/#/c/144782/ for an example of a unhelpful update. Change-Id: I0d43c604c10e18c72810d42046d447fbf1deed10 --- update.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/update.py b/update.py index ef48a5011e..28134775ba 100644 --- a/update.py +++ b/update.py @@ -96,6 +96,12 @@ def _pass_through(pip): pip.startswith('-f')) +def _functionally_equal(old_requirement, new_requirement): + old_require = req.InstallRequirement.from_line(old_requirement) + new_require = req.InstallRequirement.from_line(new_requirement) + return old_require.req == new_require.req + + def _read(filename): with open(filename, 'r') as f: return f.read() @@ -156,6 +162,8 @@ def _sync_requirements_file(source_reqs, dev_reqs, dest_path, if ((old_pip in dev_reqs) and (old_require.lower() == dev_reqs[old_pip])): new_reqs.write("%s\n" % dev_reqs[old_pip]) + elif _functionally_equal(old_require, source_reqs[old_pip]): + new_reqs.write(old_line) else: new_reqs.write("%s\n" % source_reqs[old_pip]) elif softupdate: