webull-openapi-python-sdk 1.0.7__py3-none-any.whl → 1.0.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- samples/__init__.py +1 -1
- samples/trade/trade_client_v3.py +32 -1
- webull/__init__.py +1 -1
- webull/core/__init__.py +1 -1
- webull/data/__init__.py +1 -1
- webull/data/quotes/subscribe/message_pb2.py +12 -12
- webull/data/quotes/subscribe/snapshot_result.py +78 -14
- webull/trade/__init__.py +1 -1
- webull/trade/request/v3/batch_place_order_request.py +52 -0
- webull/trade/trade/v3/order_opration_v3.py +13 -0
- {webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/METADATA +1 -1
- {webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/RECORD +16 -15
- {webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/WHEEL +0 -0
- {webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/licenses/LICENSE +0 -0
- {webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/licenses/NOTICE +0 -0
- {webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/top_level.txt +0 -0
samples/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '1.0.
|
|
1
|
+
__version__ = '1.0.8'
|
samples/trade/trade_client_v3.py
CHANGED
|
@@ -208,7 +208,38 @@ if __name__ == '__main__':
|
|
|
208
208
|
if res.status_code == 200:
|
|
209
209
|
print('get master order detail res:', res.json())
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
# batch place order
|
|
212
|
+
batch_place_orders = [
|
|
213
|
+
{
|
|
214
|
+
"combo_type": "NORMAL",
|
|
215
|
+
"client_order_id": uuid.uuid4().hex,
|
|
216
|
+
"instrument_type": "EQUITY",
|
|
217
|
+
"market": "US",
|
|
218
|
+
"symbol": "AAPL",
|
|
219
|
+
"order_type": "MARKET",
|
|
220
|
+
"entrust_type": "QTY",
|
|
221
|
+
"support_trading_session": "CORE",
|
|
222
|
+
"time_in_force": "DAY",
|
|
223
|
+
"side": "BUY",
|
|
224
|
+
"quantity": "1"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"combo_type": "NORMAL",
|
|
228
|
+
"client_order_id": uuid.uuid4().hex,
|
|
229
|
+
"instrument_type": "EQUITY",
|
|
230
|
+
"market": "US",
|
|
231
|
+
"symbol": "TESL",
|
|
232
|
+
"order_type": "MARKET",
|
|
233
|
+
"entrust_type": "QTY",
|
|
234
|
+
"support_trading_session": "CORE",
|
|
235
|
+
"time_in_force": "DAY",
|
|
236
|
+
"side": "BUY",
|
|
237
|
+
"quantity": "1"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
res = trade_client.order_v3.batch_place_order(account_id, batch_place_orders)
|
|
241
|
+
if res.status_code == 200:
|
|
242
|
+
print('batch place normal equity order res:', res.json())
|
|
212
243
|
|
|
213
244
|
|
|
214
245
|
# ============================================================
|
webull/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '1.0.
|
|
1
|
+
__version__ = '1.0.8'
|
webull/core/__init__.py
CHANGED
webull/data/__init__.py
CHANGED
|
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"Z\n\x05\x42\x61sic\x12\x0e\n\x06symbol\x18\x01 \x01(\t\x12\x15\n\rinstrument_id\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\x12\x17\n\x0ftrading_session\x18\x04 \x01(\t\"\
|
|
16
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"Z\n\x05\x42\x61sic\x12\x0e\n\x06symbol\x18\x01 \x01(\t\x12\x15\n\rinstrument_id\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\x12\x17\n\x0ftrading_session\x18\x04 \x01(\t\"\xd6\x03\n\x08Snapshot\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x12\n\ntrade_time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0c\n\x04open\x18\x04 \x01(\t\x12\x0c\n\x04high\x18\x05 \x01(\t\x12\x0b\n\x03low\x18\x06 \x01(\t\x12\x11\n\tpre_close\x18\x07 \x01(\t\x12\x0e\n\x06volume\x18\x08 \x01(\t\x12\x0e\n\x06\x63hange\x18\t \x01(\t\x12\x14\n\x0c\x63hange_ratio\x18\n \x01(\t\x12\x16\n\x0e\x65xt_trade_time\x18\x0b \x01(\t\x12\x11\n\text_price\x18\x0c \x01(\t\x12\x10\n\x08\x65xt_high\x18\r \x01(\t\x12\x0f\n\x07\x65xt_low\x18\x0e \x01(\t\x12\x12\n\next_volume\x18\x0f \x01(\t\x12\x12\n\next_change\x18\x10 \x01(\t\x12\x18\n\x10\x65xt_change_ratio\x18\x11 \x01(\t\x12\x16\n\x0eovn_trade_time\x18\x12 \x01(\t\x12\x11\n\tovn_price\x18\x13 \x01(\t\x12\x10\n\x08ovn_high\x18\x14 \x01(\t\x12\x0f\n\x07ovn_low\x18\x15 \x01(\t\x12\x12\n\novn_volume\x18\x16 \x01(\t\x12\x12\n\novn_change\x18\x17 \x01(\t\x12\x18\n\x10ovn_change_ratio\x18\x18 \x01(\t\"L\n\x05Quote\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x15\n\x04\x61sks\x18\x02 \x03(\x0b\x32\x07.AskBid\x12\x15\n\x04\x62ids\x18\x03 \x03(\x0b\x32\x07.AskBid\"X\n\x04Tick\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0e\n\x06volume\x18\x04 \x01(\t\x12\x0c\n\x04side\x18\x05 \x01(\t\"U\n\x06\x41skBid\x12\r\n\x05price\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\x12\x15\n\x05order\x18\x03 \x03(\x0b\x32\x06.Order\x12\x17\n\x06\x62roker\x18\x04 \x03(\x0b\x32\x07.Broker\"#\n\x05Order\x12\x0c\n\x04mpid\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\"#\n\x06\x42roker\x12\x0b\n\x03\x62id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
|
|
17
17
|
|
|
18
18
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
|
19
19
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
|
|
@@ -23,15 +23,15 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
23
23
|
_BASIC._serialized_start=17
|
|
24
24
|
_BASIC._serialized_end=107
|
|
25
25
|
_SNAPSHOT._serialized_start=110
|
|
26
|
-
_SNAPSHOT._serialized_end=
|
|
27
|
-
_QUOTE._serialized_start=
|
|
28
|
-
_QUOTE._serialized_end=
|
|
29
|
-
_TICK._serialized_start=
|
|
30
|
-
_TICK._serialized_end=
|
|
31
|
-
_ASKBID._serialized_start=
|
|
32
|
-
_ASKBID._serialized_end=
|
|
33
|
-
_ORDER._serialized_start=
|
|
34
|
-
_ORDER._serialized_end=
|
|
35
|
-
_BROKER._serialized_start=
|
|
36
|
-
_BROKER._serialized_end=
|
|
26
|
+
_SNAPSHOT._serialized_end=580
|
|
27
|
+
_QUOTE._serialized_start=582
|
|
28
|
+
_QUOTE._serialized_end=658
|
|
29
|
+
_TICK._serialized_start=660
|
|
30
|
+
_TICK._serialized_end=748
|
|
31
|
+
_ASKBID._serialized_start=750
|
|
32
|
+
_ASKBID._serialized_end=835
|
|
33
|
+
_ORDER._serialized_start=837
|
|
34
|
+
_ORDER._serialized_end=872
|
|
35
|
+
_BROKER._serialized_start=874
|
|
36
|
+
_BROKER._serialized_end=909
|
|
37
37
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -21,22 +21,40 @@ from webull.data.quotes.subscribe.basic_result import BasicResult
|
|
|
21
21
|
class SnapshotResult:
|
|
22
22
|
def __init__(self, pb_snapshot):
|
|
23
23
|
self.basic = BasicResult(pb_snapshot.basic)
|
|
24
|
+
self.last_trade_time = int(pb_snapshot.trade_time) if pb_snapshot.trade_time else None
|
|
25
|
+
self.price = Decimal(pb_snapshot.price) if pb_snapshot.price else None
|
|
24
26
|
self.open = Decimal(pb_snapshot.open) if pb_snapshot.open else None
|
|
25
27
|
self.high = Decimal(pb_snapshot.high) if pb_snapshot.high else None
|
|
26
28
|
self.low = Decimal(pb_snapshot.low) if pb_snapshot.low else None
|
|
27
|
-
self.
|
|
28
|
-
self.
|
|
29
|
-
|
|
30
|
-
self.
|
|
31
|
-
|
|
32
|
-
self.
|
|
33
|
-
|
|
34
|
-
self.
|
|
35
|
-
|
|
29
|
+
self.pre_close = Decimal(pb_snapshot.pre_close) if pb_snapshot.pre_close else None
|
|
30
|
+
self.close = Decimal(pb_snapshot.open) if pb_snapshot.open else None
|
|
31
|
+
self.volume = Decimal(pb_snapshot.volume) if pb_snapshot.volume else None
|
|
32
|
+
self.change = Decimal(pb_snapshot.change) if pb_snapshot.change else None
|
|
33
|
+
self.change_ratio = Decimal(pb_snapshot.change_ratio) if pb_snapshot.change_ratio else None
|
|
34
|
+
self.ext_trade_time = int(pb_snapshot.ext_trade_time) if pb_snapshot.ext_trade_time else None
|
|
35
|
+
self.ext_price = Decimal(pb_snapshot.ext_price) if pb_snapshot.ext_price else None
|
|
36
|
+
self.ext_high = Decimal(pb_snapshot.ext_high) if pb_snapshot.ext_high else None
|
|
37
|
+
self.ext_low = Decimal(pb_snapshot.ext_low) if pb_snapshot.ext_low else None
|
|
38
|
+
self.ext_volume = Decimal(pb_snapshot.ext_volume) if pb_snapshot.ext_volume else None
|
|
39
|
+
self.ext_change = Decimal(pb_snapshot.ext_change) if pb_snapshot.ext_change else None
|
|
40
|
+
self.ext_change_ratio = Decimal(pb_snapshot.ext_change_ratio) if pb_snapshot.ext_change_ratio else None
|
|
41
|
+
self.ovn_trade_time = int(pb_snapshot.ovn_trade_time) if pb_snapshot.ovn_trade_time else None
|
|
42
|
+
self.ovn_price = Decimal(pb_snapshot.ovn_price) if pb_snapshot.ovn_price else None
|
|
43
|
+
self.ovn_high = Decimal(pb_snapshot.ovn_high) if pb_snapshot.ovn_high else None
|
|
44
|
+
self.ovn_low = Decimal(pb_snapshot.ovn_low) if pb_snapshot.ovn_low else None
|
|
45
|
+
self.ovn_volume = Decimal(pb_snapshot.ovn_volume) if pb_snapshot.ovn_volume else None
|
|
46
|
+
self.ovn_change = Decimal(pb_snapshot.ovn_change) if pb_snapshot.ovn_change else None
|
|
47
|
+
self.ovn_change_ratio = Decimal(pb_snapshot.ovn_change_ratio) if pb_snapshot.ovn_change_ratio else None
|
|
36
48
|
|
|
37
49
|
def get_basic(self):
|
|
38
50
|
return self.basic
|
|
39
51
|
|
|
52
|
+
def get_last_trade_time(self):
|
|
53
|
+
return self.last_trade_time
|
|
54
|
+
|
|
55
|
+
def get_price(self):
|
|
56
|
+
return self.price
|
|
57
|
+
|
|
40
58
|
def get_open(self):
|
|
41
59
|
return self.open
|
|
42
60
|
|
|
@@ -46,12 +64,12 @@ class SnapshotResult:
|
|
|
46
64
|
def get_low(self):
|
|
47
65
|
return self.low
|
|
48
66
|
|
|
49
|
-
def get_price(self):
|
|
50
|
-
return self.price
|
|
51
|
-
|
|
52
67
|
def get_pre_close(self):
|
|
53
68
|
return self.pre_close
|
|
54
69
|
|
|
70
|
+
def get_close(self):
|
|
71
|
+
return self.close
|
|
72
|
+
|
|
55
73
|
def get_volume(self):
|
|
56
74
|
return self.volume
|
|
57
75
|
|
|
@@ -61,9 +79,55 @@ class SnapshotResult:
|
|
|
61
79
|
def get_change_ratio(self):
|
|
62
80
|
return self.change_ratio
|
|
63
81
|
|
|
82
|
+
def get_ext_trade_time(self):
|
|
83
|
+
return self.ext_trade_time
|
|
84
|
+
|
|
85
|
+
def get_ext_price(self):
|
|
86
|
+
return self.ext_price
|
|
87
|
+
|
|
88
|
+
def get_ext_high(self):
|
|
89
|
+
return self.ext_high
|
|
90
|
+
|
|
91
|
+
def get_ext_low(self):
|
|
92
|
+
return self.ext_low
|
|
93
|
+
|
|
94
|
+
def get_ext_volume(self):
|
|
95
|
+
return self.ext_volume
|
|
96
|
+
|
|
97
|
+
def get_ext_change(self):
|
|
98
|
+
return self.ext_change
|
|
99
|
+
|
|
100
|
+
def get_ext_change_ratio(self):
|
|
101
|
+
return self.ext_change_ratio
|
|
102
|
+
|
|
103
|
+
def get_ovn_trade_time(self):
|
|
104
|
+
return self.ovn_trade_time
|
|
105
|
+
|
|
106
|
+
def get_ovn_price(self):
|
|
107
|
+
return self.ovn_price
|
|
108
|
+
|
|
109
|
+
def get_ovn_high(self):
|
|
110
|
+
return self.ovn_high
|
|
111
|
+
|
|
112
|
+
def get_ovn_low(self):
|
|
113
|
+
return self.ovn_low
|
|
114
|
+
|
|
115
|
+
def get_ovn_volume(self):
|
|
116
|
+
return self.ovn_volume
|
|
117
|
+
|
|
118
|
+
def get_ovn_change(self):
|
|
119
|
+
return self.ovn_change
|
|
120
|
+
|
|
121
|
+
def get_ovn_change_ratio(self):
|
|
122
|
+
return self.ovn_change_ratio
|
|
123
|
+
|
|
64
124
|
def __repr__(self):
|
|
65
|
-
|
|
66
|
-
|
|
125
|
+
attrs = ['last_trade_time', 'price', 'open', 'high', 'low', 'pre_close', 'close', 'volume', 'change', 'change_ratio']
|
|
126
|
+
ext_attrs = [f"ext_{name}" for name in ['trade_time', 'price', 'high', 'low', 'volume', 'change', 'change_ratio']]
|
|
127
|
+
ovn_attrs = [f"ovn_{name}" for name in ['trade_time', 'price', 'high', 'low', 'volume', 'change', 'change_ratio']]
|
|
128
|
+
all_attrs = attrs + ext_attrs + ovn_attrs
|
|
129
|
+
attr_str = ', '.join(f"{name}:{getattr(self, name)}" for name in all_attrs)
|
|
130
|
+
return f"{self.basic}, {attr_str}"
|
|
67
131
|
|
|
68
132
|
def __str__(self):
|
|
69
133
|
return self.__repr__()
|
webull/trade/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '1.0.
|
|
1
|
+
__version__ = '1.0.8'
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Copyright 2022 Webull
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
import json
|
|
15
|
+
# coding=utf-8
|
|
16
|
+
|
|
17
|
+
from webull.core.request import ApiRequest
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BatchPlaceOrderRequest(ApiRequest):
|
|
21
|
+
def __init__(self):
|
|
22
|
+
super().__init__("/openapi/trade/order/batch-place", version='v2', method="POST", body_params={})
|
|
23
|
+
|
|
24
|
+
def set_account_id(self, account_id):
|
|
25
|
+
self.add_body_params("account_id", account_id)
|
|
26
|
+
|
|
27
|
+
def set_batch_orders(self, batch_orders):
|
|
28
|
+
self.add_body_params("batch_orders", batch_orders)
|
|
29
|
+
|
|
30
|
+
def add_custom_headers_from_order(self, batch_orders):
|
|
31
|
+
if not batch_orders:
|
|
32
|
+
return
|
|
33
|
+
|
|
34
|
+
if isinstance(batch_orders, list) and batch_orders[0]:
|
|
35
|
+
first_order = batch_orders[0]
|
|
36
|
+
leg_list = first_order.get("legs")
|
|
37
|
+
if leg_list is not None and isinstance(leg_list, list):
|
|
38
|
+
for sub_leg in leg_list:
|
|
39
|
+
if (sub_leg and isinstance(sub_leg, dict)
|
|
40
|
+
and sub_leg.get("instrument_type") == "OPTION"):
|
|
41
|
+
instrument_type = sub_leg.get("instrument_type")
|
|
42
|
+
market = sub_leg.get("market")
|
|
43
|
+
category = market + "_" + instrument_type
|
|
44
|
+
if category is not None:
|
|
45
|
+
self.add_header("category", category)
|
|
46
|
+
return
|
|
47
|
+
|
|
48
|
+
market = first_order.get("market")
|
|
49
|
+
instrument_type = first_order.get("instrument_type")
|
|
50
|
+
category = market + "_" + instrument_type
|
|
51
|
+
if category is not None:
|
|
52
|
+
self.add_header("category", category)
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# coding=utf-8
|
|
15
15
|
from webull.trade.request.v3.preview_order_request import PreviewOrderRequest
|
|
16
16
|
from webull.trade.request.v3.place_order_request import PlaceOrderRequest
|
|
17
|
+
from webull.trade.request.v3.batch_place_order_request import BatchPlaceOrderRequest
|
|
17
18
|
from webull.trade.request.v3.replace_order_request import ReplaceOrderRequest
|
|
18
19
|
from webull.trade.request.v3.cancel_order_request import CancelOrderRequest
|
|
19
20
|
from webull.trade.request.v3.get_order_detail_request import OrderDetailRequest
|
|
@@ -50,6 +51,18 @@ class OrderOperationV3:
|
|
|
50
51
|
response = self.client.get_response(place_order_request)
|
|
51
52
|
return response
|
|
52
53
|
|
|
54
|
+
def batch_place_order(self, account_id, batch_orders):
|
|
55
|
+
"""
|
|
56
|
+
This interface is currently supported only for Webull US.
|
|
57
|
+
Support for other regions will be available in future updates.
|
|
58
|
+
"""
|
|
59
|
+
batch_place_order_request = BatchPlaceOrderRequest()
|
|
60
|
+
batch_place_order_request.set_account_id(account_id=account_id)
|
|
61
|
+
batch_place_order_request.set_batch_orders(batch_orders=batch_orders)
|
|
62
|
+
batch_place_order_request.add_custom_headers_from_order(batch_orders)
|
|
63
|
+
response = self.client.get_response(batch_place_order_request)
|
|
64
|
+
return response
|
|
65
|
+
|
|
53
66
|
def replace_order(self, account_id, modify_orders, client_combo_order_id=None):
|
|
54
67
|
"""
|
|
55
68
|
This interface is currently supported only for Webull US.
|
{webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
samples/__init__.py,sha256=
|
|
1
|
+
samples/__init__.py,sha256=mFFUUCx5TqyW1TTFRrWDhXXVMJDMRxXWrkHanVtp9oY,22
|
|
2
2
|
samples/account/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
|
|
3
3
|
samples/account/account_client.py,sha256=vwh-nI_JnjwcIeOr1sQPMzG8pAqZwliUusE49ZmYE3s,1796
|
|
4
4
|
samples/assets/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
|
|
@@ -13,10 +13,10 @@ samples/order/order_stock_client.py,sha256=hYwVwVFVERk-YS7gRcW-LuGfAvcF8VJHZs1qw
|
|
|
13
13
|
samples/trade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
samples/trade/trade_client.py,sha256=LyWSvZJH4ByCkRORqP9WdkXfx65A2b6fhc9_GzL8DOM,6258
|
|
15
15
|
samples/trade/trade_client_v2.py,sha256=IO-zmRiUnCmIetTdiYunPh8jVK2VaPrOR77Dwvz1auY,10771
|
|
16
|
-
samples/trade/trade_client_v3.py,sha256=
|
|
16
|
+
samples/trade/trade_client_v3.py,sha256=70f4VJYWcSJP3ppA8mRAoftJqjRTn5GTeGZck8eLCTg,16526
|
|
17
17
|
samples/trade/trade_event_client.py,sha256=uOx9EwFaves2yaTNm13BHpYC0IHXSoBL8BWPbDLeFw4,2469
|
|
18
|
-
webull/__init__.py,sha256=
|
|
19
|
-
webull/core/__init__.py,sha256=
|
|
18
|
+
webull/__init__.py,sha256=mFFUUCx5TqyW1TTFRrWDhXXVMJDMRxXWrkHanVtp9oY,22
|
|
19
|
+
webull/core/__init__.py,sha256=l5SgEaJNDBxUASBJsNGBJYu3AocnG4Mr89RIOokPiTA,225
|
|
20
20
|
webull/core/client.py,sha256=OE_ghPA558eE85MmaU_I3Tg0j-osCQFChTk-6dy4OW0,16398
|
|
21
21
|
webull/core/compat.py,sha256=HDis0D271oQ6OCpA7ViX10NJdhfXdoBfzx6nuV3vrnI,3114
|
|
22
22
|
webull/core/headers.py,sha256=7aMt3_YtaL9Yhqj2T1g7ESQgkI78SAXIk7hMX5U5FgE,2019
|
|
@@ -186,7 +186,7 @@ webull/core/vendored/requests/packages/urllib3/util/ssl_.py,sha256=aRUKc1WIyS-sU
|
|
|
186
186
|
webull/core/vendored/requests/packages/urllib3/util/timeout.py,sha256=sAyiBBds7eOk1oM3ulvVMWZiqx1B743puHqK92XwBcY,10325
|
|
187
187
|
webull/core/vendored/requests/packages/urllib3/util/url.py,sha256=_CgqbyNrQWubrv_y5aWhuutz3mnbj1cvTUe4VYbGYWA,7367
|
|
188
188
|
webull/core/vendored/requests/packages/urllib3/util/wait.py,sha256=0FHS8R3OrMU-97XWt8AxuUStkSGXTct9CfOwY_fWn7U,5971
|
|
189
|
-
webull/data/__init__.py,sha256=
|
|
189
|
+
webull/data/__init__.py,sha256=s8jHH-qZ5jY8Rsk-YS41NY0gFUU5YjdRBlDw0egN2-4,38
|
|
190
190
|
webull/data/data_client.py,sha256=JGouoFd37-sxpP6GyOJ0rRw7UuBmXqoIcis0jiRGJPQ,1871
|
|
191
191
|
webull/data/data_streaming_client.py,sha256=hYqrdKTeIB3Xmp7LMjMwN1XE6Y7bKXX0y-lGX1ty6W4,3870
|
|
192
192
|
webull/data/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -218,13 +218,13 @@ webull/data/quotes/subscribe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
218
218
|
webull/data/quotes/subscribe/ask_bid_result.py,sha256=EWu5dFMb_BwFGYPLe-f9uCD8_Ftl1wguhpU1qXi2zaY,1552
|
|
219
219
|
webull/data/quotes/subscribe/basic_result.py,sha256=l9pxGlt8HLHwE3plq_6J0OPZ_X4ZjjRfa1f9nExu2dE,1450
|
|
220
220
|
webull/data/quotes/subscribe/broker_result.py,sha256=E6pM0Ydr6tU_bPSOeyu1KJf7oYgbO-lIXLIdJQANH4I,1013
|
|
221
|
-
webull/data/quotes/subscribe/message_pb2.py,sha256=
|
|
221
|
+
webull/data/quotes/subscribe/message_pb2.py,sha256=JimxZN9hCEvt_NF0eYRNZJttEsCAc3bWAelE5Tva7yM,3136
|
|
222
222
|
webull/data/quotes/subscribe/order_result.py,sha256=bqLjRzCDK0jpQBMm00QxfgV-SPg04lOLYxc8SgpkFDw,912
|
|
223
223
|
webull/data/quotes/subscribe/payload_type.py,sha256=nacQubAzKjutfddNdilckpsbamCUt6nrBnzrxgMOrWQ,674
|
|
224
224
|
webull/data/quotes/subscribe/quote_decoder.py,sha256=vTDKi3TaQ79ODTydVcEEiJR2g0fQLPf5hUOqo7Mi1gw,1016
|
|
225
225
|
webull/data/quotes/subscribe/quote_result.py,sha256=2SoRzSGANphAut1jleNnfZtUhpqqbELRcs1biu440p8,1442
|
|
226
226
|
webull/data/quotes/subscribe/snapshot_decoder.py,sha256=dukBHXa971LHp9oPkgQ4mqL_8yIAU5XSlUIUjpMz2NY,1045
|
|
227
|
-
webull/data/quotes/subscribe/snapshot_result.py,sha256=
|
|
227
|
+
webull/data/quotes/subscribe/snapshot_result.py,sha256=U-YPGAVklcCsXZsp-9TPUUIfvqEgbPsou4Mhkkbxzp8,5077
|
|
228
228
|
webull/data/quotes/subscribe/tick_decoder.py,sha256=Qb__nJth2vsDMk2bWfNxY-mUGTUPzSZPO-ukHVxq80g,1008
|
|
229
229
|
webull/data/quotes/subscribe/tick_result.py,sha256=i2-4ZD1GK5EI3NhxkhSmUXfKnkBMjrwVBzLoDUY95OU,1467
|
|
230
230
|
webull/data/request/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -248,7 +248,7 @@ webull/data/request/get_snapshot_request.py,sha256=OD2PiaxmBCboFDaU8DFTwvfNd2zOb
|
|
|
248
248
|
webull/data/request/get_tick_request.py,sha256=rUHhQgC8Z_6ensLyCkg3DDK55SlEi0Bc_dhpCIIspDs,1366
|
|
249
249
|
webull/data/request/subscribe_request.py,sha256=dm93Q5Q4gigAMqAobolaYYSs3wM6QddPUZOjEtJsX-8,1471
|
|
250
250
|
webull/data/request/unsubscribe_request.py,sha256=hQA4mYM64PgmQEA2otl47-3nCXqjsSY_weFA3_wNbMM,1446
|
|
251
|
-
webull/trade/__init__.py,sha256=
|
|
251
|
+
webull/trade/__init__.py,sha256=iCEPnhz-knfGRAO4Ep2uQaYf4xwhPIjjcgAcNjga8kc,21
|
|
252
252
|
webull/trade/trade_client.py,sha256=_6lH4KO-jKgKWU28fWNsc9-KEHto-WvaP0gT96BJ_dw,2184
|
|
253
253
|
webull/trade/trade_events_client.py,sha256=4a7qupeT3dKJRKBQqXNhCai6ENzX6PA4yjTDHHxPR0w,8892
|
|
254
254
|
webull/trade/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -310,6 +310,7 @@ webull/trade/request/v2/preview_order_request.py,sha256=gRld4FcpBFQk7X24hzgs5lmM
|
|
|
310
310
|
webull/trade/request/v2/replace_option_request.py,sha256=0S86ToPdfZlZmf85jBQ39a1RkQ8wY7FJZA4hdxmyjN0,1189
|
|
311
311
|
webull/trade/request/v2/replace_order_request.py,sha256=rptKekCa6uSj1rzg8TT7jnuMVCDquhev6naPESqpihU,1193
|
|
312
312
|
webull/trade/request/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
313
|
+
webull/trade/request/v3/batch_place_order_request.py,sha256=QW6EZ-mZVTdLVbzJsr0VxA5Bca4hRgAq9_x6N9xVjnk,2115
|
|
313
314
|
webull/trade/request/v3/cancel_order_request.py,sha256=x3_5w-0_qwN6CjW2yuM4oLd51QuuTtXNVKZQ23MYscs,1024
|
|
314
315
|
webull/trade/request/v3/get_order_detail_request.py,sha256=jYuU8vHdE0fkXZdHqyuZ-rnhHUlQ9Qo5r7FvzmCfEKE,1000
|
|
315
316
|
webull/trade/request/v3/get_order_history_request.py,sha256=iCZEUs6JHOlRuA-u1zL1QvfD8h7gaEg1TR0X4mWxIVo,1304
|
|
@@ -326,10 +327,10 @@ webull/trade/trade/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
326
327
|
webull/trade/trade/v2/account_info_v2.py,sha256=IGY_BGTrZ0h7yQ_nDodNtmKen9gXW6heUFb7VLRQ9bY,2142
|
|
327
328
|
webull/trade/trade/v2/order_operation_v2.py,sha256=m54RH2j45CBBWEnqe4KxrsltAF44XKtPMT4kv8t7djQ,12745
|
|
328
329
|
webull/trade/trade/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
329
|
-
webull/trade/trade/v3/order_opration_v3.py,sha256=
|
|
330
|
-
webull_openapi_python_sdk-1.0.
|
|
331
|
-
webull_openapi_python_sdk-1.0.
|
|
332
|
-
webull_openapi_python_sdk-1.0.
|
|
333
|
-
webull_openapi_python_sdk-1.0.
|
|
334
|
-
webull_openapi_python_sdk-1.0.
|
|
335
|
-
webull_openapi_python_sdk-1.0.
|
|
330
|
+
webull/trade/trade/v3/order_opration_v3.py,sha256=_L10--m_XhoMe8YeYjQXVvRoTAWoRRzLU59UeneyMrU,7428
|
|
331
|
+
webull_openapi_python_sdk-1.0.8.dist-info/licenses/LICENSE,sha256=ALOnsLtb1aHxmDJg3-oMi0BO-i-cjfyZaOBfnnavKMc,11359
|
|
332
|
+
webull_openapi_python_sdk-1.0.8.dist-info/licenses/NOTICE,sha256=X5TApte6CPV10b96Cb70IRLusXmiRmK_R-dB-1tQM_I,2018
|
|
333
|
+
webull_openapi_python_sdk-1.0.8.dist-info/METADATA,sha256=jcAKegwV60urTKWSWSD1BhcsnEPVUU49Cz22cpSAKU8,702
|
|
334
|
+
webull_openapi_python_sdk-1.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
335
|
+
webull_openapi_python_sdk-1.0.8.dist-info/top_level.txt,sha256=h8pEjNDGWS2ZUZ2vYFpUShoMQT0ZRIQaD57QJWD8_aI,15
|
|
336
|
+
webull_openapi_python_sdk-1.0.8.dist-info/RECORD,,
|
{webull_openapi_python_sdk-1.0.7.dist-info → webull_openapi_python_sdk-1.0.8.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|