File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- from typing import Optional , List , Union , NewType
1+ from typing import List , Optional , Union
22from .common import EventType
33from ...modelclass import modelclass
44
@@ -444,26 +444,21 @@ def from_dict(d):
444444 )
445445
446446
447- WebSocketMessage = NewType (
448- "WebSocketMessage" ,
449- List [
450- Union [
451- EquityAgg ,
452- CurrencyAgg ,
453- EquityTrade ,
454- CryptoTrade ,
455- EquityQuote ,
456- ForexQuote ,
457- CryptoQuote ,
458- Imbalance ,
459- LimitUpLimitDown ,
460- Level2Book ,
461- IndexValue ,
462- LaunchpadValue ,
463- FairMarketValue ,
464- FuturesTrade ,
465- FuturesQuote ,
466- FuturesAgg ,
467- ]
468- ],
469- )
447+ WebSocketMessage = Union [
448+ EquityAgg ,
449+ CurrencyAgg ,
450+ EquityTrade ,
451+ CryptoTrade ,
452+ EquityQuote ,
453+ ForexQuote ,
454+ CryptoQuote ,
455+ Imbalance ,
456+ LimitUpLimitDown ,
457+ Level2Book ,
458+ IndexValue ,
459+ LaunchpadValue ,
460+ FairMarketValue ,
461+ FuturesTrade ,
462+ FuturesQuote ,
463+ FuturesAgg ,
464+ ]
Original file line number Diff line number Diff line change 1+ import logging
2+ import unittest
3+
4+ from massive .websocket import EquityTrade , Market , WebSocketMessage
5+ from massive .websocket .models import parse , parse_single
6+
7+
8+ def accept_message (message : WebSocketMessage ) -> WebSocketMessage :
9+ """Exercise the public single-message type contract under mypy."""
10+ return message
11+
12+
13+ class WebSocketModelTypesTest (unittest .TestCase ):
14+ trade = {
15+ "ev" : "T" ,
16+ "sym" : "AAPL" ,
17+ "x" : 10 ,
18+ "i" : "5096" ,
19+ "z" : 3 ,
20+ "p" : 161.87 ,
21+ "s" : 300 ,
22+ "c" : [14 , 41 ],
23+ "t" : 1651684192462 ,
24+ "q" : 4009402 ,
25+ }
26+
27+ def test_single_parsed_event_matches_message_contract (self ):
28+ message = parse_single (self .trade , logging .getLogger (), Market .Stocks )
29+
30+ self .assertIsInstance (message , EquityTrade )
31+ self .assertIs (accept_message (message ), message )
32+
33+ def test_parse_returns_a_batch_of_messages (self ):
34+ messages = parse ([self .trade ], logging .getLogger (), Market .Stocks )
35+
36+ self .assertEqual (len (messages ), 1 )
37+ self .assertIsInstance (messages [0 ], EquityTrade )
38+
39+
40+ if __name__ == "__main__" :
41+ unittest .main ()
You can’t perform that action at this time.
0 commit comments