@@ -530,10 +530,24 @@ def _env_default_numeric(name: str, default: float | int, caster: type[float] |
530530
531531
532532def _validate_settings (settings : MMSettings ) -> None :
533- if not math .isfinite (settings .max_inventory ) or settings .max_inventory <= 0 :
534- raise ValueError ("max_inventory must be a finite value > 0; adjust --max-inventory" )
535- if not math .isfinite (settings .max_margin_usage ) or settings .max_margin_usage <= 0 :
536- raise ValueError ("max_margin_usage must be a finite value > 0; adjust --max-margin-usage" )
533+ errors : list [str ] = []
534+ finite_positive_fields = (
535+ ("spread" , settings .spread , "--spread" ),
536+ ("order_size" , settings .order_size , "--order-size" ),
537+ ("max_inventory" , settings .max_inventory , "--max-inventory" ),
538+ ("skew_per_unit" , settings .skew_per_unit , "--skew-per-unit" ),
539+ ("max_margin_usage" , settings .max_margin_usage , "--max-margin-usage" ),
540+ ("refresh_interval_s" , settings .refresh_interval_s , "--refresh-interval" ),
541+ ("cooldown_s" , settings .cooldown_s , "--cooldown" ),
542+ ("cancel_resync_s" , settings .cancel_resync_s , "--cancel-resync" ),
543+ )
544+ for field_name , value , flag in finite_positive_fields :
545+ if not math .isfinite (value ) or value <= 0 :
546+ errors .append (f"{ field_name } must be a finite value > 0; adjust { flag } " )
547+ if settings .max_cycles < 0 :
548+ errors .append ("max_cycles must be >= 0; adjust --max-cycles" )
549+ if errors :
550+ raise ValueError ("; " .join (errors ))
537551
538552
539553async def main () -> int :
0 commit comments