webull-openapi-python-sdk 1.0.9__tar.gz → 2.0.0__tar.gz

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.
Files changed (364) hide show
  1. webull_openapi_python_sdk-2.0.0/PKG-INFO +33 -0
  2. webull_openapi_python_sdk-2.0.0/samples/__init__.py +1 -0
  3. webull_openapi_python_sdk-2.0.0/samples/data/data_client_event.py +52 -0
  4. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/data/data_streaming_client.py +1 -3
  5. webull_openapi_python_sdk-2.0.0/samples/data/data_streaming_client_event.py +66 -0
  6. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/trade/trade_client_v3.py +64 -1
  7. webull_openapi_python_sdk-2.0.0/samples/trade/trade_client_v3_event.py +102 -0
  8. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/trade/trade_event_client.py +4 -1
  9. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/setup.py +24 -7
  10. webull_openapi_python_sdk-2.0.0/webull/__init__.py +1 -0
  11. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/__init__.py +1 -1
  12. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/composer/default_signature_composer.py +2 -2
  13. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/signers/signer.py +1 -1
  14. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/client.py +4 -4
  15. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/compat.py +1 -1
  16. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/response.py +2 -2
  17. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/request.py +3 -5
  18. webull_openapi_python_sdk-2.0.0/webull/data/__init__.py +3 -0
  19. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/category.py +1 -0
  20. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/data_client.py +2 -0
  21. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/data_streaming_client.py +6 -1
  22. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/internal/quotes_payload_decoder.py +1 -1
  23. webull_openapi_python_sdk-2.0.0/webull/data/quotes/event_market_data.py +50 -0
  24. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/instrument.py +43 -0
  25. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/ask_bid_result.py +9 -3
  26. webull_openapi_python_sdk-2.0.0/webull/data/quotes/subscribe/event_depth_decoder.py +27 -0
  27. webull_openapi_python_sdk-2.0.0/webull/data/quotes/subscribe/event_depth_result.py +46 -0
  28. webull_openapi_python_sdk-2.0.0/webull/data/quotes/subscribe/event_snapshot_decoder.py +29 -0
  29. webull_openapi_python_sdk-2.0.0/webull/data/quotes/subscribe/event_snapshot_result.py +85 -0
  30. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/message_pb2.py +25 -19
  31. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/payload_type.py +3 -1
  32. webull_openapi_python_sdk-2.0.0/webull/data/request/get_event_depth_request.py +32 -0
  33. webull_openapi_python_sdk-2.0.0/webull/data/request/get_event_instrument_request.py +33 -0
  34. webull_openapi_python_sdk-2.0.0/webull/data/request/get_event_series_request.py +30 -0
  35. webull_openapi_python_sdk-2.0.0/webull/data/request/get_event_snapshot_request.py +31 -0
  36. webull_openapi_python_sdk-2.0.0/webull/trade/__init__.py +1 -0
  37. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/events/types.py +1 -1
  38. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade_events_client.py +1 -1
  39. webull_openapi_python_sdk-2.0.0/webull_openapi_python_sdk.egg-info/PKG-INFO +33 -0
  40. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull_openapi_python_sdk.egg-info/SOURCES.txt +12 -105
  41. webull_openapi_python_sdk-2.0.0/webull_openapi_python_sdk.egg-info/requires.txt +16 -0
  42. webull_openapi_python_sdk-1.0.9/PKG-INFO +0 -28
  43. webull_openapi_python_sdk-1.0.9/samples/__init__.py +0 -1
  44. webull_openapi_python_sdk-1.0.9/webull/__init__.py +0 -1
  45. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/__init__.py +0 -94
  46. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/__version__.py +0 -28
  47. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/_internal_utils.py +0 -56
  48. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/adapters.py +0 -539
  49. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/api.py +0 -166
  50. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/auth.py +0 -307
  51. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/certs.py +0 -34
  52. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/compat.py +0 -85
  53. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/cookies.py +0 -555
  54. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/exceptions.py +0 -136
  55. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/help.py +0 -134
  56. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/hooks.py +0 -48
  57. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/models.py +0 -960
  58. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/__init__.py +0 -17
  59. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/certifi/__init__.py +0 -17
  60. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/certifi/__main__.py +0 -16
  61. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/certifi/cacert.pem +0 -4433
  62. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/certifi/core.py +0 -51
  63. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/__init__.py +0 -53
  64. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/big5freq.py +0 -400
  65. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/big5prober.py +0 -61
  66. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/chardistribution.py +0 -247
  67. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +0 -120
  68. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/charsetprober.py +0 -159
  69. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/cli/__init__.py +0 -1
  70. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/cli/chardetect.py +0 -99
  71. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/codingstatemachine.py +0 -102
  72. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/compat.py +0 -48
  73. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/cp949prober.py +0 -63
  74. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/enums.py +0 -90
  75. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/escprober.py +0 -115
  76. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/escsm.py +0 -260
  77. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/eucjpprober.py +0 -106
  78. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/euckrfreq.py +0 -209
  79. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/euckrprober.py +0 -61
  80. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/euctwfreq.py +0 -401
  81. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/euctwprober.py +0 -60
  82. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/gb2312freq.py +0 -297
  83. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/gb2312prober.py +0 -60
  84. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/hebrewprober.py +0 -306
  85. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/jisfreq.py +0 -339
  86. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/jpcntx.py +0 -247
  87. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +0 -242
  88. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +0 -347
  89. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langgreekmodel.py +0 -239
  90. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +0 -214
  91. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +0 -239
  92. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langthaimodel.py +0 -213
  93. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/langturkishmodel.py +0 -207
  94. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/latin1prober.py +0 -159
  95. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +0 -105
  96. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +0 -68
  97. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/mbcssm.py +0 -586
  98. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +0 -146
  99. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +0 -87
  100. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/sjisprober.py +0 -106
  101. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/universaldetector.py +0 -300
  102. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/utf8prober.py +0 -96
  103. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/chardet/version.py +0 -23
  104. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/__init__.py +0 -114
  105. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/_collections.py +0 -346
  106. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/connection.py +0 -405
  107. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/connectionpool.py +0 -910
  108. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +0 -44
  109. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +0 -607
  110. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +0 -360
  111. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +0 -303
  112. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +0 -125
  113. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +0 -484
  114. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +0 -818
  115. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/socks.py +0 -206
  116. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/exceptions.py +0 -260
  117. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/fields.py +0 -192
  118. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/filepost.py +0 -112
  119. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/__init__.py +0 -19
  120. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +0 -67
  121. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +0 -273
  122. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/six.py +0 -882
  123. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/socks.py +0 -887
  124. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +0 -19
  125. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +0 -170
  126. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/poolmanager.py +0 -467
  127. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/request.py +0 -164
  128. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/response.py +0 -721
  129. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/__init__.py +0 -68
  130. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/connection.py +0 -148
  131. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/queue.py +0 -35
  132. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/request.py +0 -132
  133. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/response.py +0 -101
  134. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/retry.py +0 -426
  135. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/selectors.py +0 -601
  136. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/ssl_.py +0 -396
  137. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/timeout.py +0 -256
  138. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/url.py +0 -252
  139. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/util/wait.py +0 -164
  140. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages.py +0 -28
  141. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/sessions.py +0 -750
  142. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/status_codes.py +0 -105
  143. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/structures.py +0 -119
  144. webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/utils.py +0 -916
  145. webull_openapi_python_sdk-1.0.9/webull/core/vendored/six.py +0 -905
  146. webull_openapi_python_sdk-1.0.9/webull/data/__init__.py +0 -3
  147. webull_openapi_python_sdk-1.0.9/webull/trade/__init__.py +0 -1
  148. webull_openapi_python_sdk-1.0.9/webull/trade/request/v3/__init__.py +0 -0
  149. webull_openapi_python_sdk-1.0.9/webull/trade/trade/__init__.py +0 -0
  150. webull_openapi_python_sdk-1.0.9/webull/trade/trade/v2/__init__.py +0 -0
  151. webull_openapi_python_sdk-1.0.9/webull/trade/trade/v3/__init__.py +0 -0
  152. webull_openapi_python_sdk-1.0.9/webull_openapi_python_sdk.egg-info/PKG-INFO +0 -28
  153. webull_openapi_python_sdk-1.0.9/webull_openapi_python_sdk.egg-info/requires.txt +0 -7
  154. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/ChangeLog.txt +0 -0
  155. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/LICENSE +0 -0
  156. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/MANIFEST.in +0 -0
  157. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/NOTICE +0 -0
  158. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/README.rst +0 -0
  159. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/account/__init__.py +0 -0
  160. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/account/account_client.py +0 -0
  161. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/assets/__init__.py +0 -0
  162. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/assets/assets_client.py +0 -0
  163. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/data/__init__.py +0 -0
  164. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/data/data_client.py +0 -0
  165. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/data/data_streaming_client_async.py +0 -0
  166. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/order/__init__.py +0 -0
  167. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/order/order_option_client.py +0 -0
  168. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/order/order_stock_client.py +0 -0
  169. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/trade/__init__.py +0 -0
  170. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/trade/trade_client.py +0 -0
  171. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/samples/trade/trade_client_v2.py +0 -0
  172. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/setup.cfg +0 -0
  173. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/__init__.py +0 -0
  174. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/algorithm/__init__.py +0 -0
  175. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
  176. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
  177. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/composer/__init__.py +0 -0
  178. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/credentials.py +0 -0
  179. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/signers/__init__.py +0 -0
  180. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/signers/app_key_signer.py +0 -0
  181. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/auth/signers/signer_factory.py +0 -0
  182. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/cache/__init__.py +0 -0
  183. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/common/__init__.py +0 -0
  184. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/common/api_type.py +0 -0
  185. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/common/easy_enum.py +0 -0
  186. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/common/region.py +0 -0
  187. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/context/__init__.py +0 -0
  188. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/context/request_context_holder.py +0 -0
  189. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/data/endpoints.json +0 -0
  190. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/data/retry_config.json +0 -0
  191. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/endpoint/__init__.py +0 -0
  192. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
  193. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
  194. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
  195. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
  196. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
  197. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/exception/__init__.py +0 -0
  198. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/exception/error_code.py +0 -0
  199. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/exception/error_msg.py +0 -0
  200. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/exception/exceptions.py +0 -0
  201. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/headers.py +0 -0
  202. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/__init__.py +0 -0
  203. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/__init__.py +0 -0
  204. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/client_initializer.py +0 -0
  205. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/config/__init__.py +0 -0
  206. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/config/bean/__init__.py +0 -0
  207. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/config/bean/query_config_request.py +0 -0
  208. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/config/config_operation.py +0 -0
  209. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/__init__.py +0 -0
  210. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/bean/__init__.py +0 -0
  211. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/bean/access_token.py +0 -0
  212. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/bean/check_token_request.py +0 -0
  213. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/bean/create_token_request.py +0 -0
  214. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/bean/refresh_token_request.py +0 -0
  215. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/token_manager.py +0 -0
  216. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/token_operation.py +0 -0
  217. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/initializer/token/token_storage.py +0 -0
  218. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/method_type.py +0 -0
  219. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/protocol_type.py +0 -0
  220. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/http/request.py +0 -0
  221. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/retry/__init__.py +0 -0
  222. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/retry/backoff_strategy.py +0 -0
  223. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/retry/retry_condition.py +0 -0
  224. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/retry/retry_policy.py +0 -0
  225. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/retry/retry_policy_context.py +0 -0
  226. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/utils/__init__.py +0 -0
  227. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/utils/common.py +0 -0
  228. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/utils/data.py +0 -0
  229. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/utils/desensitize.py +0 -0
  230. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/core/utils/validation.py +0 -0
  231. {webull_openapi_python_sdk-1.0.9/webull/core/vendored → webull_openapi_python_sdk-2.0.0/webull/data/common}/__init__.py +0 -0
  232. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/connect_ack.py +0 -0
  233. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/contract_type.py +0 -0
  234. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/direction.py +0 -0
  235. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/exchange_code.py +0 -0
  236. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/exercise_style.py +0 -0
  237. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/expiration_cycle.py +0 -0
  238. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/instrument_status.py +0 -0
  239. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/option_type.py +0 -0
  240. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/subscribe_type.py +0 -0
  241. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/common/timespan.py +0 -0
  242. {webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib → webull_openapi_python_sdk-2.0.0/webull/data/internal}/__init__.py +0 -0
  243. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/internal/default_retry_policy.py +0 -0
  244. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/internal/exceptions.py +0 -0
  245. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/internal/quotes_client.py +0 -0
  246. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/internal/quotes_decoder.py +0 -0
  247. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/internal/quotes_topic.py +0 -0
  248. {webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport → webull_openapi_python_sdk-2.0.0/webull/data/quotes}/__init__.py +0 -0
  249. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/crypto_market_data.py +0 -0
  250. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/futures_market_data.py +0 -0
  251. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/market_data.py +0 -0
  252. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/market_streaming_data.py +0 -0
  253. {webull_openapi_python_sdk-1.0.9/webull/core/vendored/requests/packages/urllib3/packages/backports → webull_openapi_python_sdk-2.0.0/webull/data/quotes/subscribe}/__init__.py +0 -0
  254. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/basic_result.py +0 -0
  255. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/broker_result.py +0 -0
  256. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/order_result.py +0 -0
  257. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
  258. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/quote_result.py +0 -0
  259. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
  260. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/snapshot_result.py +0 -0
  261. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
  262. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/quotes/subscribe/tick_result.py +0 -0
  263. {webull_openapi_python_sdk-1.0.9/webull/data/common → webull_openapi_python_sdk-2.0.0/webull/data/request}/__init__.py +0 -0
  264. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_batch_historical_bars_request.py +0 -0
  265. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_corp_action_request.py +0 -0
  266. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_crypto_historical_bars_request.py +0 -0
  267. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_crypto_instruments_request.py +0 -0
  268. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_crypto_snapshot_request.py +0 -0
  269. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_eod_bars_request.py +0 -0
  270. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_footprint_request.py +0 -0
  271. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_depth_request.py +0 -0
  272. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_footprint_request.py +0 -0
  273. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_historical_bars_request.py +0 -0
  274. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_instruments_by_code_request.py +0 -0
  275. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_instruments_request.py +0 -0
  276. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_products_request.py +0 -0
  277. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_snapshot_request.py +0 -0
  278. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_futures_tick_request.py +0 -0
  279. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_historical_bars_request.py +0 -0
  280. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_instruments_request.py +0 -0
  281. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_quotes_request.py +0 -0
  282. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_snapshot_request.py +0 -0
  283. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/get_tick_request.py +0 -0
  284. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/subscribe_request.py +0 -0
  285. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/data/request/unsubscribe_request.py +0 -0
  286. {webull_openapi_python_sdk-1.0.9/webull/data/internal → webull_openapi_python_sdk-2.0.0/webull/trade/common}/__init__.py +0 -0
  287. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/account_type.py +0 -0
  288. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/category.py +0 -0
  289. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/combo_ticker_type.py +0 -0
  290. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/combo_type.py +0 -0
  291. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/currency.py +0 -0
  292. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/forbid_reason.py +0 -0
  293. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/instrument_type.py +0 -0
  294. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/markets.py +0 -0
  295. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/order_entrust_type.py +0 -0
  296. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/order_side.py +0 -0
  297. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/order_status.py +0 -0
  298. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/order_tif.py +0 -0
  299. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/order_type.py +0 -0
  300. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/trade_policy.py +0 -0
  301. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/trading_date_type.py +0 -0
  302. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/common/trailing_type.py +0 -0
  303. {webull_openapi_python_sdk-1.0.9/webull/data/quotes → webull_openapi_python_sdk-2.0.0/webull/trade/events}/__init__.py +0 -0
  304. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/events/default_retry_policy.py +0 -0
  305. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/events/events_pb2.py +0 -0
  306. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/events/events_pb2_grpc.py +0 -0
  307. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/events/signature_composer.py +0 -0
  308. {webull_openapi_python_sdk-1.0.9/webull/data/quotes/subscribe → webull_openapi_python_sdk-2.0.0/webull/trade/request}/__init__.py +0 -0
  309. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/cancel_order_request.py +0 -0
  310. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_account_balance_request.py +0 -0
  311. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_account_positions_request.py +0 -0
  312. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_account_profile_request.py +0 -0
  313. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_app_subscriptions.py +0 -0
  314. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_open_orders_request.py +0 -0
  315. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_order_detail_request.py +0 -0
  316. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_today_orders_request.py +0 -0
  317. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_trade_calendar_request.py +0 -0
  318. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_trade_instrument_detail_request.py +0 -0
  319. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_trade_security_detail_request.py +0 -0
  320. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/get_tradeable_instruments_request.py +0 -0
  321. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/palce_order_request.py +0 -0
  322. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/place_order_request.py +0 -0
  323. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/place_order_request_v2.py +0 -0
  324. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/replace_order_request.py +0 -0
  325. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/replace_order_request_v2.py +0 -0
  326. {webull_openapi_python_sdk-1.0.9/webull/data/request → webull_openapi_python_sdk-2.0.0/webull/trade/request/v2}/__init__.py +0 -0
  327. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/cancel_option_request.py +0 -0
  328. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/cancel_order_request.py +0 -0
  329. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_account_balance_request.py +0 -0
  330. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_account_list.py +0 -0
  331. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_account_list_request.py +0 -0
  332. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_account_positions_request.py +0 -0
  333. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_order_detail_request.py +0 -0
  334. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_order_history_request.py +0 -0
  335. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/get_order_open_request.py +0 -0
  336. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/palce_order_request.py +0 -0
  337. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/place_option_request.py +0 -0
  338. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/place_order_request.py +0 -0
  339. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/preview_option_request.py +0 -0
  340. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/preview_order_request.py +0 -0
  341. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/replace_option_request.py +0 -0
  342. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v2/replace_order_request.py +0 -0
  343. {webull_openapi_python_sdk-1.0.9/webull/trade/common → webull_openapi_python_sdk-2.0.0/webull/trade/request/v3}/__init__.py +0 -0
  344. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/batch_place_order_request.py +0 -0
  345. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/cancel_order_request.py +0 -0
  346. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/get_order_detail_request.py +0 -0
  347. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/get_order_history_request.py +0 -0
  348. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/get_order_open_request.py +0 -0
  349. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/place_order_request.py +0 -0
  350. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/preview_order_request.py +0 -0
  351. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/request/v3/replace_order_request.py +0 -0
  352. {webull_openapi_python_sdk-1.0.9/webull/trade/events → webull_openapi_python_sdk-2.0.0/webull/trade/trade}/__init__.py +0 -0
  353. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/account_info.py +0 -0
  354. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/order_operation.py +0 -0
  355. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/trade_calendar.py +0 -0
  356. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/trade_instrument.py +0 -0
  357. {webull_openapi_python_sdk-1.0.9/webull/trade/request → webull_openapi_python_sdk-2.0.0/webull/trade/trade/v2}/__init__.py +0 -0
  358. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/v2/account_info_v2.py +0 -0
  359. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/v2/order_operation_v2.py +0 -0
  360. {webull_openapi_python_sdk-1.0.9/webull/trade/request/v2 → webull_openapi_python_sdk-2.0.0/webull/trade/trade/v3}/__init__.py +0 -0
  361. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade/v3/order_opration_v3.py +0 -0
  362. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull/trade/trade_client.py +0 -0
  363. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
  364. {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-2.0.0}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
@@ -0,0 +1,33 @@
1
+ Metadata-Version: 2.4
2
+ Name: webull-openapi-python-sdk
3
+ Version: 2.0.0
4
+ Summary: Webull Python SDK.
5
+ Home-page:
6
+ Author: Webull
7
+ Author-email:
8
+ License: Apache License 2.0
9
+ Platform: any
10
+ Requires-Python: >=3.8,<3.14
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ License-File: NOTICE
14
+ Requires-Dist: jmespath<1.0.0,>=0.9.3
15
+ Requires-Dist: cachetools<6,>=5.2.0
16
+ Requires-Dist: paho-mqtt<2,>=1.6.1
17
+ Requires-Dist: urllib3>=2.0
18
+ Requires-Dist: requests>=2.31.0
19
+ Requires-Dist: six>=1.16.0
20
+ Requires-Dist: cryptography<42,>=3.4; python_version < "3.12"
21
+ Requires-Dist: cryptography<43,>=41.0; python_version >= "3.12"
22
+ Requires-Dist: protobuf<5,>=4.21.12; python_version < "3.12"
23
+ Requires-Dist: protobuf<6,>=4.25.0; python_version >= "3.12"
24
+ Requires-Dist: grpcio<1.60,>=1.51.1; python_version < "3.12"
25
+ Requires-Dist: grpcio<1.70,>=1.60.0; python_version >= "3.12"
26
+ Dynamic: author
27
+ Dynamic: description-content-type
28
+ Dynamic: license
29
+ Dynamic: license-file
30
+ Dynamic: platform
31
+ Dynamic: requires-dist
32
+ Dynamic: requires-python
33
+ Dynamic: summary
@@ -0,0 +1 @@
1
+ __version__ = '2.0.0'
@@ -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
+
15
+ # coding=utf-8
16
+
17
+ from webull.data.common.category import Category
18
+ from webull.core.client import ApiClient
19
+ from webull.data.data_client import DataClient
20
+
21
+ optional_api_endpoint = "<api_endpoint>"
22
+ your_app_key = "<your_app_key>"
23
+ your_app_secret = "<your_app_secret>"
24
+ region_id = "<region_id>"
25
+ # The token_dir parameter can be used to specify the directory for storing the 2FA token. Both absolute and relative paths are supported and this option has the highest priority.
26
+ # Alternatively, the storage directory can be configured via an environment variable with the key WEBULL_OPENAPI_TOKEN_DIR, which also supports both absolute and relative paths.
27
+ # If neither is specified, the default configuration will be used, and the token will be stored at conf/token.txt under the current working directory.
28
+ # token_dir = "<your_token_dir>"
29
+ # api_client.set_token_dir(token_dir)
30
+
31
+ api_client = ApiClient(your_app_key, your_app_secret, region_id)
32
+ api_client.add_endpoint(region_id, optional_api_endpoint)
33
+
34
+
35
+ if __name__ == '__main__':
36
+ data_client = DataClient(api_client)
37
+
38
+ res = data_client.instrument.get_event_series("ECONOMICS")
39
+ if res.status_code == 200:
40
+ print('get_event_series:', res.json())
41
+
42
+ res = data_client.instrument.get_event_instrument("KXGDP")
43
+ if res.status_code == 200:
44
+ print('get_event_instrument:', res.json())
45
+
46
+ res = data_client.event_market_data.get_event_snapshot("KXRATECUTCOUNT-25DEC31-T10", Category.US_EVENT.name)
47
+ if res.status_code == 200:
48
+ print('get_event_snapshot:', res.json())
49
+
50
+ res = data_client.event_market_data.get_event_depth("KXRATECUTCOUNT-25DEC31-T10", Category.US_EVENT.name)
51
+ if res.status_code == 200:
52
+ print('get_event_depth:', res.json())
@@ -86,6 +86,4 @@ if __name__ == '__main__':
86
86
  # data_streaming_client.register_payload_decoder(PAYLOAD_TYPE_TICK, TickDecoder())
87
87
 
88
88
  # the sync mode, blocking in current thread
89
- data_streaming_client.connect_and_loop_forever()
90
-
91
-
89
+ data_streaming_client.connect_and_loop_forever()
@@ -0,0 +1,66 @@
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
+ import logging
18
+ import uuid
19
+ from logging.handlers import TimedRotatingFileHandler
20
+
21
+ from webull.data.common.category import Category
22
+ from webull.data.common.subscribe_type import SubscribeType
23
+ from webull.data.data_streaming_client import DataStreamingClient
24
+
25
+ your_app_key = "</your_app_key>"
26
+ your_app_secret = "</your_app_secret>"
27
+ optional_api_endpoint = "</optional_quotes_endpoint>"
28
+ optional_quotes_endpoint = "</optional_quotes_endpoint>"
29
+ region_id = '<region_id>'
30
+ # The token_dir parameter can be used to specify the directory for storing the 2FA token. Both absolute and relative paths are supported and this option has the highest priority.
31
+ # Alternatively, the storage directory can be configured via an environment variable with the key WEBULL_OPENAPI_TOKEN_DIR, which also supports both absolute and relative paths.
32
+ # If neither is specified, the default configuration will be used, and the token will be stored at conf/token.txt under the current working directory.
33
+ # token_dir = "<your_token_dir>"
34
+ # data_streaming_client.set_token_dir(token_dir)
35
+
36
+ session_id = uuid.uuid4().hex
37
+ data_streaming_client = DataStreamingClient(your_app_key, your_app_secret, region_id, session_id,
38
+ http_host=optional_api_endpoint,
39
+ mqtt_host=optional_quotes_endpoint)
40
+
41
+ if __name__ == '__main__':
42
+ def my_connect_success_func(client, api_client, quotes_session_id):
43
+ print("connect success with session_id:%s" % quotes_session_id)
44
+ # subscribe
45
+ symbols = ['KXNHLGAME-26JAN21ANACOL-ANA', 'KXNBAGAME-26JAN20LACCHI-LAC']
46
+ sub_types = [SubscribeType.QUOTE.name, SubscribeType.SNAPSHOT.name]
47
+ client.subscribe(symbols, Category.US_EVENT.name, sub_types)
48
+
49
+ def my_quotes_message_func(client, topic, quotes):
50
+ print("receive message: topic:%s, quotes:%s" % (topic, quotes))
51
+
52
+ def my_subscribe_success_func(client, api_client, quotes_session_id):
53
+ print("subscribe success with session_id:%s" % quotes_session_id)
54
+
55
+
56
+ # set connect success callback func
57
+ data_streaming_client.on_connect_success = my_connect_success_func
58
+ # set quotes receiving callback func
59
+ data_streaming_client.on_quotes_message = my_quotes_message_func
60
+ # set subscribe success callback func
61
+ data_streaming_client.on_subscribe_success = my_subscribe_success_func
62
+
63
+ # the sync mode, blocking in current thread
64
+ data_streaming_client.connect_and_loop_forever()
65
+
66
+
@@ -454,4 +454,67 @@ if __name__ == '__main__':
454
454
  # get futures order history
455
455
  res = trade_client.order_v3.get_order_history(account_id, page_size=10)
456
456
  if res.status_code == 200:
457
- print('get order history res:', res.json())
457
+ print('get order history res:', res.json())
458
+
459
+ # ============================================================
460
+ # Algo Order Example
461
+ # ============================================================
462
+ alog_client_order_id = uuid.uuid4().hex
463
+ print('client order id:', alog_client_order_id)
464
+ new_normal_equity_orders = [
465
+ {
466
+ "combo_type": "NORMAL",
467
+ "client_order_id": alog_client_order_id,
468
+ "symbol": "AAPL",
469
+ "instrument_type": "EQUITY",
470
+ "market": "US",
471
+ "order_type": "LIMIT",
472
+ "limit_price": "188",
473
+ "quantity": "1",
474
+ "support_trading_session": "N",
475
+ "side": "BUY",
476
+ "time_in_force": "DAY",
477
+ "entrust_type": "QTY",
478
+ "algo_start_time": "16:00:00",
479
+ "algo_end_time": "23:00:00",
480
+ "target_vol_percent": "10",
481
+ "algo_type": "POV"
482
+ }
483
+ ]
484
+
485
+ res = trade_client.order_v3.preview_order(account_id, new_normal_equity_orders)
486
+ if res.status_code == 200:
487
+ print('preview algo order res:', res.json())
488
+
489
+ res = trade_client.order_v3.place_order(account_id, new_normal_equity_orders)
490
+ if res.status_code == 200:
491
+ print('place algo order res:', res.json())
492
+ sleep(3)
493
+
494
+ replace_normal_equity_orders = [
495
+ {
496
+ "client_order_id": alog_client_order_id,
497
+ "quantity": "100",
498
+ "limit_price": "200"
499
+ }
500
+ ]
501
+ res = trade_client.order_v3.replace_order(account_id, replace_normal_equity_orders)
502
+ if res.status_code == 200:
503
+ print('replace algo order res:', res.json())
504
+ sleep(3)
505
+
506
+ res = trade_client.order_v3.cancel_order(account_id, alog_client_order_id)
507
+ if res.status_code == 200:
508
+ print('cancel algo order res:', res.json())
509
+
510
+ res = trade_client.order_v3.get_order_open(account_id=account_id)
511
+ if res.status_code == 200:
512
+ print("order_open_res=" + json.dumps(res.json(), indent=4))
513
+
514
+ res = trade_client.order_v3.get_order_history(account_id)
515
+ if res.status_code == 200:
516
+ print('get order history res:', res.json())
517
+
518
+ res = trade_client.order_v3.get_order_detail(account_id, alog_client_order_id)
519
+ if res.status_code == 200:
520
+ print('get order detail res:', res.json())
@@ -0,0 +1,102 @@
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
+ import json
16
+ import uuid
17
+ from time import sleep
18
+
19
+ from webull.core.client import ApiClient
20
+ from webull.trade.trade_client import TradeClient
21
+
22
+ optional_api_endpoint = "<api_endpoint>"
23
+ your_app_key = "<your_app_key>"
24
+ your_app_secret = "<your_app_secret>"
25
+ region_id = "<region_id>"
26
+ account_id = "<your_account_id>"
27
+ # The token_dir parameter can be used to specify the directory for storing the 2FA token. Both absolute and relative paths are supported and this option has the highest priority.
28
+ # Alternatively, the storage directory can be configured via an environment variable with the key WEBULL_OPENAPI_TOKEN_DIR, which also supports both absolute and relative paths.
29
+ # If neither is specified, the default configuration will be used, and the token will be stored at conf/token.txt under the current working directory.
30
+ # token_dir = "<your_token_dir>"
31
+ # api_client.set_token_dir(token_dir)
32
+
33
+ api_client = ApiClient(your_app_key, your_app_secret, region_id)
34
+ api_client.add_endpoint(region_id, optional_api_endpoint)
35
+
36
+
37
+ if __name__ == '__main__':
38
+ trade_client = TradeClient(api_client)
39
+
40
+ res = trade_client.account_v2.get_account_list()
41
+ if res.status_code == 200:
42
+ print('get account list:', res.json())
43
+
44
+ res = trade_client.account_v2.get_account_balance(account_id)
45
+ if res.status_code == 200:
46
+ print('get account balance res:', res.json())
47
+
48
+ res = trade_client.account_v2.get_account_position(account_id)
49
+ if res.status_code == 200:
50
+ print('get account position res:', res.json())
51
+
52
+ # normal event order
53
+ normal_event_client_order_id = uuid.uuid4().hex
54
+ print('event client order id:', normal_event_client_order_id)
55
+ new_normal_event_orders = [
56
+ {
57
+ "combo_type": "NORMAL",
58
+ "client_order_id": normal_event_client_order_id,
59
+ "instrument_type": "EVENT",
60
+ "market": "US",
61
+ "symbol": "KXRATECUTCOUNT-25DEC31-T9",
62
+ "order_type": "LIMIT",
63
+ "entrust_type": "QTY",
64
+ "time_in_force": "DAY",
65
+ "side": "BUY",
66
+ "quantity": "1",
67
+ "limit_price": "0.1",
68
+ "event_outcome": "yes"
69
+ }
70
+ ]
71
+
72
+ res = trade_client.order_v3.preview_order(account_id, new_normal_event_orders)
73
+ if res.status_code == 200:
74
+ print('preview normal event order res:', res.json())
75
+
76
+ res = trade_client.order_v3.place_order(account_id, new_normal_event_orders)
77
+ if res.status_code == 200:
78
+ print('place normal event order res:', res.json())
79
+ sleep(3)
80
+
81
+ # normal event order replace
82
+ replace_normal_event_orders = [
83
+ {
84
+ "client_order_id": normal_event_client_order_id,
85
+ "quantity": "10",
86
+ "limit_price": "0.1"
87
+ }
88
+ ]
89
+ res = trade_client.order_v3.replace_order(account_id, replace_normal_event_orders)
90
+ if res.status_code == 200:
91
+ print('replace normal event order res:', res.json())
92
+ sleep(3)
93
+
94
+ # normal event order cancel
95
+ res = trade_client.order_v3.cancel_order(account_id, normal_event_client_order_id)
96
+ if res.status_code == 200:
97
+ print('cancel normal event order res:', res.json())
98
+
99
+ # get event order detail
100
+ res = trade_client.order_v3.get_order_detail(account_id, normal_event_client_order_id)
101
+ if res.status_code == 200:
102
+ print('get event order detail res:', res.json())
@@ -14,7 +14,8 @@
14
14
 
15
15
  import logging
16
16
 
17
- from webull.trade.events.types import ORDER_STATUS_CHANGED, EVENT_TYPE_ORDER
17
+ from webull.trade.events.types import ORDER_STATUS_CHANGED, EVENT_TYPE_ORDER, EVENT_TYPE_POSITION, \
18
+ POSITION_STATUS_CHANGED
18
19
  from webull.trade.trade_events_client import TradeEventsClient
19
20
 
20
21
  your_app_key = "<your_app_key>"
@@ -32,6 +33,8 @@ def my_on_events_message(event_type, subscribe_type, payload, raw_message):
32
33
  if EVENT_TYPE_ORDER == event_type and ORDER_STATUS_CHANGED == subscribe_type:
33
34
  print('----request_id:%s----' % payload['request_id'])
34
35
  print(payload)
36
+ if EVENT_TYPE_POSITION == event_type and POSITION_STATUS_CHANGED == subscribe_type:
37
+ print('event payload:%s' % payload)
35
38
 
36
39
  if __name__ == '__main__':
37
40
 
@@ -16,16 +16,33 @@ with open("README.rst") as fp:
16
16
 
17
17
  requires = [
18
18
  "jmespath>=0.9.3,<1.0.0",
19
- "cryptography>=2.6.0",
20
- "cachetools==5.2.0",
21
- "paho-mqtt==1.6.1",
22
- "protobuf==4.21.12",
23
- "grpcio==1.51.1",
24
- "grpcio-tools==1.51.1"
19
+ "cachetools>=5.2.0,<6",
20
+ "paho-mqtt>=1.6.1,<2",
21
+ "urllib3>=2.0",
22
+ "requests>=2.31.0",
23
+ "six>=1.16.0",
24
+
25
+ # cryptography
26
+ "cryptography>=3.4,<42; python_version<'3.12'",
27
+ "cryptography>=41.0,<43; python_version>='3.12'",
28
+
29
+ # protobuf
30
+ "protobuf>=4.21.12,<5; python_version<'3.12'",
31
+ "protobuf>=4.25.0,<6; python_version>='3.12'",
32
+
33
+ # grpc
34
+ "grpcio>=1.51.1,<1.60; python_version<'3.12'",
35
+ "grpcio>=1.60.0,<1.70; python_version>='3.12'"
25
36
  ]
26
37
 
38
+ extras_require = {
39
+ "dev": [
40
+ "grpcio-tools>=1.60,<1.70",
41
+ ]
42
+ }
43
+
27
44
  setup_args = {
28
- 'python_requires':'>=3.8,<3.12',
45
+ 'python_requires':'>=3.8,<3.14',
29
46
  'version': VERSION,
30
47
  'author': AUTHOR,
31
48
  'author_email': AUTHOR_EMAIL,
@@ -0,0 +1 @@
1
+ __version__ = '2.0.0'
@@ -1,4 +1,4 @@
1
- __version__ = '1.0.9'
1
+ __version__ = '2.0.0'
2
2
 
3
3
  import logging
4
4
 
@@ -42,8 +42,8 @@ from webull.core.exception import error_code
42
42
  from webull.core.exception.exceptions import ClientException
43
43
  from webull.core.utils import common
44
44
  import webull.core.headers as hd
45
- from webull.core.vendored.six import iteritems
46
- from webull.core.vendored.six.moves.urllib.parse import quote
45
+ from six import iteritems
46
+ from six.moves.urllib.parse import quote
47
47
  import logging
48
48
  logger = logging.getLogger(__name__)
49
49
 
@@ -40,7 +40,7 @@ which was part of Alibaba Group.
40
40
  """
41
41
 
42
42
  from abc import ABCMeta, abstractmethod
43
- from webull.core.vendored.six import with_metaclass
43
+ from six import with_metaclass
44
44
 
45
45
  class Signer(with_metaclass(ABCMeta, object)):
46
46
  @abstractmethod
@@ -61,9 +61,9 @@ from webull.core.request import BaseRequest
61
61
  from webull.core.retry.retry_condition import RetryCondition
62
62
  from webull.core.retry.retry_policy_context import RetryPolicyContext
63
63
  from webull.core.utils import common, validation
64
- from webull.core.vendored.requests import codes
65
- from webull.core.vendored.requests.structures import CaseInsensitiveDict
66
- from webull.core.vendored.requests.structures import OrderedDict
64
+ from requests import codes
65
+ from requests.structures import CaseInsensitiveDict
66
+ from requests.structures import OrderedDict
67
67
 
68
68
  DEFAULT_READ_TIMEOUT = 10
69
69
  DEFAULT_CONNECTION_TIMEOUT = 5
@@ -187,7 +187,7 @@ class ApiClient:
187
187
  default_agent['Python'] = platform.python_version()
188
188
  default_agent['Core'] = __import__('webull.core').__version__
189
189
  default_agent['python-requests'] = __import__(
190
- 'webull.core.vendored.requests.__version__', globals(), locals(),
190
+ 'requests.__version__', globals(), locals(),
191
191
  ['vendored', 'requests', '__version__'], 0).__version__
192
192
 
193
193
  return CaseInsensitiveDict(default_agent)
@@ -40,7 +40,7 @@ which was part of Alibaba Group.
40
40
  """
41
41
 
42
42
  import sys
43
- from webull.core.vendored import six
43
+ import six
44
44
 
45
45
  if six.PY2:
46
46
  from base64 import encodestring as b64_encode_bytes
@@ -41,10 +41,10 @@ which was part of Alibaba Group.
41
41
 
42
42
  import os
43
43
  import logging
44
- from webull.core.vendored.requests import Request, Session
44
+ from requests import Request, Session
45
45
  from webull.core.http.request import Request as HttpRequest
46
46
  from webull.core.http import protocol_type as PT
47
- from webull.core.vendored.requests import status_codes
47
+ from requests import status_codes
48
48
 
49
49
 
50
50
  logger = logging.getLogger(__name__)
@@ -41,13 +41,11 @@ which was part of Alibaba Group.
41
41
 
42
42
  import abc
43
43
  from webull.core.auth.algorithm import sha_hmac1
44
- from webull.core.vendored.six import iterkeys
45
- from webull.core.vendored.six import iteritems
46
- from webull.core.vendored.six import add_metaclass
44
+ from six import add_metaclass
47
45
  from webull.core.http import protocol_type
48
46
  from webull.core.exception import exceptions, error_code
49
- from webull.core.vendored.requests.structures import CaseInsensitiveDict
50
- from webull.core.vendored.six.moves.urllib.parse import urlencode
47
+ from requests.structures import CaseInsensitiveDict
48
+ from six.moves.urllib.parse import urlencode
51
49
  from webull.core.auth.composer import default_signature_composer as sc
52
50
  import webull.core.headers as hd
53
51
 
@@ -0,0 +1,3 @@
1
+ # coding=utf-8
2
+
3
+ __version__ = '2.0.0'
@@ -25,3 +25,4 @@ class Category(EasyEnum):
25
25
  CN_STOCK = (7, "CN STOCK")
26
26
  US_CRYPTO = (8, "US CRYPTO")
27
27
  US_FUTURES = (12, "US FUTURES")
28
+ US_EVENT = (13, "US EVENT")
@@ -19,6 +19,7 @@ import sys
19
19
 
20
20
  from webull.core.http.initializer.client_initializer import ClientInitializer
21
21
  from webull.data.quotes.crypto_market_data import CryptoMarketData
22
+ from webull.data.quotes.event_market_data import EventMarketData
22
23
  from webull.data.quotes.futures_market_data import FuturesMarketData
23
24
  from webull.data.quotes.instrument import Instrument
24
25
  from webull.data.quotes.market_data import MarketData
@@ -32,6 +33,7 @@ class DataClient:
32
33
  self.market_data = MarketData(api_client)
33
34
  self.crypto_market_data = CryptoMarketData(api_client)
34
35
  self.futures_market_data = FuturesMarketData(api_client)
36
+ self.event_market_data = EventMarketData(api_client)
35
37
 
36
38
  def _init_logger(self, api_client):
37
39
  # No logger configured, using default console and local file logging.
@@ -16,7 +16,10 @@
16
16
 
17
17
  from webull.data.internal.quotes_client import QuotesClient, LOG_ERR
18
18
  from webull.data.quotes.market_streaming_data import MarketDataStreaming
19
- from webull.data.quotes.subscribe.payload_type import PAYLOAD_TYPE_QUOTE, PAYLOAD_TYPE_SHAPSHOT, PAYLOAD_TYPE_TICK
19
+ from webull.data.quotes.subscribe.event_depth_decoder import EventDepthDecoder
20
+ from webull.data.quotes.subscribe.event_snapshot_decoder import EventSnapshotDecoder
21
+ from webull.data.quotes.subscribe.payload_type import PAYLOAD_TYPE_QUOTE, PAYLOAD_TYPE_SHAPSHOT, PAYLOAD_TYPE_TICK, \
22
+ PAYLOAD_TYPE_EVENT_SHAPSHOT, PAYLOAD_TYPE_EVENT_DEPTH
20
23
  from webull.data.quotes.subscribe.quote_decoder import QuoteDecoder
21
24
  from webull.data.quotes.subscribe.snapshot_decoder import SnapshotDecoder
22
25
  from webull.data.quotes.subscribe.tick_decoder import TickDecoder
@@ -39,6 +42,8 @@ class DataStreamingClient(QuotesClient):
39
42
  self.register_payload_decoder(PAYLOAD_TYPE_QUOTE, QuoteDecoder())
40
43
  self.register_payload_decoder(PAYLOAD_TYPE_SHAPSHOT, SnapshotDecoder())
41
44
  self.register_payload_decoder(PAYLOAD_TYPE_TICK, TickDecoder())
45
+ self.register_payload_decoder(PAYLOAD_TYPE_EVENT_DEPTH, EventDepthDecoder())
46
+ self.register_payload_decoder(PAYLOAD_TYPE_EVENT_SHAPSHOT, EventSnapshotDecoder())
42
47
 
43
48
  @property
44
49
  def on_connect_success(self):
@@ -14,7 +14,7 @@
14
14
 
15
15
  # coding=utf-8
16
16
  import abc
17
- from webull.core.vendored.six import add_metaclass
17
+ from six import add_metaclass
18
18
 
19
19
 
20
20
  @add_metaclass(abc.ABCMeta)
@@ -0,0 +1,50 @@
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
+ from webull.data.common.category import Category
15
+ from webull.data.request.get_event_depth_request import GetEventDepthRequest
16
+ from webull.data.request.get_event_snapshot_request import GetEventSnapshotRequest
17
+
18
+ class EventMarketData:
19
+ def __init__(self, api_client):
20
+ self.client = api_client
21
+
22
+ def get_event_snapshot(self, symbols, category=Category.US_EVENT.name):
23
+ """
24
+ Get real-time market snapshot data for a event instrument. Price unit is based on usd_cent.
25
+
26
+ :param symbols: Symbol of the event market, supports JSON array format, multiple symbols separated by commas; maximum 100 symbols per query.
27
+ :param category: default is US_EVENT, currently only US_EVENT is supported.
28
+ """
29
+ snapshot_request = GetEventSnapshotRequest()
30
+ snapshot_request.set_symbols(symbols)
31
+ snapshot_request.set_category(category)
32
+ response = self.client.get_response(snapshot_request)
33
+ return response
34
+
35
+ def get_event_depth(self, symbol, category=Category.US_EVENT.name, depth=10):
36
+ """
37
+ Get the current order book for a specific event instrument.
38
+ The order book shows all active bid orders for both yes and no sides of a binary market.
39
+ It returns yes bids and no bids only (no asks are returned). Price unit is based on usd_cent.
40
+
41
+ :param symbol:Symbol of the event market.
42
+ :param category: default is US_EVENT, currently only US_EVENT is supported.
43
+ :param depth: Depth of buying and selling orders, default 10 levels, etc.
44
+ """
45
+ quote_request = GetEventDepthRequest()
46
+ quote_request.set_symbol(symbol)
47
+ quote_request.set_category(category)
48
+ quote_request.set_depth(depth)
49
+ response = self.client.get_response(quote_request)
50
+ return response
@@ -12,6 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  from webull.data.common.category import Category
15
+ from webull.data.request.get_event_instrument_request import GetEventInstrumentRequest
16
+ from webull.data.request.get_event_series_request import GetEventSeriesRequest
15
17
  from webull.data.request.get_instruments_request import GetInstrumentsRequest
16
18
  from webull.data.request.get_crypto_instruments_request import GetCryptoInstrumentsRequest
17
19
  from webull.data.request.get_futures_instruments_request import GetFuturesInstrumentsRequest
@@ -108,3 +110,44 @@ class Instrument:
108
110
  futures_instrument_request.set_contract_type(contract_type)
109
111
  response = self.client.get_response(futures_instrument_request)
110
112
  return response
113
+
114
+ def get_event_series(self, category, last_instrument_id=None, page_size=500):
115
+ """
116
+ Retrieve multiple series with specified filters.
117
+ A series represents a template for recurring events that follow the same format and rules (e.g., “Monthly Jobs Report” ).
118
+ This endpoint allows you to browse and discover available series templates by category.
119
+
120
+ :param category: The category which this series belongs to.Allowed values:
121
+ ECONOMICS, FINANCIALS, POLITICS, ENTERTAINMENT, SCIENCE_TECHNOLOGY,
122
+ CLIMATE_WEATHER, TRANSPORTATION, CRYPTO, SPORTS
123
+ :param last_instrument_id: Last series id for pagination.
124
+ :param page_size: Page size, default 500.
125
+ """
126
+
127
+ event_series_request = GetEventSeriesRequest()
128
+ event_series_request.set_category(category)
129
+ if last_instrument_id:
130
+ event_series_request.set_last_instrument_id(last_instrument_id)
131
+ event_series_request.set_page_size(page_size)
132
+ response = self.client.get_response(event_series_request)
133
+ return response
134
+
135
+ def get_event_instrument(self, series_symbol, expiration_date_after=None, last_instrument_id=None, page_size=500):
136
+ """
137
+ Retrieve profile information for event contract markets based on the series symbol.
138
+
139
+ :param series_symbol: Symbol that identifies this series.
140
+ :param expiration_date_after: Used to filter items whose expiration date is later than a specified date; the default selection is the current day (inclusive).
141
+ :param last_instrument_id: Last series id for pagination.
142
+ :param page_size: Page size, default 500.
143
+ """
144
+
145
+ event_instrument_request = GetEventInstrumentRequest()
146
+ event_instrument_request.set_series_symbol(series_symbol)
147
+ if expiration_date_after:
148
+ event_instrument_request.set_expiration_date_after(expiration_date_after)
149
+ if last_instrument_id:
150
+ event_instrument_request.set_last_instrument_id(last_instrument_id)
151
+ event_instrument_request.set_page_size(page_size)
152
+ response = self.client.get_response(event_instrument_request)
153
+ return response