Class: Dependabot::Python::UpdateChecker::PoetryVersionResolver
- Inherits:
-
Object
- Object
- Dependabot::Python::UpdateChecker::PoetryVersionResolver
- Extended by:
- T::Helpers, T::Sig
- Defined in:
- lib/dependabot/python/update_checker/poetry_version_resolver.rb
Overview
This class does version resolution for pyproject.toml files.
Constant Summary collapse
- GIT_REFERENCE_NOT_FOUND_REGEX =
/ (Failed to checkout (?<tag>.+?) (?<url>.+?).git at '(?<tag>.+?)' | ...Failedtoclone (?<url>.+?).gitat'(?<tag>.+?)', verifyrefexistsonremote) /x- GIT_DEPENDENCY_UNREACHABLE_REGEX =
/ \s+Failed\sto\sclone \s+(?<url>.+?), \s+check\syour\sgit\sconfiguration /mx- INCOMPATIBLE_CONSTRAINTS =
/Incompatible constraints in requirements of (?<dep>.+?) ((?<ver>.+?)):/- PACKAGE_RESOLVER_ERRORS =
T.let( { package_info_error: /Unable to determine package info/, self_dep_error: /Package '(?<path>.*)' is listed as a dependency of itself./, incompatible_constraints: /Incompatible constraints in requirements/ }.freeze, T::Hash[T.nilable(String), Regexp] )
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.
-
#error_handler ⇒ Object
readonly
Returns the value of attribute error_handler.
-
#repo_contents_path ⇒ Object
readonly
Returns the value of attribute repo_contents_path.
Instance Method Summary collapse
-
#initialize(dependency:, dependency_files:, credentials:, repo_contents_path:) ⇒ PoetryVersionResolver
constructor
A new instance of PoetryVersionResolver.
- #latest_resolvable_version(requirement: nil) ⇒ Object
- #resolvable?(version:) ⇒ Boolean
Constructor Details
#initialize(dependency:, dependency_files:, credentials:, repo_contents_path:) ⇒ PoetryVersionResolver
Returns a new instance of PoetryVersionResolver.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 79 def initialize(dependency:, dependency_files:, credentials:, repo_contents_path:) @dependency = T.let(dependency, Dependabot::Dependency) @dependency_files = T.let(dependency_files, T::Array[Dependabot::DependencyFile]) @credentials = T.let(credentials, T::Array[Dependabot::Credential]) @repo_contents_path = T.let(repo_contents_path, T.nilable(String)) @error_handler = T.let( PoetryErrorHandler.new(dependencies: dependency, dependency_files: dependency_files), Dependabot::Python::PoetryErrorHandler ) @resolvable = T.let({}, T::Hash[Gem::Version, T::Boolean]) @latest_resolvable_version_string = T.let({}, T::Hash[T.nilable(String), T.nilable(String)]) @original_reqs_resolvable = T.let(nil, T.nilable(T::Boolean)) @python_requirement_parser = T.let(nil, T.nilable(FileParser::PythonRequirementParser)) @language_version_manager = T.let(nil, T.nilable(LanguageVersionManager)) end |
Instance Attribute Details
#credentials ⇒ Object (readonly)
Returns the value of attribute credentials.
63 64 65 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 63 def credentials @credentials end |
#dependency ⇒ Object (readonly)
Returns the value of attribute dependency.
57 58 59 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 57 def dependency @dependency end |
#dependency_files ⇒ Object (readonly)
Returns the value of attribute dependency_files.
60 61 62 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 60 def dependency_files @dependency_files end |
#error_handler ⇒ Object (readonly)
Returns the value of attribute error_handler.
69 70 71 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 69 def error_handler @error_handler end |
#repo_contents_path ⇒ Object (readonly)
Returns the value of attribute repo_contents_path.
66 67 68 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 66 def repo_contents_path @repo_contents_path end |
Instance Method Details
#latest_resolvable_version(requirement: nil) ⇒ Object
96 97 98 99 100 101 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 96 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
104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/dependabot/python/update_checker/poetry_version_resolver.rb', line 104 def resolvable?(version:) return T.must(@resolvable[version]) if @resolvable.key?(version) @resolvable[version] = if fetch_latest_resolvable_version_string(requirement: "==#{version}") true else false end rescue SharedHelpers::HelperSubprocessFailed => e raise unless e..include?("version solving failed.") @resolvable[version] = false end |