class Dependabot::Python::UpdateChecker::PipVersionResolver

Attributes

credentials[R]
dependency[R]
dependency_files[R]
ignored_versions[R]
security_advisories[R]

Public Class Methods

new(dependency:, dependency_files:, credentials:, ignored_versions:, raise_on_ignored: false, security_advisories:) click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 11
def initialize(dependency:, dependency_files:, credentials:,
               ignored_versions:, raise_on_ignored: false,
               security_advisories:)
  @dependency          = dependency
  @dependency_files    = dependency_files
  @credentials         = credentials
  @ignored_versions    = ignored_versions
  @raise_on_ignored    = raise_on_ignored
  @security_advisories = security_advisories
end

Public Instance Methods

latest_resolvable_version() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 22
def latest_resolvable_version
  latest_version_finder.latest_version(python_version: python_version)
end
latest_resolvable_version_with_no_unlock() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 26
def latest_resolvable_version_with_no_unlock
  latest_version_finder.
    latest_version_with_no_unlock(python_version: python_version)
end
lowest_resolvable_security_fix_version() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 31
def lowest_resolvable_security_fix_version
  latest_version_finder.
    lowest_security_fix_version(python_version: python_version)
end

Private Instance Methods

latest_version_finder() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 41
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,
    security_advisories: security_advisories
  )
end
python_requirement_parser() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 87
def python_requirement_parser
  @python_requirement_parser ||=
    FileParser::PythonRequirementParser.
    new(dependency_files: dependency_files)
end
python_version() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 52
def python_version
  @python_version ||=
    user_specified_python_version ||
    python_version_matching_imputed_requirements ||
    PythonVersions::PRE_INSTALLED_PYTHON_VERSIONS.first
end
python_version_matching(requirements) click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 76
def python_version_matching(requirements)
  PythonVersions::SUPPORTED_VERSIONS_TO_ITERATE.find do |version_string|
    version = Python::Version.new(version_string)
    requirements.all? do |req|
      next req.any? { |r| r.satisfied_by?(version) } if req.is_a?(Array)

      req.satisfied_by?(version)
    end
  end
end
python_version_matching_imputed_requirements() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 68
def python_version_matching_imputed_requirements
  compiled_file_python_requirement_markers =
    python_requirement_parser.imputed_requirements.map do |r|
      Dependabot::Python::Requirement.new(r)
    end
  python_version_matching(compiled_file_python_requirement_markers)
end
user_specified_python_version() click to toggle source
# File lib/dependabot/python/update_checker/pip_version_resolver.rb, line 59
def user_specified_python_version
  return unless python_requirement_parser.user_specified_requirements.any?

  user_specified_requirements =
    python_requirement_parser.user_specified_requirements.
    map { |r| Python::Requirement.requirements_array(r) }
  python_version_matching(user_specified_requirements)
end