Source code for py_alpaca_api.models.order_model

from dataclasses import dataclass
from datetime import datetime

from py_alpaca_api.models.model_utils import KEY_PROCESSORS, extract_class_data


@dataclass
[docs] class OrderModel:
[docs] id: str
[docs] client_order_id: str
[docs] created_at: datetime
[docs] updated_at: datetime
[docs] submitted_at: datetime
[docs] filled_at: datetime
[docs] expired_at: datetime
[docs] canceled_at: datetime
[docs] failed_at: datetime
[docs] replaced_at: datetime
[docs] replaced_by: str
[docs] replaces: str
[docs] asset_id: str
[docs] symbol: str
[docs] asset_class: str
[docs] notional: float
[docs] qty: float
[docs] filled_qty: float
[docs] filled_avg_price: float
[docs] order_class: str
[docs] order_type: str
[docs] type: str
[docs] side: str
[docs] time_in_force: str
[docs] limit_price: float
[docs] stop_price: float
[docs] status: str
[docs] extended_hours: bool
[docs] legs: list[object]
[docs] trail_percent: float
[docs] trail_price: float
[docs] hwm: float
[docs] subtag: str
[docs] source: str
############################################ # Data Class Order Conversion Functions ############################################
[docs] def process_legs(legs: list[dict]) -> list[OrderModel]: """Process the legs and create a list of OrderModel objects based on the provided data. Args: legs (List[Dict]): A list of dictionaries representing the legs. Returns: List[OrderModel]: A list of OrderModel objects generated from the leg data. Note: If the legs parameter is empty, an empty list will be returned. """ if not legs: return [] return ( [ OrderModel(**extract_class_data(leg, KEY_PROCESSORS, OrderModel)) for leg in legs ] if legs else [] )
[docs] def order_class_from_dict(data_dict: dict) -> OrderModel: """Creates an instance of `OrderModel` using the provided dictionary data. Args: data_dict (Dict): A dictionary containing the data used to create the `OrderModel` instance. Returns: OrderModel: An instance of `OrderModel` created using the provided data. Raises: None """ order_data = extract_class_data(data_dict, KEY_PROCESSORS, OrderModel) order_data["legs"] = process_legs(data_dict.get("legs", [])) return OrderModel(**order_data)