Class: Dependabot::Python::UpdateChecker::PipVersionResolver::MarkerEvaluator
- Inherits:
-
Object
- Object
- Dependabot::Python::UpdateChecker::PipVersionResolver::MarkerEvaluator
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/python/update_checker/pip_version_resolver/marker_evaluator.rb
Instance Method Summary collapse
- #marker_satisfied?(marker:, python_version:) ⇒ Boolean
- #split_requirement_and_marker(requirement_string) ⇒ Object
Instance Method Details
#marker_satisfied?(marker:, python_version:) ⇒ Boolean
39 40 41 42 43 44 45 |
# File 'lib/dependabot/python/update_checker/pip_version_resolver/marker_evaluator.rb', line 39 def marker_satisfied?(marker:, python_version:) evaluate_marker_expression(marker, python_version) rescue ArgumentError # If we cannot safely parse a python marker, treat it as applicable. # This avoids silently skipping transitive constraints that may break installs. true end |
#split_requirement_and_marker(requirement_string) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/dependabot/python/update_checker/pip_version_resolver/marker_evaluator.rb', line 14 def split_requirement_and_marker(requirement_string) separator_index = T.let(nil, T.nilable(Integer)) in_single_quote = T.let(false, T::Boolean) in_double_quote = T.let(false, T::Boolean) requirement_string.each_char.with_index do |char, index| in_single_quote, in_double_quote, quote_toggled = toggle_quote_state(char, in_single_quote, in_double_quote) next if quote_toggled next if in_single_quote || in_double_quote next unless char == ";" separator_index = index break end return [requirement_string.strip, nil] if separator_index.nil? requirement_part = requirement_string[0...separator_index] marker_part = requirement_string[(separator_index + 1)..] [requirement_part&.strip, marker_part&.strip] end |