ZhuLinsen/daily_stock_analysis · error · ValueError

{field_name} must be an integer

Error message

{field_name} must be an integer

What it means

Error "{field_name} must be an integer" thrown in ZhuLinsen/daily_stock_analysis.

Source

Thrown at src/services/decision_signal_service.py:1272

        if not math.isfinite(number) or number <= 0:
            raise ValueError(f"{field_name} must be a finite positive number")
        return number

    @staticmethod
    def _validate_entry_range(fields: Dict[str, Any]) -> None:
        entry_low = fields.get("entry_low")
        entry_high = fields.get("entry_high")
        if entry_low is not None and entry_high is not None and entry_low > entry_high:
            raise ValueError("entry_low must be less than or equal to entry_high")

    @staticmethod
    def _optional_int(value: Any, field_name: str) -> Optional[int]:
        if value in (None, ""):
            return None
        try:
            return int(value)
        except (TypeError, ValueError) as exc:
            raise ValueError(f"{field_name} must be an integer") from exc

    @staticmethod
    def _parse_datetime(value: Any) -> Optional[datetime]:
        if value in (None, ""):
            return None
        if isinstance(value, datetime):
            return to_utc_naive_datetime(value)
        if isinstance(value, str):
            text = value.strip()
            if not text:
                return None
            try:
                parsed = datetime.fromisoformat(text.replace("Z", "+00:00"))
            except ValueError as exc:
                raise ValueError(f"invalid datetime value: {value}") from exc
            return to_utc_naive_datetime(parsed)
        raise ValueError(f"invalid datetime value: {value}")

View on GitHub (pinned to 5159bd72e8)

Solutions

  1. Provide the field as an integer value, not a string or float.
  2. Check the request payload or signal data source for the named field and convert it to an integer before submitting.
  3. If the value comes from user input, validate and coerce it with int() after checking isdigit() or a numeric parse.

When it happens

Trigger: Thrown at src/services/decision_signal_service.py:1272 when the library encounters an invalid state.

Common situations: Raised when a decision-signal integer field (e.g. horizon/period) is not an integer; occurs when the client sends a string or float for a field validated in decision_signal_service.


AI-assisted analysis of ZhuLinsen/daily_stock_analysis@5159bd72e8 (2026-08-15). Data as JSON: /api/errors/3735f9654c753bd0. Report an issue: GitHub.