          for key, specs in self.env.required_packages:
              if self.env.is_conda:
                  # Get Conda alias for Key
                  key = CONDA_MAPPING.get(key, (key, None))[0]
              if key not in self.env.installed_packages:
                  self.env.missing_packages.append((key, specs))
                  continue
              installed_vers = self.env.installed_packages.get(key, "")
 
</s> remove         for pkg in self.env.required_packages:
            pkg = self.check_os_requirements(pkg)
            if pkg is None:
                continue
            key = pkg.split("==")[0]
 </s> add         for key, specs in self.env.required_packages: </s> remove                 self.env.missing_packages.append(pkg)
 </s> add                 self.env.missing_packages.append((key, specs)) </s> remove             else:
                if len(pkg.split("==")) > 1:
                    if pkg.split("==")[1] != self.env.installed_packages.get(key):
                        self.env.missing_packages.append(pkg)
                        continue

    @staticmethod
    def check_os_requirements(package):
        """ Check that the required package is required for this OS """
        if ";" not in package and "sys_platform" not in package:
            return package
        package = "".join(package.split())
        pkg, tags = package.split(";")
        tags = tags.split("==")
        sys_platform = tags[tags.index("sys_platform") + 1].replace('"', "").replace("'", "")
        if sys_platform == sys.platform:
            return pkg
        return None
 </s> add             installed_vers = self.env.installed_packages.get(key, "")
            if specs and not all(self._operators[spec[0]](installed_vers, spec[1])
                                 for spec in specs):
                self.env.missing_packages.append((key, specs)) </s> remove             else:
                if len(pkg[0].split("==")) > 1:
                    if pkg[0].split("==")[1] != self.env.installed_conda_packages.get(key):
                        self.env.conda_missing_packages.append(pkg)
                        continue
 </s> add             if len(pkg[0].split("==")) > 1:
                if pkg[0].split("==")[1] != self.env.installed_conda_packages.get(key):
                    self.env.conda_missing_packages.append(pkg)
                    continue </s> remove         if self.is_conda:
            self.update_tf_dep_conda()
            return

        if not self.enable_cuda:
            self.required_packages.append("tensorflow==1.15.0")
 </s> add         if self.is_conda or not self.enable_cuda:
            # CPU/AMD doesn't need Cuda and Conda handles Cuda and cuDNN so nothing to do here
            if (key == "git+https://github.com/deepfakes/nvidia-ml-py3.git" and
                    self.env.installed_packages.get("nvidia-ml-py3", "") == "7.352.1"):
                # Annoying explicit hack to get around our custom version of nvidia-ml=py3 being
                # constantly re-downloaded
                continue
          for key, specs in self.env.required_packages:
              if self.env.is_conda:
                  # Get Conda alias for Key
                  key = CONDA_MAPPING.get(key, (key, None))[0]
            if (key == "git+https://github.com/deepfakes/nvidia-ml-py3.git" and
                    self.env.installed_packages.get("nvidia-ml-py3", "") == "7.352.1"):
                # Annoying explicit hack to get around our custom version of nvidia-ml=py3 being
                # constantly re-downloaded
                continue
              if key not in self.env.installed_packages:
                  self.env.missing_packages.append((key, specs))
                  continue
              installed_vers = self.env.installed_packages.get(key, "")
keep keep keep add keep keep keep keep
 Dependencies update (#1028)

* Dependencies update
  - Split requirements.txt into separate version files
  - More flexible package pinning
  - Update dependencies
  - Fix pynvml being constantly re-downloaded on update
  - Update dockerfiles
  - update INSTALL.md 
setup.py