Class: Dependabot::Uv::UpdateChecker::LockFileResolver
- Inherits:
-
Object
- Object
- Dependabot::Uv::UpdateChecker::LockFileResolver
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/uv/update_checker/lock_file_resolver.rb
Instance Method Summary collapse
-
#initialize(dependency:, dependency_files:, credentials:, repo_contents_path: nil, security_advisories: [], ignored_versions: [], update_cooldown: nil) ⇒ LockFileResolver
constructor
A new instance of LockFileResolver.
- #latest_resolvable_version(requirement:) ⇒ Object
- #lowest_resolvable_security_fix_version ⇒ Object
- #resolvable?(version:) ⇒ Boolean
Constructor Details
#initialize(dependency:, dependency_files:, credentials:, repo_contents_path: nil, security_advisories: [], ignored_versions: [], update_cooldown: nil) ⇒ LockFileResolver
Returns a new instance of LockFileResolver.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/dependabot/uv/update_checker/lock_file_resolver.rb', line 37 def initialize( dependency:, dependency_files:, credentials:, repo_contents_path: nil, security_advisories: [], ignored_versions: [], update_cooldown: nil ) @dependency = dependency @dependency_files = dependency_files @credentials = credentials @repo_contents_path = repo_contents_path @security_advisories = security_advisories @ignored_versions = ignored_versions @update_cooldown = update_cooldown @latest_resolvable_versions = T.let( {}, T::Hash[String, T.nilable(Dependabot::Uv::Version)] ) @resolved_versions = T.let( {}, T::Hash[String, T.nilable(Dependabot::Uv::Version)] ) @resolvable_versions = T.let({}, T::Hash[String, T::Boolean]) end |
Instance Method Details
#latest_resolvable_version(requirement:) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/dependabot/uv/update_checker/lock_file_resolver.rb', line 65 def latest_resolvable_version(requirement:) return nil unless requirement return @latest_resolvable_versions[requirement] if @latest_resolvable_versions.key?(requirement) @latest_resolvable_versions[requirement] = fetch_latest_resolvable_version(requirement) end |
#lowest_resolvable_security_fix_version ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/dependabot/uv/update_checker/lock_file_resolver.rb', line 82 def lowest_resolvable_security_fix_version # Delegate to LatestVersionFinder which handles security advisory filtering fix_version = latest_version_finder.lowest_security_fix_version( language_version: python_version ) return nil unless fix_version return nil unless resolvable?(version: fix_version) # Return the fix version cast to Uv::Version Uv::Version.new(fix_version.to_s) end |
#resolvable?(version:) ⇒ Boolean
73 74 75 76 77 78 79 |
# File 'lib/dependabot/uv/update_checker/lock_file_resolver.rb', line 73 def resolvable?(version:) target_version = Uv::Version.new(version.to_s) key = target_version.to_s return T.must(@resolvable_versions[key]) if @resolvable_versions.key?(key) @resolvable_versions[key] = resolved_version("==#{key}", target_version)&.to_s == key end |