Class: Dependabot::Python::UpdateChecker::PipCompileVersionResolver
- Inherits:
-
Object
- Object
- Dependabot::Python::UpdateChecker::PipCompileVersionResolver
- Defined in:
- lib/dependabot/python/update_checker/pip_compile_version_resolver.rb
Overview
This class does version resolution for pip-compile. Its approach is:
-
Unlock the dependency we’re checking in the requirements.in file
-
Run ‘pip-compile` and see what the result is
rubocop:disable Metrics/ClassLength
Constant Summary collapse
- GIT_DEPENDENCY_UNREACHABLE_REGEX =
/git clone --filter=blob:none --quiet (?<url>[^\s]+).* /
- GIT_REFERENCE_NOT_FOUND_REGEX =
/Did not find branch or tag '(?<tag>[^\n"]+)'/m
- NATIVE_COMPILATION_ERROR =
"pip._internal.exceptions.InstallationSubprocessError: Command errored out with exit status 1:"
- PYTHON_PACKAGE_NAME_REGEX =
/[A-Za-z0-9_\-]+/
- RESOLUTION_IMPOSSIBLE_ERROR =
"ResolutionImpossible"
- ERROR_REGEX =
/(?<=ERROR\:\W).*$/
Instance Attribute Summary collapse
-
#credentials ⇒ Object
readonly
Returns the value of attribute credentials.
-
#dependency ⇒ Object
readonly
Returns the value of attribute dependency.
-
#dependency_files ⇒ Object
readonly
Returns the value of attribute dependency_files.
Instance Method Summary collapse
-
#initialize(dependency:, dependency_files:, credentials:) ⇒ PipCompileVersionResolver
constructor
A new instance of PipCompileVersionResolver.
- #latest_resolvable_version(requirement: nil) ⇒ Object
- #resolvable?(version:) ⇒ Boolean
Constructor Details
#initialize(dependency:, dependency_files:, credentials:) ⇒ PipCompileVersionResolver
Returns a new instance of PipCompileVersionResolver.
39 40 41 42 43 44 |
# File 'lib/dependabot/python/update_checker/pip_compile_version_resolver.rb', line 39 def initialize(dependency:, dependency_files:, credentials:) @dependency = dependency @dependency_files = dependency_files @credentials = credentials @build_isolation = true end |
Instance Attribute Details
#credentials ⇒ Object (readonly)
Returns the value of attribute credentials.
37 38 39 |
# File 'lib/dependabot/python/update_checker/pip_compile_version_resolver.rb', line 37 def credentials @credentials end |
#dependency ⇒ Object (readonly)
Returns the value of attribute dependency.
37 38 39 |
# File 'lib/dependabot/python/update_checker/pip_compile_version_resolver.rb', line 37 def dependency @dependency end |
#dependency_files ⇒ Object (readonly)
Returns the value of attribute dependency_files.
37 38 39 |
# File 'lib/dependabot/python/update_checker/pip_compile_version_resolver.rb', line 37 def dependency_files @dependency_files end |
Instance Method Details
#latest_resolvable_version(requirement: nil) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/dependabot/python/update_checker/pip_compile_version_resolver.rb', line 46 def latest_resolvable_version(requirement: nil) version_string = fetch_latest_resolvable_version_string(requirement: requirement) version_string.nil? ? nil : Python::Version.new(version_string) end |
#resolvable?(version:) ⇒ Boolean
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/dependabot/python/update_checker/pip_compile_version_resolver.rb', line 53 def resolvable?(version:) @resolvable ||= {} return @resolvable[version] if @resolvable.key?(version) @resolvable[version] = if fetch_latest_resolvable_version_string(requirement: "==#{version}") true else false end end |