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

1import math 

2from dataclasses import dataclass 

3from enum import StrEnum 

4 

5 

6class OrderSide(StrEnum): 

7 BUY = "buy" 

8 SELL = "sell" 

9 

10 

11class OrderType(StrEnum): 

12 """tbd""" 

13 MARKET = "market" 

14 LIMIT = "limit" 

15 STOP = "stop" 

16 

17 

18@dataclass(frozen=True) 

19class Order: 

20 symbol: str 

21 side: OrderSide 

22 quantity: float 

23 

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.") 

27 

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.")