Given a resolved entry with multiple parent dependencies with different
        constraints, searches for the resolution that satisfies all of the parent
        constraints.

        :return: A new **InstallRequirement** satisfying all parent constraints
        :raises: :exc:`~pipenv.exceptions.DependencyConflict` if resolution is impossible

def constraint_from_parent_conflicts(self):
        """
        Given a resolved entry with multiple parent dependencies with different
        constraints, searches for the resolution that satisfies all of the parent
        constraints.

        :return: A new **InstallRequirement** satisfying all parent constraints
        :raises: :exc:`~pipenv.exceptions.DependencyConflict` if resolution is impossible
        """
        # ensure that we satisfy the parent dependencies of this dep
        from pipenv.vendor.packaging.specifiers import Specifier
        parent_dependencies = set()
        has_mismatch = False
        can_use_original = True
        for p in self.parent_deps:
            # updated dependencies should be satisfied since they were resolved already
            if p.is_updated:
                continue
            # parents with no requirements can't conflict
            if not p.requirements:
                continue
            needed = p.requirements.get("dependencies", [])
            entry_ref = p.get_dependency(self.name)
            required = entry_ref.get("required_version", "*")
            required = self.clean_specifier(required)
            parent_requires = self.make_requirement(self.name, required)
            parent_dependencies.add("{0} => {1} ({2})".format(p.name, self.name, required))
            if not parent_requires.requirement.specifier.contains(self.original_version):
                can_use_original = False
            if not parent_requires.requirement.specifier.contains(self.updated_version):
                has_mismatch = True
        if has_mismatch and not can_use_original:
            from pipenv.exceptions import DependencyConflict
            msg = (
                "Cannot resolve {0} ({1}) due to conflicting parent dependencies: "
                "\n\t{2}".format(
                    self.name, self.updated_version, "\n\t".join(parent_dependencies)
                )
            )
            raise DependencyConflict(msg)
        elif can_use_original:
            return self.lockfile_entry.as_ireq()
        return self.entry.as_ireq()