@@ -261,8 +261,12 @@ def patch(self, path, data=None):
261261 def delete (self , path , data = None ):
262262 return self ._request ('DELETE' , path , data )
263263
264- def data_get (self , path , data = None , api_version = 'v1' ):
264+ def data_get (self , path , data = None ,
265+ feed : Optional [str ] = None , api_version = 'v1' ):
265266 base_url : URL = get_data_url ()
267+ if feed :
268+ data = data or {}
269+ data ['feed' ] = feed
266270 return self ._request (
267271 'GET' , path , data , base_url = base_url , api_version = api_version ,
268272 )
@@ -552,6 +556,7 @@ def _data_get(self,
552556 endpoint_base : str = 'stocks' ,
553557 resp_grouped_by_symbol : Optional [bool ] = None ,
554558 page_limit : int = DATA_V2_MAX_LIMIT ,
559+ feed : Optional [str ] = None ,
555560 ** kwargs ):
556561 page_token = None
557562 total_items = 0
@@ -574,7 +579,8 @@ def _data_get(self,
574579 data ['symbols' ] = ',' .join (symbol_or_symbols )
575580 if endpoint :
576581 path += f'/{ endpoint } '
577- resp = self .data_get (path , data = data , api_version = api_version )
582+ resp = self .data_get (path , data = data , feed = feed ,
583+ api_version = api_version )
578584 if not resp_grouped_by_symbol :
579585 k = endpoint or endpoint_base
580586 for item in resp .get (k , []) or []:
@@ -596,9 +602,10 @@ def get_trades_iter(self,
596602 start : Optional [str ] = None ,
597603 end : Optional [str ] = None ,
598604 limit : int = None ,
605+ feed : Optional [str ] = None ,
599606 raw = False ) -> TradeIterator :
600607 trades = self ._data_get ('trades' , symbol ,
601- start = start , end = end , limit = limit )
608+ start = start , end = end , limit = limit , feed = feed )
602609 for trade in trades :
603610 if raw :
604611 yield trade
@@ -610,19 +617,21 @@ def get_trades(self,
610617 start : Optional [str ] = None ,
611618 end : Optional [str ] = None ,
612619 limit : int = None ,
620+ feed : Optional [str ] = None ,
613621 ) -> TradesV2 :
614622 trades = list (self .get_trades_iter (symbol ,
615- start , end , limit , raw = True ))
623+ start , end , limit , feed , raw = True ))
616624 return TradesV2 (trades )
617625
618626 def get_quotes_iter (self ,
619627 symbol : Union [str , List [str ]],
620628 start : Optional [str ] = None ,
621629 end : Optional [str ] = None ,
622630 limit : int = None ,
631+ feed : Optional [str ] = None ,
623632 raw = False ) -> QuoteIterator :
624633 quotes = self ._data_get ('quotes' , symbol ,
625- start = start , end = end , limit = limit )
634+ start = start , end = end , limit = limit , feed = feed )
626635 for quote in quotes :
627636 if raw :
628637 yield quote
@@ -634,11 +643,13 @@ def get_quotes(self,
634643 start : Optional [str ] = None ,
635644 end : Optional [str ] = None ,
636645 limit : int = None ,
646+ feed : Optional [str ] = None ,
637647 ) -> QuotesV2 :
638- quotes = list (self .get_quotes_iter (symbol ,
639- start ,
640- end ,
641- limit ,
648+ quotes = list (self .get_quotes_iter (symbol = symbol ,
649+ start = start ,
650+ end = end ,
651+ limit = limit ,
652+ feed = feed ,
642653 raw = True ))
643654 return QuotesV2 (quotes )
644655
@@ -649,11 +660,12 @@ def get_bars_iter(self,
649660 end : Optional [str ] = None ,
650661 adjustment : str = 'raw' ,
651662 limit : int = None ,
663+ feed : Optional [str ] = None ,
652664 raw = False ) -> BarIterator :
653665 bars = self ._data_get ('bars' , symbol ,
654666 timeframe = timeframe ,
655667 adjustment = adjustment ,
656- start = start , end = end , limit = limit )
668+ start = start , end = end , limit = limit , feed = feed )
657669 for bar in bars :
658670 if raw :
659671 yield bar
@@ -667,60 +679,77 @@ def get_bars(self,
667679 end : Optional [str ] = None ,
668680 adjustment : str = 'raw' ,
669681 limit : int = None ,
682+ feed : Optional [str ] = None ,
670683 ) -> BarsV2 :
671684 bars = list (self .get_bars_iter (symbol ,
672685 timeframe ,
673686 start ,
674687 end ,
675688 adjustment ,
676689 limit ,
690+ feed = feed ,
677691 raw = True ))
678692 return BarsV2 (bars )
679693
680- def get_latest_bar (self , symbol : str ) -> BarV2 :
694+ def get_latest_bar (self , symbol : str , feed : Optional [ str ] = None ) -> BarV2 :
681695 resp = self .data_get (
682696 '/stocks/{}/bars/latest' .format (symbol ),
697+ feed = feed ,
683698 api_version = 'v2' )
684699 return self .response_wrapper (resp ['bar' ], BarV2 )
685700
686- def get_latest_bars (self , symbols : List [str ]) -> LatestBarsV2 :
701+ def get_latest_bars (self , symbols : List [str ],
702+ feed : Optional [str ] = None ) -> LatestBarsV2 :
687703 resp = self .data_get (
688704 f'/stocks/bars/latest?symbols={ _join_with_commas (symbols )} ' ,
705+ feed = feed ,
689706 api_version = 'v2' )
690707 return self .response_wrapper (resp ['bars' ], LatestBarsV2 )
691708
692- def get_latest_trade (self , symbol : str ) -> TradeV2 :
709+ def get_latest_trade (self , symbol : str ,
710+ feed : Optional [str ] = None ) -> TradeV2 :
693711 resp = self .data_get (
694712 '/stocks/{}/trades/latest' .format (symbol ),
713+ feed = feed ,
695714 api_version = 'v2' )
696715 return self .response_wrapper (resp ['trade' ], TradeV2 )
697716
698- def get_latest_trades (self , symbols : List [str ]) -> LatestTradesV2 :
717+ def get_latest_trades (self , symbols : List [str ],
718+ feed : Optional [str ] = None ) -> LatestTradesV2 :
699719 resp = self .data_get (
700720 f'/stocks/trades/latest?symbols={ _join_with_commas (symbols )} ' ,
721+ feed = feed ,
701722 api_version = 'v2' )
702723 return self .response_wrapper (resp ['trades' ], LatestTradesV2 )
703724
704- def get_latest_quote (self , symbol : str ) -> QuoteV2 :
725+ def get_latest_quote (self , symbol : str ,
726+ feed : Optional [str ] = None ) -> QuoteV2 :
705727 resp = self .data_get (
706728 '/stocks/{}/quotes/latest' .format (symbol ),
729+ feed = feed ,
707730 api_version = 'v2' )
708731 return self .response_wrapper (resp ['quote' ], QuoteV2 )
709732
710- def get_latest_quotes (self , symbols : List [str ]) -> LatestQuotesV2 :
733+ def get_latest_quotes (self , symbols : List [str ],
734+ feed : Optional [str ] = None ) -> LatestQuotesV2 :
711735 resp = self .data_get (
712736 f'/stocks/quotes/latest?symbols={ _join_with_commas (symbols )} ' ,
737+ feed = feed ,
713738 api_version = 'v2' )
714739 return self .response_wrapper (resp ['quotes' ], LatestQuotesV2 )
715740
716- def get_snapshot (self , symbol : str ) -> SnapshotV2 :
741+ def get_snapshot (self , symbol : str ,
742+ feed : Optional [str ] = None ) -> SnapshotV2 :
717743 resp = self .data_get ('/stocks/{}/snapshot' .format (symbol ),
744+ feed = feed ,
718745 api_version = 'v2' )
719746 return self .response_wrapper (resp , SnapshotV2 )
720747
721- def get_snapshots (self , symbols : List [str ]) -> SnapshotsV2 :
748+ def get_snapshots (self , symbols : List [str ],
749+ feed : Optional [str ] = None ) -> SnapshotsV2 :
722750 resp = self .data_get (
723751 '/stocks/snapshots?symbols={}' .format (_join_with_commas (symbols )),
752+ feed = feed ,
724753 api_version = 'v2' )
725754 return self .response_wrapper (resp , SnapshotsV2 )
726755
0 commit comments