Class: Dependabot::Python::UpdateChecker::RequirementsUpdater

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/python/update_checker/requirements_updater.rb

Defined Under Namespace

Classes: UnfixableRequirement

Constant Summary collapse

PYPROJECT_OR_SEPARATOR =
T.let(/(?<=[a-zA-Z0-9*])\s*\|+/, Regexp)
PYPROJECT_SEPARATOR =
T.let(/#{PYPROJECT_OR_SEPARATOR}|,/, Regexp)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(requirements:, update_strategy:, has_lockfile:, latest_resolvable_version:) ⇒ RequirementsUpdater

Returns a new instance of RequirementsUpdater.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/dependabot/python/update_checker/requirements_updater.rb', line 42

def initialize(
  requirements:,
  update_strategy:,
  has_lockfile:,
  latest_resolvable_version:
)
  @requirements = T.let(requirements, T::Array[T::Hash[Symbol, T.untyped]])
  @update_strategy = T.let(update_strategy, Dependabot::RequirementsUpdateStrategy)
  @has_lockfile = T.let(has_lockfile, T::Boolean)
  @latest_resolvable_version = T.let(nil, T.nilable(Dependabot::Python::Version))

  return unless latest_resolvable_version

  @latest_resolvable_version = Python::Version.new(latest_resolvable_version)
end

Instance Attribute Details

#has_lockfileObject (readonly)

Returns the value of attribute has_lockfile.



29
30
31
# File 'lib/dependabot/python/update_checker/requirements_updater.rb', line 29

def has_lockfile
  @has_lockfile
end

#latest_resolvable_versionObject (readonly)

Returns the value of attribute latest_resolvable_version.



32
33
34
# File 'lib/dependabot/python/update_checker/requirements_updater.rb', line 32

def latest_resolvable_version
  @latest_resolvable_version
end

#requirementsObject (readonly)

Returns the value of attribute requirements.



23
24
25
# File 'lib/dependabot/python/update_checker/requirements_updater.rb', line 23

def requirements
  @requirements
end

#update_strategyObject (readonly)

Returns the value of attribute update_strategy.



26
27
28
# File 'lib/dependabot/python/update_checker/requirements_updater.rb', line 26

def update_strategy
  @update_strategy
end

Instance Method Details

#updated_requirementsObject



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/dependabot/python/update_checker/requirements_updater.rb', line 59

def updated_requirements
  return requirements if update_strategy.lockfile_only?

  requirements.map do |req|
    case req[:file]
    when /setup\.(?:py|cfg)$/ then updated_setup_requirement(req)
    when "pyproject.toml" then updated_pyproject_requirement(req)
    when "Pipfile" then updated_pipfile_requirement(req)
    when /\.txt$|\.in$/ then updated_requirement(req)
    else raise "Unexpected filename: #{req[:file]}"
    end
  end
end