Class: Dependabot::Uv::UpdateChecker::RequirementsUpdater

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/uv/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.



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

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::Uv::Version))

  return unless latest_resolvable_version

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

Instance Attribute Details

#has_lockfileObject (readonly)

Returns the value of attribute has_lockfile.



30
31
32
# File 'lib/dependabot/uv/update_checker/requirements_updater.rb', line 30

def has_lockfile
  @has_lockfile
end

#latest_resolvable_versionObject (readonly)

Returns the value of attribute latest_resolvable_version.



33
34
35
# File 'lib/dependabot/uv/update_checker/requirements_updater.rb', line 33

def latest_resolvable_version
  @latest_resolvable_version
end

#requirementsObject (readonly)

Returns the value of attribute requirements.



24
25
26
# File 'lib/dependabot/uv/update_checker/requirements_updater.rb', line 24

def requirements
  @requirements
end

#update_strategyObject (readonly)

Returns the value of attribute update_strategy.



27
28
29
# File 'lib/dependabot/uv/update_checker/requirements_updater.rb', line 27

def update_strategy
  @update_strategy
end

Instance Method Details

#updated_requirementsObject



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/dependabot/uv/update_checker/requirements_updater.rb', line 61

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