Coverage for src/finbot/execution/order.py: 100%
22 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 17:12 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 17:12 +0000
1import math
2from dataclasses import dataclass
3from enum import StrEnum
6class OrderSide(StrEnum):
7 BUY = "buy"
8 SELL = "sell"
11class OrderType(StrEnum):
12 """tbd"""
13 MARKET = "market"
14 LIMIT = "limit"
15 STOP = "stop"
18@dataclass(frozen=True)
19class Order:
20 symbol: str
21 side: OrderSide
22 quantity: float
24 def __post_init__(self):
25 if not isinstance(self.symbol, str) or not self.symbol.strip():
26 raise ValueError("Symbol must be a non-empty string.")
28 if not math.isfinite(self.quantity):
29 raise ValueError("Quantity must have a finite value.")
30 if self.quantity <= 0:
31 raise ValueError("Quantity must be greater than zero.")