class Dependabot::Uv::UpdateChecker::PipVersionResolver

def initialize(dependency:, dependency_files:, credentials:,

def initialize(dependency:, dependency_files:, credentials:,
               ignored_versions:, update_cooldown: nil, raise_on_ignored: false,
               security_advisories:)
  @dependency = dependency
  @dependency_files    = dependency_files
  @credentials         = credentials
  @ignored_versions    = ignored_versions
  @update_cooldown = update_cooldown
  @raise_on_ignored    = raise_on_ignored
  @security_advisories = security_advisories
end

def language_version_manager

def language_version_manager
  @language_version_manager ||=
    LanguageVersionManager.new(
      python_requirement_parser: python_requirement_parser
    )
end

def latest_resolvable_version

def latest_resolvable_version
  latest_version_finder.latest_version(language_version: language_version_manager.python_version)
end

def latest_resolvable_version_with_no_unlock

def latest_resolvable_version_with_no_unlock
  latest_version_finder
    .latest_version_with_no_unlock(language_version: language_version_manager.python_version)
end

def latest_version_finder

def latest_version_finder
  @latest_version_finder ||= LatestVersionFinder.new(
    dependency: dependency,
    dependency_files: dependency_files,
    credentials: credentials,
    ignored_versions: ignored_versions,
    raise_on_ignored: @raise_on_ignored,
    cooldown_options: @update_cooldown,
    security_advisories: security_advisories
  )
end

def lowest_resolvable_security_fix_version

def lowest_resolvable_security_fix_version
  latest_version_finder
    .lowest_security_fix_version(language_version: language_version_manager.python_version)
end

def python_requirement_parser

def python_requirement_parser
  @python_requirement_parser ||=
    FileParser::PythonRequirementParser.new(
      dependency_files: dependency_files
    )
end