webull-openapi-python-sdk 3.0.0__py3-none-any.whl → 3.0.2__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/data/data_client.py +3 -0
- samples/trade/trade_client_v3.py +38 -0
- webull/__init__.py +1 -1
- webull/core/__init__.py +1 -1
- webull/core/utils/validation.py +8 -1
- webull/data/__init__.py +1 -1
- webull/data/quotes/market_data.py +15 -12
- webull/data/request/get_historical_bars_request.py +7 -0
- webull/trade/__init__.py +1 -1
- webull/trade/common/transfer_activities_param.py +44 -0
- webull/trade/request/v3/get_transfer_activities_detail_request.py +28 -0
- webull/trade/request/v3/get_transfer_activities_request.py +55 -0
- webull/trade/trade/activity.py +73 -0
- {webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/METADATA +1 -1
- {webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/RECORD +20 -17
- {webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/WHEEL +0 -0
- {webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/licenses/LICENSE +0 -0
- {webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/licenses/NOTICE +0 -0
- {webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/top_level.txt +0 -0
samples/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '
|
|
1
|
+
__version__ = '3.0.2'
|
samples/data/data_client.py
CHANGED
|
@@ -63,6 +63,9 @@ if __name__ == '__main__':
|
|
|
63
63
|
if res.status_code == 200:
|
|
64
64
|
print('get_snapshot:', res.json())
|
|
65
65
|
|
|
66
|
+
# get_history_bar is deprecated: the /market-data/stocks/bars/get endpoint
|
|
67
|
+
# is no longer available. It now delegates to the batch endpoint
|
|
68
|
+
# /market-data/stocks/bars/list. Prefer get_batch_history_bar directly.
|
|
66
69
|
res = data_client.market_data.get_history_bar('AAPL', Category.US_STOCK.name, Timespan.M1.name)
|
|
67
70
|
if res.status_code == 200:
|
|
68
71
|
print('get_history_bar:', res.json())
|
samples/trade/trade_client_v3.py
CHANGED
|
@@ -18,6 +18,7 @@ from time import sleep
|
|
|
18
18
|
|
|
19
19
|
from webull.core.client import ApiClient
|
|
20
20
|
from webull.trade.trade_client import TradeClient
|
|
21
|
+
from webull.trade.common.transfer_activities_param import TransferActivitiesParam
|
|
21
22
|
|
|
22
23
|
optional_api_endpoint = "<api_endpoint>"
|
|
23
24
|
your_app_key = "<your_app_key>"
|
|
@@ -888,3 +889,40 @@ if __name__ == '__main__':
|
|
|
888
889
|
res = trade_client.order_v3.get_order_detail(account_id, trailing_stop_loss_limit_client_order_id)
|
|
889
890
|
if res.status_code == 200:
|
|
890
891
|
print('get trailing stop loss limit order detail res:', res.json())
|
|
892
|
+
|
|
893
|
+
# ============================================================
|
|
894
|
+
# Position Transfers Example (US only)
|
|
895
|
+
# ============================================================
|
|
896
|
+
|
|
897
|
+
# First page: pass no pagination_key and no filters.
|
|
898
|
+
res = trade_client.activity.list_transfers_activities(TransferActivitiesParam(account_id))
|
|
899
|
+
if res.status_code == 200:
|
|
900
|
+
print('list transfers activities res:', res.json())
|
|
901
|
+
|
|
902
|
+
# Iterate all pages using the returned pagination_key until it is absent.
|
|
903
|
+
pagination_key = (res.json() or {}).get('pagination_key') if res.status_code == 200 else None
|
|
904
|
+
while pagination_key:
|
|
905
|
+
res = trade_client.activity.list_transfers_activities(
|
|
906
|
+
TransferActivitiesParam(account_id, pagination_key=pagination_key))
|
|
907
|
+
if res.status_code != 200:
|
|
908
|
+
break
|
|
909
|
+
print('list transfers activities next page res:', res.json())
|
|
910
|
+
pagination_key = (res.json() or {}).get('pagination_key')
|
|
911
|
+
|
|
912
|
+
# Filtered query: ACATS/crypto incoming transfers, FULL type, within a time range.
|
|
913
|
+
res = trade_client.activity.list_transfers_activities(
|
|
914
|
+
TransferActivitiesParam(
|
|
915
|
+
account_id,
|
|
916
|
+
transfer_method="ACATS,CRYPTO_TRANSFER",
|
|
917
|
+
direction="INCOMING",
|
|
918
|
+
status="PENDING,COMPLETED",
|
|
919
|
+
acats_transfer_types="FULL",
|
|
920
|
+
start_time="2026-08-01T00:00:00Z",
|
|
921
|
+
end_time="2026-08-31T23:59:59Z"))
|
|
922
|
+
if res.status_code == 200:
|
|
923
|
+
print('list transfers activities filtered res:', res.json())
|
|
924
|
+
|
|
925
|
+
# Get a single transfer record by account_id and transfer_id.
|
|
926
|
+
res = trade_client.activity.get_transfer_activity_detail(account_id, transfer_id="<your_transfer_id>")
|
|
927
|
+
if res.status_code == 200:
|
|
928
|
+
print('get transfer activity res:', res.json())
|
webull/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '3.0.
|
|
1
|
+
__version__ = '3.0.2'
|
webull/core/__init__.py
CHANGED
webull/core/utils/validation.py
CHANGED
|
@@ -46,4 +46,11 @@ def assert_integer_positive(integer, name):
|
|
|
46
46
|
if isinstance(integer, int) and integer > 0:
|
|
47
47
|
return
|
|
48
48
|
raise ClientException(error_code.SDK_INVALID_PARAMETER,
|
|
49
|
-
"{0} should be a positive integer.".format(name))
|
|
49
|
+
"{0} should be a positive integer.".format(name))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def assert_string_not_empty(value, name):
|
|
53
|
+
if isinstance(value, str) and value.strip():
|
|
54
|
+
return
|
|
55
|
+
raise ClientException(error_code.SDK_INVALID_PARAMETER,
|
|
56
|
+
"{0} should not be empty.".format(name))
|
webull/data/__init__.py
CHANGED
|
@@ -15,7 +15,6 @@ from webull.data.request.get_batch_historical_bars_request import BatchHistorica
|
|
|
15
15
|
from webull.data.request.get_corp_action_request import GetCorpActionRequest
|
|
16
16
|
from webull.data.request.get_eod_bars_request import GetEodBarsRequest
|
|
17
17
|
from webull.data.request.get_footprint_request import GetFootprintRequest
|
|
18
|
-
from webull.data.request.get_historical_bars_request import GetHistoricalBarsRequest
|
|
19
18
|
from webull.data.request.get_noii_bars_request import GetNoiiBarsRequest
|
|
20
19
|
from webull.data.request.get_noii_snapshot_request import GetNoiiSnapshotRequest
|
|
21
20
|
from webull.data.request.get_quotes_request import GetQuotesRequest
|
|
@@ -29,6 +28,11 @@ class MarketData:
|
|
|
29
28
|
|
|
30
29
|
def get_history_bar(self, symbol, category, timespan, count='200', real_time_required=None, trading_sessions=None, start_time=None, end_time=None):
|
|
31
30
|
"""
|
|
31
|
+
.. deprecated::
|
|
32
|
+
The endpoint /market-data/stocks/bars/get is no longer available.
|
|
33
|
+
Use :meth:`get_batch_history_bar` instead, which calls the batch
|
|
34
|
+
endpoint /market-data/stocks/bars/list.
|
|
35
|
+
|
|
32
36
|
Returns to Instrument in the window aggregated data.
|
|
33
37
|
According to the last N K-lines of the stock code, it supports various granularity K-lines such as m1 and m5.
|
|
34
38
|
Currently, only the K-line with the previous weight is provided for the daily K-line and above,
|
|
@@ -44,17 +48,16 @@ class MarketData:
|
|
|
44
48
|
:param start_time: Start timestamp in milliseconds (Long). Optional.
|
|
45
49
|
:param end_time: End timestamp in milliseconds (Long). Delayed permission will auto-offset time. Optional.
|
|
46
50
|
"""
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return response
|
|
51
|
+
return self.get_batch_history_bar(
|
|
52
|
+
[symbol],
|
|
53
|
+
category,
|
|
54
|
+
timespan,
|
|
55
|
+
count=count,
|
|
56
|
+
real_time_required=real_time_required,
|
|
57
|
+
trading_sessions=trading_sessions,
|
|
58
|
+
start_time=start_time,
|
|
59
|
+
end_time=end_time,
|
|
60
|
+
)
|
|
58
61
|
|
|
59
62
|
def get_batch_history_bar(self, symbols, category, timespan, count='200', real_time_required=None, trading_sessions=None, start_time=None, end_time=None):
|
|
60
63
|
"""
|
|
@@ -16,6 +16,13 @@
|
|
|
16
16
|
from webull.core.request import ApiRequest
|
|
17
17
|
|
|
18
18
|
class GetHistoricalBarsRequest(ApiRequest):
|
|
19
|
+
"""
|
|
20
|
+
.. deprecated::
|
|
21
|
+
The endpoint /market-data/stocks/bars/get is no longer available.
|
|
22
|
+
Use :class:`webull.data.request.get_batch_historical_bars_request.BatchHistoricalBarsRequest`
|
|
23
|
+
instead, which calls the batch endpoint /market-data/stocks/bars/list.
|
|
24
|
+
"""
|
|
25
|
+
|
|
19
26
|
def __init__(self):
|
|
20
27
|
ApiRequest.__init__(self, "/market-data/stocks/bars/get", version='v3', method="GET", query_params={})
|
|
21
28
|
|
webull/trade/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '3.0.
|
|
1
|
+
__version__ = '3.0.2'
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
|
|
15
|
+
# coding=utf-8
|
|
16
|
+
|
|
17
|
+
from webull.core.utils import validation
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TransferActivitiesParam:
|
|
21
|
+
"""
|
|
22
|
+
Parameter object for :meth:`Activity.list_transfers_activities`.
|
|
23
|
+
|
|
24
|
+
:param account_id: Account ID (required).
|
|
25
|
+
:param transfer_method: Transfer method filter, comma-separated (e.g. ACATS,CRYPTO_TRANSFER) (optional).
|
|
26
|
+
:param direction: Direction filter: INCOMING or OUTGOING (optional).
|
|
27
|
+
:param status: Status filter, comma-separated: PENDING, COMPLETED, REJECTED, FAILED, CANCELLED (optional).
|
|
28
|
+
:param acats_transfer_types: ACATS transfer types filter, comma-separated: FULL, PARTIAL, RESIDUAL, RECLAIM, OTHER (optional).
|
|
29
|
+
:param start_time: ISO8601 UTC start time of transfer create time (optional).
|
|
30
|
+
:param end_time: ISO8601 UTC end time of transfer create time (optional).
|
|
31
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page (optional).
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(self, account_id, transfer_method=None, direction=None, status=None,
|
|
35
|
+
acats_transfer_types=None, start_time=None, end_time=None, pagination_key=None):
|
|
36
|
+
validation.assert_string_not_empty(account_id, "account_id")
|
|
37
|
+
self.account_id = account_id
|
|
38
|
+
self.transfer_method = transfer_method
|
|
39
|
+
self.direction = direction
|
|
40
|
+
self.status = status
|
|
41
|
+
self.acats_transfer_types = acats_transfer_types
|
|
42
|
+
self.start_time = start_time
|
|
43
|
+
self.end_time = end_time
|
|
44
|
+
self.pagination_key = pagination_key
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
|
|
15
|
+
# coding=utf-8
|
|
16
|
+
from webull.core.request import ApiRequest
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TransferActivitiesDetailRequest(ApiRequest):
|
|
20
|
+
def __init__(self):
|
|
21
|
+
ApiRequest.__init__(self, "/trading/activities/transfer-activities/get", version='v3', method="GET",
|
|
22
|
+
query_params={})
|
|
23
|
+
|
|
24
|
+
def set_account_id(self, account_id):
|
|
25
|
+
self.add_query_param("account_id", account_id)
|
|
26
|
+
|
|
27
|
+
def set_transfer_id(self, transfer_id):
|
|
28
|
+
self.add_query_param("transfer_id", transfer_id)
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
|
|
15
|
+
# coding=utf-8
|
|
16
|
+
from webull.core.request import ApiRequest
|
|
17
|
+
from webull.core.utils import validation
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TransferActivitiesRequest(ApiRequest):
|
|
21
|
+
def __init__(self):
|
|
22
|
+
ApiRequest.__init__(self, "/trading/activities/transfer-activities/list", version='v3', method="GET",
|
|
23
|
+
query_params={})
|
|
24
|
+
|
|
25
|
+
def set_account_id(self, account_id):
|
|
26
|
+
validation.assert_string_not_empty(account_id, "account_id")
|
|
27
|
+
self.add_query_param("account_id", account_id)
|
|
28
|
+
|
|
29
|
+
def set_transfer_method(self, transfer_method):
|
|
30
|
+
if transfer_method is not None:
|
|
31
|
+
self.add_query_param("transfer_method", transfer_method)
|
|
32
|
+
|
|
33
|
+
def set_direction(self, direction):
|
|
34
|
+
if direction is not None:
|
|
35
|
+
self.add_query_param("direction", direction)
|
|
36
|
+
|
|
37
|
+
def set_status(self, status):
|
|
38
|
+
if status is not None:
|
|
39
|
+
self.add_query_param("status", status)
|
|
40
|
+
|
|
41
|
+
def set_acats_transfer_types(self, acats_transfer_types):
|
|
42
|
+
if acats_transfer_types is not None:
|
|
43
|
+
self.add_query_param("acats_transfer_types", acats_transfer_types)
|
|
44
|
+
|
|
45
|
+
def set_start_time(self, start_time):
|
|
46
|
+
if start_time is not None:
|
|
47
|
+
self.add_query_param("start_time", start_time)
|
|
48
|
+
|
|
49
|
+
def set_end_time(self, end_time):
|
|
50
|
+
if end_time is not None:
|
|
51
|
+
self.add_query_param("end_time", end_time)
|
|
52
|
+
|
|
53
|
+
def set_pagination_key(self, pagination_key):
|
|
54
|
+
if pagination_key:
|
|
55
|
+
self.add_query_param("pagination_key", pagination_key)
|
webull/trade/trade/activity.py
CHANGED
|
@@ -14,14 +14,28 @@
|
|
|
14
14
|
|
|
15
15
|
# coding=utf-8
|
|
16
16
|
|
|
17
|
+
from webull.core.common.region import Region
|
|
18
|
+
from webull.core.exception import error_code
|
|
19
|
+
from webull.core.exception.exceptions import ClientException
|
|
17
20
|
from webull.trade.request.get_activities_request import GetActivitiesRequest
|
|
18
21
|
from webull.trade.request.get_activities_request_v2 import GetActivitiesRequestV2
|
|
22
|
+
from webull.trade.request.v3.get_transfer_activities_request import TransferActivitiesRequest
|
|
23
|
+
from webull.trade.request.v3.get_transfer_activities_detail_request import TransferActivitiesDetailRequest
|
|
24
|
+
from webull.trade.common.transfer_activities_param import TransferActivitiesParam
|
|
19
25
|
|
|
20
26
|
|
|
21
27
|
class Activity:
|
|
22
28
|
def __init__(self, api_client):
|
|
23
29
|
self.client = api_client
|
|
24
30
|
|
|
31
|
+
def _assert_us_region(self, operation):
|
|
32
|
+
region_id = self.client.get_region_id()
|
|
33
|
+
if region_id != Region.US.value:
|
|
34
|
+
raise ClientException(
|
|
35
|
+
error_code.SDK_NOT_SUPPORT,
|
|
36
|
+
"%s is currently supported only for Webull US region, current region is %s." % (
|
|
37
|
+
operation, region_id))
|
|
38
|
+
|
|
25
39
|
def get_activities(self, account_id, activity_types=None, start_time=None, end_time=None,
|
|
26
40
|
last_activity_id=None, page_size=10):
|
|
27
41
|
"""
|
|
@@ -80,3 +94,62 @@ class Activity:
|
|
|
80
94
|
get_activities_request.set_pagination_key(pagination_key)
|
|
81
95
|
response = self.client.get_response(get_activities_request)
|
|
82
96
|
return response
|
|
97
|
+
|
|
98
|
+
def list_transfers_activities(self, param):
|
|
99
|
+
"""
|
|
100
|
+
Query transfer records with pagination support. Results are ordered by create time descending.
|
|
101
|
+
Routes to ACATS or crypto transfer downstream by account type.
|
|
102
|
+
This interface is currently supported only for Webull US.
|
|
103
|
+
|
|
104
|
+
Each record is a summary view containing: account_id, transfer_method, transfer_id, direction,
|
|
105
|
+
status, failure_reason, acats_associated_number, acats_transfer_types, create_time, update_time,
|
|
106
|
+
transfer_settlement_date. Detailed fields (acats_control_number, contra_broker, crypto_transaction_hash,
|
|
107
|
+
crypto_from_address, crypto_to_address, cash, positions) are returned only by get_transfer_activity.
|
|
108
|
+
|
|
109
|
+
:param param: A :class:`TransferActivitiesParam` object carrying account_id and optional filters.
|
|
110
|
+
"""
|
|
111
|
+
self._assert_us_region("list_transfers_activities")
|
|
112
|
+
if not isinstance(param, TransferActivitiesParam):
|
|
113
|
+
raise ClientException(
|
|
114
|
+
error_code.SDK_INVALID_PARAMETER,
|
|
115
|
+
"param should be a TransferActivitiesParam object.")
|
|
116
|
+
get_transfers_request = TransferActivitiesRequest()
|
|
117
|
+
get_transfers_request.set_account_id(param.account_id)
|
|
118
|
+
if param.transfer_method is not None:
|
|
119
|
+
get_transfers_request.set_transfer_method(param.transfer_method)
|
|
120
|
+
if param.direction is not None:
|
|
121
|
+
get_transfers_request.set_direction(param.direction)
|
|
122
|
+
if param.status is not None:
|
|
123
|
+
get_transfers_request.set_status(param.status)
|
|
124
|
+
if param.acats_transfer_types is not None:
|
|
125
|
+
get_transfers_request.set_acats_transfer_types(param.acats_transfer_types)
|
|
126
|
+
if param.start_time is not None:
|
|
127
|
+
get_transfers_request.set_start_time(param.start_time)
|
|
128
|
+
if param.end_time is not None:
|
|
129
|
+
get_transfers_request.set_end_time(param.end_time)
|
|
130
|
+
if param.pagination_key is not None:
|
|
131
|
+
get_transfers_request.set_pagination_key(param.pagination_key)
|
|
132
|
+
response = self.client.get_response(get_transfers_request)
|
|
133
|
+
return response
|
|
134
|
+
|
|
135
|
+
def get_transfer_activity_detail(self, account_id, transfer_id):
|
|
136
|
+
"""
|
|
137
|
+
Get a single transfer record by account ID and transfer ID.
|
|
138
|
+
This interface is currently supported only for Webull US.
|
|
139
|
+
|
|
140
|
+
Returns the full detail view. In addition to the summary fields from list_transfers_activities,
|
|
141
|
+
it also includes: acats_control_number, contra_broker (broker_name, dtc_number, account_type,
|
|
142
|
+
account_number), crypto_transaction_hash, crypto_from_address, crypto_to_address, cash
|
|
143
|
+
(amount, currency, settlement_date) and positions (asset_type is one of EQUITY, OPTION, FUTURES,
|
|
144
|
+
CRYPTO, EVENT, MUTUAL_FUND, BOND; plus symbol, name, cusip, quantity, fee_quantity, total_quantity,
|
|
145
|
+
transfer_price, settlement_date).
|
|
146
|
+
|
|
147
|
+
:param account_id: Account ID
|
|
148
|
+
:param transfer_id: Transfer record ID
|
|
149
|
+
"""
|
|
150
|
+
self._assert_us_region("get_transfer_activity_detail")
|
|
151
|
+
get_transfer_request = TransferActivitiesDetailRequest()
|
|
152
|
+
get_transfer_request.set_account_id(account_id)
|
|
153
|
+
get_transfer_request.set_transfer_id(transfer_id)
|
|
154
|
+
response = self.client.get_response(get_transfer_request)
|
|
155
|
+
return response
|
{webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/RECORD
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
samples/__init__.py,sha256=
|
|
1
|
+
samples/__init__.py,sha256=FDUC8xOuizaRKSkyG1VOmlDwzcPJgbzFUWz58fhdUGQ,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
|
|
5
5
|
samples/assets/assets_client.py,sha256=p9LS2Td3gbUMkHn4LD_9RMCFuaQRUbsKvG4PhZBGJDc,1974
|
|
6
6
|
samples/data/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
|
|
7
|
-
samples/data/data_client.py,sha256=
|
|
7
|
+
samples/data/data_client.py,sha256=IIrOWT74yMNC0CUGm2Ycel7ca38OFHOHWGYilNlXDZs,12886
|
|
8
8
|
samples/data/data_client_event.py,sha256=u6Bebo2hTE0Ri1bQHa8nhFEe-fBbdxfNwLpTZh3E1WY,3046
|
|
9
9
|
samples/data/data_streaming_client.py,sha256=2da21SE_Mneo7zbM_l1rkpdBBbI4avrpnSPMxsZIalw,4085
|
|
10
10
|
samples/data/data_streaming_client_async.py,sha256=o_u1ch8JdbcYnLCvDCCUzO-Z1IG7BUKncu_GB_kCbOs,4443
|
|
@@ -17,13 +17,13 @@ samples/screener/screener_client.py,sha256=R9LApEv9gZhn0RU3Jy4u3b-64FdvoMRf3gZpp
|
|
|
17
17
|
samples/trade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
18
|
samples/trade/trade_client.py,sha256=LyWSvZJH4ByCkRORqP9WdkXfx65A2b6fhc9_GzL8DOM,6258
|
|
19
19
|
samples/trade/trade_client_v2.py,sha256=IO-zmRiUnCmIetTdiYunPh8jVK2VaPrOR77Dwvz1auY,10771
|
|
20
|
-
samples/trade/trade_client_v3.py,sha256=
|
|
20
|
+
samples/trade/trade_client_v3.py,sha256=GdLsEnWZyBcOEEqGjfMVYtNkw2qN7J6ePj_gwjlPpmo,36105
|
|
21
21
|
samples/trade/trade_client_v3_event.py,sha256=91HlT04KlK8Q5gUnsB8F5ErCFdJRnpDABKkBfYRc-YE,3932
|
|
22
22
|
samples/trade/trade_event_client.py,sha256=ni7OEc4nnz2Hpbh0Kzl6DXB-FuDPc2UGBaLFnCrdFZ4,2824
|
|
23
23
|
samples/watchlist/__init__.py,sha256=rtV5s4_CJgDAT4DGEJa_pNLJU71Wdr5OLz_IQ1EajFQ,567
|
|
24
24
|
samples/watchlist/watchlist_client.py,sha256=lpzJs7SXuSka2KKkJ0u9s83A9iHta5qrjvIdkbfNcwg,3246
|
|
25
|
-
webull/__init__.py,sha256=
|
|
26
|
-
webull/core/__init__.py,sha256=
|
|
25
|
+
webull/__init__.py,sha256=FDUC8xOuizaRKSkyG1VOmlDwzcPJgbzFUWz58fhdUGQ,22
|
|
26
|
+
webull/core/__init__.py,sha256=AGC3bHtX5fLfhuCnNIYQkW_J2v06qH3C3qvpzy6OuGA,225
|
|
27
27
|
webull/core/client.py,sha256=zxSBiII9KDxc5tHpTerJfV_PKPt8E9e3oTOpiakAtJw,16758
|
|
28
28
|
webull/core/compat.py,sha256=_r6Y_f3vTo_DoxOaCvLjnvOo1KRkD2Z9kXSh8OijEIA,3088
|
|
29
29
|
webull/core/headers.py,sha256=Wj2zev1XYyYsy2b9YKnoK3GqjVsXZO_o2WziMmuVBTw,2061
|
|
@@ -88,8 +88,8 @@ webull/core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
88
88
|
webull/core/utils/common.py,sha256=bb64grSP7PjaAIe8YYKDNzQ4qwgN7-qW0r24idTEqEY,2177
|
|
89
89
|
webull/core/utils/data.py,sha256=YUyoWY68_2RkKanh3jsDscgGx__FIPh5VNEGXr1Qotc,852
|
|
90
90
|
webull/core/utils/desensitize.py,sha256=186BKVDomhhKnIi_4-1bWJ7P5s01rStjeIwJkTEGoIA,952
|
|
91
|
-
webull/core/utils/validation.py,sha256=
|
|
92
|
-
webull/data/__init__.py,sha256=
|
|
91
|
+
webull/core/utils/validation.py,sha256=WXNBtJSvKfZ4qX40ke1rOMcu8TyYRemKsLog_t_T6tQ,2192
|
|
92
|
+
webull/data/__init__.py,sha256=UCnuTeE8EnXqlDk2p8bTtCleZxBRx4QKPEQQtkRocOM,38
|
|
93
93
|
webull/data/data_client.py,sha256=FzatKHXgu5xv-FKFaX-mFYdhLTdz7zpRUox9AGWrReQ,2429
|
|
94
94
|
webull/data/data_streaming_client.py,sha256=kLKjFH4INREkPIjw6efPwnHGHWIDJn42IEsQam0njb8,4623
|
|
95
95
|
webull/data/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -117,7 +117,7 @@ webull/data/quotes/event_market_data.py,sha256=lARSHqnVxRZZNOIi9uP-Rs5StMIUWtmwr
|
|
|
117
117
|
webull/data/quotes/fundamentals.py,sha256=WALbh8Q_91vDXJjdolVzMZpUNlqBQCRqL6SmVXUJVDU,15421
|
|
118
118
|
webull/data/quotes/futures_market_data.py,sha256=fc9giYNy1LcdLHOJV31zMbPBKtWDH8kBW5xRFgHzQUA,5596
|
|
119
119
|
webull/data/quotes/instrument.py,sha256=3WQoZsbeyHMs9o9xV4iFAGWYu2YVuCAC8A7bYMaFtCI,23585
|
|
120
|
-
webull/data/quotes/market_data.py,sha256=
|
|
120
|
+
webull/data/quotes/market_data.py,sha256=BUGKgsIduauxbznNSQduSEslTXkY6zcZRhvnImW7Wxk,14619
|
|
121
121
|
webull/data/quotes/market_streaming_data.py,sha256=khgTGqrPRiKkRVnG5Post5Vpu9lCAP288B_OE20_JM8,3135
|
|
122
122
|
webull/data/quotes/option_market_data.py,sha256=4fW_GI3u1T-5dluhLRQ60Gbb2bsnhWkSrILYJq-96pw,3305
|
|
123
123
|
webull/data/quotes/screener.py,sha256=NnOCb1jV_-OYT2We-MezMgXVQZk44-StV9l0kSE9FdY,18485
|
|
@@ -192,7 +192,7 @@ webull/data/request/get_futures_product_class.py,sha256=BnxbPQ1qpXIeYQExETIUjab2
|
|
|
192
192
|
webull/data/request/get_futures_products_request.py,sha256=UKI9Ih0NJzPMBDMRKsi-PJleJkqmZqscoM_cfHHHL9E,1068
|
|
193
193
|
webull/data/request/get_futures_snapshot_request.py,sha256=CDojkrzpFcHKV3eUEL2l3a0q30REDl8bsehFgA4O1MM,1135
|
|
194
194
|
webull/data/request/get_futures_tick_request.py,sha256=_xaYfASHnWBA6ETceiCdURrMUGbTM0iA0aX7-Um5F0s,1057
|
|
195
|
-
webull/data/request/get_historical_bars_request.py,sha256=
|
|
195
|
+
webull/data/request/get_historical_bars_request.py,sha256=WBQ9tFSgcA92hGTUua7aJ9gBxA3yBz2SJMoXadIaRH4,2488
|
|
196
196
|
webull/data/request/get_industry_comparison_request.py,sha256=KBdma_EAQTJGuyQEa5bmjgZgLjpm-rHPAwbEaVZ_WVA,1191
|
|
197
197
|
webull/data/request/get_instruments_request.py,sha256=c6bCzralfUAygM4TbGpCh1zVsIBM5Xz-k3txO9gtPhU,1745
|
|
198
198
|
webull/data/request/get_instruments_request_v2.py,sha256=7KB_ZU855zdBuxll0ZVDefWo9pBYViVCVlhE7O9BUC4,1553
|
|
@@ -231,7 +231,7 @@ webull/data/request/watchlist/get_watchlist_request.py,sha256=AC59m2-5I78ctAcTUh
|
|
|
231
231
|
webull/data/request/watchlist/remove_watchlist_instruments_request.py,sha256=Fr9whov0qTCSINYSi_eDbvIhZmqdm5p7XW-X-eyICwk,1472
|
|
232
232
|
webull/data/request/watchlist/update_watchlist_instruments_request.py,sha256=OYuF3dYQJAZLf0FkB3i9SxwG6Zy9ZUaiBvsu5flKhvA,1514
|
|
233
233
|
webull/data/request/watchlist/update_watchlist_request.py,sha256=vGWnDZoK3bT9NKLJ7TO4rqlDqcOemj0HOuARTeAGnS0,1459
|
|
234
|
-
webull/trade/__init__.py,sha256=
|
|
234
|
+
webull/trade/__init__.py,sha256=FDUC8xOuizaRKSkyG1VOmlDwzcPJgbzFUWz58fhdUGQ,22
|
|
235
235
|
webull/trade/trade_client.py,sha256=c2SWGi0ATix5U2ZRWgsx4p4CJKmGy2qPkq1Pn2ndN0s,2279
|
|
236
236
|
webull/trade/trade_events_client.py,sha256=sHoKPKQQ2Ye_c9tt9MYxFeza3T5lLR5VosNro7H1gN4,9748
|
|
237
237
|
webull/trade/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -252,6 +252,7 @@ webull/trade/common/position_intent.py,sha256=nfO6vihp3z_rk4QUpOlUuFEiLL3KVWja2G
|
|
|
252
252
|
webull/trade/common/trade_policy.py,sha256=Tm3RN2_fZSXl5APPWeg8riEHlrvFURPt-dGIK6zDbPU,800
|
|
253
253
|
webull/trade/common/trading_date_type.py,sha256=xw8-oxBZNB-jdF25-PRv_5gwpXs8MksVZyZ7ZXRMLqY,747
|
|
254
254
|
webull/trade/common/trailing_type.py,sha256=w-wi2Gy-v-8b2oUprQHobwql639Je4FIlPKxojlagz4,729
|
|
255
|
+
webull/trade/common/transfer_activities_param.py,sha256=KESYl9aMTQn0fXWh7GrX1fbuvC7yeNNqkwKg4BRLkQ0,2065
|
|
255
256
|
webull/trade/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
256
257
|
webull/trade/events/default_retry_policy.py,sha256=zWoaJFJSUTtHw_qLj9_AIPBzFW6UHX295IfcuBHzYaI,2748
|
|
257
258
|
webull/trade/events/events_pb2.py,sha256=NLolj5VOws1LJT5YIvnuZab9YYhR4lm2-iCkztaARPo,2440
|
|
@@ -307,12 +308,14 @@ webull/trade/request/v3/get_order_history_request.py,sha256=vGDQ1WGhgbSPifoXIMLh
|
|
|
307
308
|
webull/trade/request/v3/get_order_history_request_v2.py,sha256=pOzlI9IV2gK-IgJmmn2zfZgRjiwJZVYldf8SlFnPpCA,1306
|
|
308
309
|
webull/trade/request/v3/get_order_open_request.py,sha256=SwjcPEQ2V2di84Gsuq1dsrWc9jcXUzh-VsCUn5hG5zk,1202
|
|
309
310
|
webull/trade/request/v3/get_order_open_request_v2.py,sha256=0GDvshJC2WfAV_v1xcuPpfn-ExTyh9W3tgp72DkkNI0,1033
|
|
311
|
+
webull/trade/request/v3/get_transfer_activities_detail_request.py,sha256=cJeqN6NzDhz-6JmoV1LvEHKJOfffqew_U5lf-zwbB-k,1057
|
|
312
|
+
webull/trade/request/v3/get_transfer_activities_request.py,sha256=IyAlcaxa3x0_ae0a0jscvjdUu3kBGAC8Q_n07TmhC9Y,2067
|
|
310
313
|
webull/trade/request/v3/place_order_request.py,sha256=4WadcssswvLleaIw4DAuUo4Y9CrTVuP8b-oFnO31ABA,2261
|
|
311
314
|
webull/trade/request/v3/preview_order_request.py,sha256=40IAlgfT11B1hVCQgtTKxkS6BsPxKvYkAw6y_v2YZ_0,1127
|
|
312
315
|
webull/trade/request/v3/replace_order_request.py,sha256=vaC1Y6y10_MITkAweCwAi4Lo80cBOxWGFnGubPrGKAQ,1207
|
|
313
316
|
webull/trade/trade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
314
317
|
webull/trade/trade/account_info.py,sha256=M67jtCpbttp7tDCNNW99A1oLX-62c26yR1XXZ-xkK18,3609
|
|
315
|
-
webull/trade/trade/activity.py,sha256=
|
|
318
|
+
webull/trade/trade/activity.py,sha256=ppPuJ_8uFzGqSvipLxogJ5_u75qAqSUkOWu0D8TwSvs,7882
|
|
316
319
|
webull/trade/trade/order_operation.py,sha256=QrL4Da87RTOSupiAbuXtZigo9602Byp14DQGyR99hkI,12849
|
|
317
320
|
webull/trade/trade/trade_calendar.py,sha256=rGSiR5GZggQnZOmmpbC-06trgPQgFTvdpUzGMpw2ycw,1415
|
|
318
321
|
webull/trade/trade/trade_instrument.py,sha256=AV-Y-x_hWBnF9T2g8SbYGKEGFmEQJi0QhtfTCoZicZo,3472
|
|
@@ -321,9 +324,9 @@ webull/trade/trade/v2/account_info_v2.py,sha256=TX-BskDxag52Om-RY803mOThZUtN1j2G
|
|
|
321
324
|
webull/trade/trade/v2/order_operation_v2.py,sha256=ZWH-6dp5rvokb5YX5HO2Op-KPLjGR4gpJ06Kc_IUilQ,12816
|
|
322
325
|
webull/trade/trade/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
323
326
|
webull/trade/trade/v3/order_operation_v3.py,sha256=0tYdvcUIht4PNxZfAZLB4BlvgW5_kOFMzQhiL9YTJU4,15382
|
|
324
|
-
webull_openapi_python_sdk-3.0.
|
|
325
|
-
webull_openapi_python_sdk-3.0.
|
|
326
|
-
webull_openapi_python_sdk-3.0.
|
|
327
|
-
webull_openapi_python_sdk-3.0.
|
|
328
|
-
webull_openapi_python_sdk-3.0.
|
|
329
|
-
webull_openapi_python_sdk-3.0.
|
|
327
|
+
webull_openapi_python_sdk-3.0.2.dist-info/licenses/LICENSE,sha256=ALOnsLtb1aHxmDJg3-oMi0BO-i-cjfyZaOBfnnavKMc,11359
|
|
328
|
+
webull_openapi_python_sdk-3.0.2.dist-info/licenses/NOTICE,sha256=X5TApte6CPV10b96Cb70IRLusXmiRmK_R-dB-1tQM_I,2018
|
|
329
|
+
webull_openapi_python_sdk-3.0.2.dist-info/METADATA,sha256=E2LLuXz3zlVrxM2OSPBaOELfg1ZuFzx1q1hhF2Se47I,1211
|
|
330
|
+
webull_openapi_python_sdk-3.0.2.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
331
|
+
webull_openapi_python_sdk-3.0.2.dist-info/top_level.txt,sha256=h8pEjNDGWS2ZUZ2vYFpUShoMQT0ZRIQaD57QJWD8_aI,15
|
|
332
|
+
webull_openapi_python_sdk-3.0.2.dist-info/RECORD,,
|
{webull_openapi_python_sdk-3.0.0.dist-info → webull_openapi_python_sdk-3.0.2.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|