sansan0/TrendRadar · error · InvalidParameterError
INVALID_PARAMETER
INVALID_PARAMETER
Error message
日期查询字符串不能为空
What it means
Thrown by DateParser.parse_date_query when the input is falsy (None, "") or not a str instance. It is the entry guard of the parser — no pattern matching is attempted on bad input.
Source
Thrown at mcp_server/utils/date_parser.py:123
Returns:
datetime对象
Raises:
InvalidParameterError: 日期格式无法识别
Examples:
>>> DateParser.parse_date_query("今天")
datetime(2025, 10, 11)
>>> DateParser.parse_date_query("昨天")
datetime(2025, 10, 10)
>>> DateParser.parse_date_query("3天前")
datetime(2025, 10, 8)
>>> DateParser.parse_date_query("2025-10-10")
datetime(2025, 10, 10)
"""
if not date_query or not isinstance(date_query, str):
raise InvalidParameterError(
"日期查询字符串不能为空",
suggestion="请提供有效的日期查询,如:今天、昨天、2025-10-10"
)
date_query = date_query.strip().lower()
# 1. 尝试解析中文常用相对日期
if date_query in DateParser.CN_DATE_MAPPING:
days_ago = DateParser.CN_DATE_MAPPING[date_query]
return datetime.now() - timedelta(days=days_ago)
# 2. 尝试解析英文常用相对日期
if date_query in DateParser.EN_DATE_MAPPING:
days_ago = DateParser.EN_DATE_MAPPING[date_query]
return datetime.now() - timedelta(days=days_ago)
# 3. 尝试解析 "N天前" 或 "N days ago"
cn_days_ago_match = re.match(r'(\d+)\s*天前', date_query)View on GitHub (pinned to 8ee26026ba)
Solutions
- Pass a non-empty string such as "今天", "昨天", "3天前", or "2025-10-10"
- Default unset date parameters at the call site before invoking the parser
- Convert date/datetime objects to ISO strings first if your value is not text
Example fix
# before
DateParser.parse_date_query(date_query=user_input.get("date")) # may be None
# after
DateParser.parse_date_query(date_query=user_input.get("date") or "今天") Defensive patterns
Strategy: type-guard
Validate before calling
if not isinstance(date_query, str) or not date_query.strip():
date_query = "今天" # or raise your own descriptive error Type guard
def is_date_query_string(v) -> bool:
return isinstance(v, str) and len(v.strip()) > 0 Try / catch
try:
d = DateParser.parse_date_query(q)
except InvalidParameterError as e:
if "不能为空" in str(e):
d = datetime.now()
else:
raise Prevention
- Default optional date params at your boundary (or "今天")
- Convert date objects to ISO strings before calling
- Mark the parameter required in tool schemas
When it happens
Trigger: Calling parse_date_query(None), parse_date_query(""), or passing a datetime.date/dict/int instead of a string; upstream code passing an unset optional parameter through.
Common situations: Optional date parameters forwarded without defaults; LLM tool calls omitting the date argument; callers assuming the parser accepts date objects.
Related errors
- 日期表达式不能为空
- 不能查询未来的日期: {date.strftime('%Y-%m-%d')}
- 日期太久远: {date.strftime('%Y-%m-%d')} ({days_ago}天前)
- 日期格式错误: {date_str}
- 日期格式错误: {stripped}
AI-assisted analysis of sansan0/TrendRadar@8ee26026ba (2026-08-15).
Data as JSON: /api/errors/43d5d82e608ff5f2.
Report an issue: GitHub.