Source code for py_alpaca_api.models.watchlist_model

from dataclasses import dataclass
from datetime import datetime

from py_alpaca_api.models.asset_model import AssetModel
from py_alpaca_api.models.model_utils import KEY_PROCESSORS, extract_class_data


@dataclass
[docs] class WatchlistModel:
[docs] id: str
[docs] account_id: str
[docs] created_at: datetime
[docs] updated_at: datetime
[docs] name: str
[docs] assets: list[AssetModel]
############################################ # Data Class Watchlist Conversion Functions ############################################
[docs] def process_assets(assets: list[dict]) -> list[AssetModel]: """Process a list of assets. This function takes a list of asset dictionaries and returns a list of AssetModel objects. Each asset dictionary should contain the necessary information to create an AssetModel object. Args: assets (List[Dict]): A list of asset dictionaries. Returns: List[AssetModel]: A list of AssetModel objects. """ if not assets: return [] return ( [ AssetModel(**extract_class_data(asset, KEY_PROCESSORS, AssetModel)) for asset in assets ] if assets else [] )
[docs] def watchlist_class_from_dict(data_dict: dict) -> WatchlistModel: """Args: data_dict: A dictionary containing the data needed to create a WatchlistModel object. Returns: A new instance of the WatchlistModel created from the data in the input dictionary. """ watchlist_data = extract_class_data(data_dict, KEY_PROCESSORS, WatchlistModel) watchlist_data["assets"] = process_assets(data_dict.get("assets", [])) return WatchlistModel(**watchlist_data)