code: def _requirement_to_str_lowercase_name(requirement):
      
  
      parts = [requirement.name.lower()]
  
      if requirement.extras:
          parts.append("[{0}]".format(",".join(sorted(requirement.extras))))
  
      if requirement.specifier:
          parts.append(str(requirement.specifier))
  
      if requirement.url:
          parts.append("@ {0}".format(requirement.url))
  
      if requirement.marker:
          parts.append("; {0}".format(requirement.marker))
  
      return "".join(parts)
docs: Formats a packaging.requirements.Requirement with a lowercase name.
  
      This is simply a copy of
      https://github.com/pypa/packaging/blob/16.8/packaging/requirements.py#L109-L124
      modified to lowercase the dependency name.
  
      Previously, we were invoking the original Requirement.__str__ method and
      lower-casing the entire result, which would lowercase the name, *and* other,
      important stuff that should not be lower-cased (such as the marker). See
      this issue for more information: https://github.com/pypa/pipenv/issues/2113.