we-promise/sure · error · Provider::YahooFinance::Error
Start date cannot be after end date
Error message
Start date cannot be after end date
What it means
Error "Start date cannot be after end date" thrown in we-promise/sure.
Source
Thrown at app/models/provider/yahoo_finance.rb:638
.select { |s| EXCHANGE_CONFIG.dig(s.exchange_operating_mic, :dual_list_group) }
.group_by { |s| [ EXCHANGE_CONFIG[s.exchange_operating_mic][:dual_list_group], s.name.to_s.strip.downcase ] }
.each_value do |group|
next unless group.size > 1
preferred = group.min_by { |s| EXCHANGE_CONFIG[s.exchange_operating_mic][:preference_rank] }
group.each { |s| dominated << s.object_id unless s.equal?(preferred) }
end
return securities if dominated.empty?
securities.reject { |s| dominated.include?(s.object_id) }
end
# ================================
# Validation
# ================================
def validate_date_range!(start_date, end_date)
raise Error, "Start date cannot be after end date" if start_date > end_date
raise Error, "Date range too large (max 5 years)" if end_date > start_date + 5.years
end
def validate_date_params!(start_date, end_date)
# Validate presence and coerce to dates
validated_start_date = validate_and_coerce_date!(start_date, "start_date")
validated_end_date = validate_and_coerce_date!(end_date, "end_date")
# Ensure start_date <= end_date
if validated_start_date > validated_end_date
error_msg = "Start date (#{validated_start_date}) cannot be after end date (#{validated_end_date})"
raise ArgumentError, error_msg
end
# Ensure end_date is not in the future
today = Date.current
if validated_end_date > today
error_msg = "End date (#{validated_end_date}) cannot be in the future"View on GitHub (pinned to e69894adb9)
When it happens
Trigger: Thrown at app/models/provider/yahoo_finance.rb:638 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of we-promise/sure@e69894adb9 (2026-08-21).
Data as JSON: /api/errors/0b6d71f542926028.
Report an issue: GitHub.