From acf8cacfbc33ddc91ed7ada8c2d52b6c1c080e1a Mon Sep 17 00:00:00 2001 From: Sergey Lyubimtsev Date: Wed, 9 Feb 2022 10:18:24 +0300 Subject: [PATCH] requirements markers clean up (#10179) * requirements markers clean up * formatting & comments * typos --- tools/openvino_dev/setup.py | 39 ++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/tools/openvino_dev/setup.py b/tools/openvino_dev/setup.py index 54daf093f90..62d7072b1ee 100644 --- a/tools/openvino_dev/setup.py +++ b/tools/openvino_dev/setup.py @@ -99,29 +99,33 @@ class CustomBuild(build): egg_info = list(src.glob('**/*.egg-info')) if egg_info: - - def raw_req(req): - req.marker = None - return str(req) - distributions = pkg_resources.find_distributions(str(Path(egg_info[0]).parent)) for dist in distributions: self.announce(f'Distribution: {dist.egg_name()}', level=log.INFO) + dmap = dist._build_dep_map() # pylint: disable=W0212 # load install_requires list - install_requires = list(sorted(map(raw_req, dist.requires()))) - self.announce(f'Install requires: {install_requires}', level=log.INFO) if cmp_data.get("extract_requirements"): + # install requires {None: [requirements]} + install_requires = sorted(map(str, dmap.get(None, []))) + self.announce(f'Install requires: {install_requires}', level=log.INFO) self.distribution.install_requires.extend(install_requires) - - # load extras_require - if cmp_data.get("extract_extras"): - for extra in dist.extras: + # conditional requirements {':': [requirements]} + conditionals_req = dict(filter(lambda x: x[0] is not None and x[0].split(':')[0] == '', dmap.items())) + self.announce(f'Install requires with marker: {conditionals_req}', level=log.INFO) + for extra, req in conditionals_req.items(): if extra not in self.distribution.extras_require: self.distribution.extras_require[extra] = [] - extras_require = set(map(raw_req, dist.requires((extra,)))) - self.announce(f'Extras: {extra}:{extras_require}', level=log.INFO) - self.distribution.extras_require[extra].extend(extras_require) + self.distribution.extras_require[extra].extend(sorted(map(str, req))) + + if cmp_data.get("extract_extras"): + # extra requirements {'marker:': [requirements]} + extras = dict(filter(lambda x: x[0] is not None and x[0].split(':')[0] != '', dmap.items())) + for extra, req in extras.items(): + self.announce(f'Extras: {extra}:{req}', level=log.INFO) + if extra not in self.distribution.extras_require: + self.distribution.extras_require[extra] = [] + self.distribution.extras_require[extra].extend(sorted(map(str, req))) # extract console scripts if cmp_data.get("extract_entry_points"): @@ -141,6 +145,13 @@ class CustomBuild(build): (dst / path_rel.parent).mkdir(exist_ok=True, parents=True) shutil.copyfile(path, dst / path_rel) + # remove duplications in requirements + reqs_set = set(map(lambda x: x.lower(), self.distribution.install_requires)) + self.distribution.install_requires = sorted(reqs_set) + for extra, req in self.distribution.extras_require.items(): + unique_req = list(set(map(lambda x: x.lower(), req))) + self.distribution.extras_require[extra] = unique_req + # add dependecy on runtime package runtime_req = [f'openvino=={self.distribution.get_version()}'] self.distribution.install_requires.extend(runtime_req)