class Dependabot::Uv::Requirement

def convert_caret_req(req_string)

https://github.com/sdispater/poetry#caret-requirement
Poetry uses ^ requirements
def convert_caret_req(req_string)
  version = req_string.gsub(/^\^/, "")
  parts = version.split(".")
  parts.fill(0, parts.length...3)
  first_non_zero = parts.find { |d| d != "0" }
  first_non_zero_index =
    first_non_zero ? parts.index(first_non_zero) : parts.count - 1
  upper_bound = parts.map.with_index do |part, i|
    if i < first_non_zero_index then part
    elsif i == first_non_zero_index then (part.to_i + 1).to_s
    # .dev has lowest precedence: https://packaging.python.org/en/latest/specifications/version-specifiers/#summary-of-permitted-suffixes-and-relative-ordering
    elsif i > first_non_zero_index && i == 2 then "0.dev"
    else
      0
    end
  end.join(".")
  [">= #{version}", "< #{upper_bound}"]
end