88from abc import ABC , abstractmethod
99from typing import Any , Dict , List , Optional
1010
11+ from stonks_overwatch .constants import BrokerName
1112from stonks_overwatch .core .exceptions import DataAggregationException
1213from stonks_overwatch .core .factories .broker_factory import BrokerFactory
1314from stonks_overwatch .core .service_types import ServiceType
@@ -40,7 +41,7 @@ def __init__(self, service_type: ServiceType):
4041 f"[AGGREGATOR|{ service_type .value .upper ()} ]" ,
4142 )
4243
43- self ._broker_services : Dict [str , Any ] = {}
44+ self ._broker_services : Dict [BrokerName , Any ] = {}
4445 self ._initialize_broker_services ()
4546
4647 @property
@@ -76,20 +77,19 @@ def _initialize_broker_services(self) -> None:
7677 except Exception as e :
7778 self ._logger .warning (f"Failed to initialize { broker_name } service: { e } " )
7879
79- def _broker_supports_service (self , broker_name : str ) -> bool :
80+ def _broker_supports_service (self , broker_name : BrokerName ) -> bool :
8081 """
8182 Check if a broker supports a specific service type.
8283
8384 Args:
8485 broker_name: Name of the broker
85- service_type: Type of service to check
8686
8787 Returns:
8888 True if broker supports the service, False otherwise
8989 """
9090 return self ._factory .broker_supports_service (broker_name , self ._service_type )
9191
92- def _get_broker_service (self , broker_name : str ) -> Optional [Any ]:
92+ def _get_broker_service (self , broker_name : BrokerName ) -> Optional [Any ]:
9393 """
9494 Get a broker service instance for the specified broker.
9595
@@ -111,7 +111,7 @@ def _get_broker_service(self, broker_name: str) -> Optional[Any]:
111111 self ._logger .error (f"Failed to create { self ._service_type .value } service for { broker_name } : { e } " )
112112 return None
113113
114- def _is_broker_enabled (self , broker_name : str , selected_portfolio : PortfolioId ) -> bool :
114+ def _is_broker_enabled (self , broker_name : BrokerName , selected_portfolio : PortfolioId ) -> bool :
115115 """
116116 Check if a broker is enabled for the selected portfolio.
117117
@@ -152,7 +152,7 @@ def _is_broker_enabled(self, broker_name: str, selected_portfolio: PortfolioId)
152152 # Fallback: assume enabled if broker has services
153153 return broker_name in self ._broker_services
154154
155- def _get_enabled_brokers (self , selected_portfolio : PortfolioId ) -> List [str ]:
155+ def _get_enabled_brokers (self , selected_portfolio : PortfolioId ) -> List [BrokerName ]:
156156 """
157157 Get the list of brokers that are enabled for the selected portfolio.
158158
@@ -170,7 +170,7 @@ def _get_enabled_brokers(self, selected_portfolio: PortfolioId) -> List[str]:
170170 if self ._is_broker_enabled (broker_name , selected_portfolio )
171171 ]
172172
173- def _collect_broker_data (self , selected_portfolio : PortfolioId , method_name : str ) -> Dict [str , Any ]:
173+ def _collect_broker_data (self , selected_portfolio : PortfolioId , method_name : str ) -> Dict [BrokerName , Any ]:
174174 """
175175 Collect data from all enabled brokers using the specified method.
176176
0 commit comments