webull-openapi-python-sdk 1.0.7__tar.gz → 1.0.9__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 (351) hide show
  1. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/PKG-INFO +1 -1
  2. webull_openapi_python_sdk-1.0.9/samples/__init__.py +1 -0
  3. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_client.py +8 -0
  4. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client_v3.py +32 -1
  5. webull_openapi_python_sdk-1.0.9/webull/__init__.py +1 -0
  6. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/__init__.py +1 -1
  7. webull_openapi_python_sdk-1.0.9/webull/data/__init__.py +3 -0
  8. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/timespan.py +2 -0
  9. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/futures_market_data.py +24 -2
  10. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/market_data.py +24 -0
  11. webull_openapi_python_sdk-1.0.9/webull/data/quotes/subscribe/message_pb2.py +37 -0
  12. webull_openapi_python_sdk-1.0.9/webull/data/quotes/subscribe/snapshot_result.py +133 -0
  13. webull_openapi_python_sdk-1.0.9/webull/data/request/get_footprint_request.py +45 -0
  14. webull_openapi_python_sdk-1.0.9/webull/data/request/get_futures_footprint_request.py +45 -0
  15. webull_openapi_python_sdk-1.0.9/webull/trade/__init__.py +1 -0
  16. webull_openapi_python_sdk-1.0.9/webull/trade/request/v3/batch_place_order_request.py +52 -0
  17. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v3/order_opration_v3.py +13 -0
  18. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/PKG-INFO +1 -1
  19. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/SOURCES.txt +3 -0
  20. webull_openapi_python_sdk-1.0.7/samples/__init__.py +0 -1
  21. webull_openapi_python_sdk-1.0.7/webull/__init__.py +0 -1
  22. webull_openapi_python_sdk-1.0.7/webull/data/__init__.py +0 -3
  23. webull_openapi_python_sdk-1.0.7/webull/data/quotes/subscribe/message_pb2.py +0 -37
  24. webull_openapi_python_sdk-1.0.7/webull/data/quotes/subscribe/snapshot_result.py +0 -69
  25. webull_openapi_python_sdk-1.0.7/webull/trade/__init__.py +0 -1
  26. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/ChangeLog.txt +0 -0
  27. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/LICENSE +0 -0
  28. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/MANIFEST.in +0 -0
  29. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/NOTICE +0 -0
  30. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/README.rst +0 -0
  31. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/account/__init__.py +0 -0
  32. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/account/account_client.py +0 -0
  33. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/assets/__init__.py +0 -0
  34. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/assets/assets_client.py +0 -0
  35. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/__init__.py +0 -0
  36. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_streaming_client.py +0 -0
  37. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_streaming_client_async.py +0 -0
  38. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/order/__init__.py +0 -0
  39. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/order/order_option_client.py +0 -0
  40. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/order/order_stock_client.py +0 -0
  41. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/__init__.py +0 -0
  42. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client.py +0 -0
  43. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client_v2.py +0 -0
  44. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_event_client.py +0 -0
  45. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/setup.cfg +0 -0
  46. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/setup.py +0 -0
  47. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/__init__.py +0 -0
  48. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/algorithm/__init__.py +0 -0
  49. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
  50. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
  51. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/composer/__init__.py +0 -0
  52. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/composer/default_signature_composer.py +0 -0
  53. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/credentials.py +0 -0
  54. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/__init__.py +0 -0
  55. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/app_key_signer.py +0 -0
  56. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/signer.py +0 -0
  57. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/signer_factory.py +0 -0
  58. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/cache/__init__.py +0 -0
  59. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/client.py +0 -0
  60. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/__init__.py +0 -0
  61. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/api_type.py +0 -0
  62. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/easy_enum.py +0 -0
  63. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/region.py +0 -0
  64. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/compat.py +0 -0
  65. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/context/__init__.py +0 -0
  66. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/context/request_context_holder.py +0 -0
  67. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/data/endpoints.json +0 -0
  68. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/data/retry_config.json +0 -0
  69. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/__init__.py +0 -0
  70. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
  71. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
  72. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
  73. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
  74. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
  75. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/__init__.py +0 -0
  76. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/error_code.py +0 -0
  77. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/error_msg.py +0 -0
  78. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/exceptions.py +0 -0
  79. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/headers.py +0 -0
  80. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/__init__.py +0 -0
  81. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/__init__.py +0 -0
  82. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/client_initializer.py +0 -0
  83. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/__init__.py +0 -0
  84. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/bean/__init__.py +0 -0
  85. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/bean/query_config_request.py +0 -0
  86. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/config_operation.py +0 -0
  87. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/__init__.py +0 -0
  88. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/__init__.py +0 -0
  89. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/access_token.py +0 -0
  90. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/check_token_request.py +0 -0
  91. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/create_token_request.py +0 -0
  92. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/refresh_token_request.py +0 -0
  93. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/token_manager.py +0 -0
  94. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/token_operation.py +0 -0
  95. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/token_storage.py +0 -0
  96. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/method_type.py +0 -0
  97. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/protocol_type.py +0 -0
  98. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/request.py +0 -0
  99. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/response.py +0 -0
  100. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/request.py +0 -0
  101. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/__init__.py +0 -0
  102. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/backoff_strategy.py +0 -0
  103. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/retry_condition.py +0 -0
  104. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/retry_policy.py +0 -0
  105. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/retry_policy_context.py +0 -0
  106. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/__init__.py +0 -0
  107. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/common.py +0 -0
  108. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/data.py +0 -0
  109. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/desensitize.py +0 -0
  110. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/validation.py +0 -0
  111. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/__init__.py +0 -0
  112. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/__init__.py +0 -0
  113. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/__version__.py +0 -0
  114. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/_internal_utils.py +0 -0
  115. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/adapters.py +0 -0
  116. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/api.py +0 -0
  117. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/auth.py +0 -0
  118. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/certs.py +0 -0
  119. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/compat.py +0 -0
  120. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/cookies.py +0 -0
  121. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/exceptions.py +0 -0
  122. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/help.py +0 -0
  123. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/hooks.py +0 -0
  124. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/models.py +0 -0
  125. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/__init__.py +0 -0
  126. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/__init__.py +0 -0
  127. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/__main__.py +0 -0
  128. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/cacert.pem +0 -0
  129. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/core.py +0 -0
  130. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/__init__.py +0 -0
  131. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/big5freq.py +0 -0
  132. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/big5prober.py +0 -0
  133. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/chardistribution.py +0 -0
  134. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +0 -0
  135. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/charsetprober.py +0 -0
  136. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/cli/__init__.py +0 -0
  137. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/cli/chardetect.py +0 -0
  138. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/codingstatemachine.py +0 -0
  139. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/compat.py +0 -0
  140. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/cp949prober.py +0 -0
  141. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/enums.py +0 -0
  142. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/escprober.py +0 -0
  143. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/escsm.py +0 -0
  144. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/eucjpprober.py +0 -0
  145. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euckrfreq.py +0 -0
  146. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euckrprober.py +0 -0
  147. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euctwfreq.py +0 -0
  148. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euctwprober.py +0 -0
  149. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/gb2312freq.py +0 -0
  150. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/gb2312prober.py +0 -0
  151. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/hebrewprober.py +0 -0
  152. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/jisfreq.py +0 -0
  153. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/jpcntx.py +0 -0
  154. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +0 -0
  155. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +0 -0
  156. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langgreekmodel.py +0 -0
  157. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +0 -0
  158. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +0 -0
  159. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langthaimodel.py +0 -0
  160. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langturkishmodel.py +0 -0
  161. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/latin1prober.py +0 -0
  162. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +0 -0
  163. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +0 -0
  164. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/mbcssm.py +0 -0
  165. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +0 -0
  166. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +0 -0
  167. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/sjisprober.py +0 -0
  168. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/universaldetector.py +0 -0
  169. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/utf8prober.py +0 -0
  170. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/version.py +0 -0
  171. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/__init__.py +0 -0
  172. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/_collections.py +0 -0
  173. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/connection.py +0 -0
  174. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/connectionpool.py +0 -0
  175. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/__init__.py +0 -0
  176. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +0 -0
  177. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/__init__.py +0 -0
  178. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +0 -0
  179. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +0 -0
  180. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +0 -0
  181. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +0 -0
  182. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +0 -0
  183. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +0 -0
  184. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/socks.py +0 -0
  185. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/exceptions.py +0 -0
  186. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/fields.py +0 -0
  187. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/filepost.py +0 -0
  188. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/__init__.py +0 -0
  189. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/backports/__init__.py +0 -0
  190. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +0 -0
  191. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +0 -0
  192. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/six.py +0 -0
  193. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/socks.py +0 -0
  194. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +0 -0
  195. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +0 -0
  196. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/poolmanager.py +0 -0
  197. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/request.py +0 -0
  198. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/response.py +0 -0
  199. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/__init__.py +0 -0
  200. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/connection.py +0 -0
  201. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/queue.py +0 -0
  202. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/request.py +0 -0
  203. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/response.py +0 -0
  204. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/retry.py +0 -0
  205. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/selectors.py +0 -0
  206. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/ssl_.py +0 -0
  207. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/timeout.py +0 -0
  208. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/url.py +0 -0
  209. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/wait.py +0 -0
  210. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages.py +0 -0
  211. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/sessions.py +0 -0
  212. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/status_codes.py +0 -0
  213. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/structures.py +0 -0
  214. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/utils.py +0 -0
  215. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/six.py +0 -0
  216. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/__init__.py +0 -0
  217. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/category.py +0 -0
  218. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/connect_ack.py +0 -0
  219. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/contract_type.py +0 -0
  220. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/direction.py +0 -0
  221. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/exchange_code.py +0 -0
  222. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/exercise_style.py +0 -0
  223. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/expiration_cycle.py +0 -0
  224. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/instrument_status.py +0 -0
  225. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/option_type.py +0 -0
  226. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/subscribe_type.py +0 -0
  227. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/data_client.py +0 -0
  228. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/data_streaming_client.py +0 -0
  229. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/__init__.py +0 -0
  230. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/default_retry_policy.py +0 -0
  231. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/exceptions.py +0 -0
  232. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_client.py +0 -0
  233. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_decoder.py +0 -0
  234. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_payload_decoder.py +0 -0
  235. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_topic.py +0 -0
  236. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/__init__.py +0 -0
  237. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/crypto_market_data.py +0 -0
  238. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/instrument.py +0 -0
  239. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/market_streaming_data.py +0 -0
  240. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/__init__.py +0 -0
  241. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/ask_bid_result.py +0 -0
  242. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/basic_result.py +0 -0
  243. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/broker_result.py +0 -0
  244. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/order_result.py +0 -0
  245. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/payload_type.py +0 -0
  246. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
  247. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/quote_result.py +0 -0
  248. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
  249. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
  250. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/tick_result.py +0 -0
  251. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/__init__.py +0 -0
  252. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_batch_historical_bars_request.py +0 -0
  253. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_corp_action_request.py +0 -0
  254. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_crypto_historical_bars_request.py +0 -0
  255. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_crypto_instruments_request.py +0 -0
  256. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_crypto_snapshot_request.py +0 -0
  257. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_eod_bars_request.py +0 -0
  258. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_depth_request.py +0 -0
  259. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_historical_bars_request.py +0 -0
  260. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_instruments_by_code_request.py +0 -0
  261. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_instruments_request.py +0 -0
  262. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_products_request.py +0 -0
  263. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_snapshot_request.py +0 -0
  264. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_tick_request.py +0 -0
  265. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_historical_bars_request.py +0 -0
  266. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_instruments_request.py +0 -0
  267. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_quotes_request.py +0 -0
  268. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_snapshot_request.py +0 -0
  269. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_tick_request.py +0 -0
  270. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/subscribe_request.py +0 -0
  271. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/unsubscribe_request.py +0 -0
  272. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/__init__.py +0 -0
  273. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/account_type.py +0 -0
  274. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/category.py +0 -0
  275. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/combo_ticker_type.py +0 -0
  276. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/combo_type.py +0 -0
  277. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/currency.py +0 -0
  278. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/forbid_reason.py +0 -0
  279. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/instrument_type.py +0 -0
  280. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/markets.py +0 -0
  281. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_entrust_type.py +0 -0
  282. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_side.py +0 -0
  283. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_status.py +0 -0
  284. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_tif.py +0 -0
  285. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_type.py +0 -0
  286. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/trade_policy.py +0 -0
  287. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/trading_date_type.py +0 -0
  288. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/trailing_type.py +0 -0
  289. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/__init__.py +0 -0
  290. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/default_retry_policy.py +0 -0
  291. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/events_pb2.py +0 -0
  292. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/events_pb2_grpc.py +0 -0
  293. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/signature_composer.py +0 -0
  294. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/types.py +0 -0
  295. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/__init__.py +0 -0
  296. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/cancel_order_request.py +0 -0
  297. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_account_balance_request.py +0 -0
  298. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_account_positions_request.py +0 -0
  299. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_account_profile_request.py +0 -0
  300. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_app_subscriptions.py +0 -0
  301. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_open_orders_request.py +0 -0
  302. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_order_detail_request.py +0 -0
  303. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_today_orders_request.py +0 -0
  304. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_trade_calendar_request.py +0 -0
  305. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_trade_instrument_detail_request.py +0 -0
  306. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_trade_security_detail_request.py +0 -0
  307. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_tradeable_instruments_request.py +0 -0
  308. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/palce_order_request.py +0 -0
  309. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/place_order_request.py +0 -0
  310. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/place_order_request_v2.py +0 -0
  311. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/replace_order_request.py +0 -0
  312. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/replace_order_request_v2.py +0 -0
  313. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/__init__.py +0 -0
  314. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/cancel_option_request.py +0 -0
  315. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/cancel_order_request.py +0 -0
  316. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_balance_request.py +0 -0
  317. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_list.py +0 -0
  318. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_list_request.py +0 -0
  319. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_positions_request.py +0 -0
  320. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_order_detail_request.py +0 -0
  321. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_order_history_request.py +0 -0
  322. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_order_open_request.py +0 -0
  323. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/palce_order_request.py +0 -0
  324. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/place_option_request.py +0 -0
  325. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/place_order_request.py +0 -0
  326. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/preview_option_request.py +0 -0
  327. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/preview_order_request.py +0 -0
  328. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/replace_option_request.py +0 -0
  329. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/replace_order_request.py +0 -0
  330. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/__init__.py +0 -0
  331. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/cancel_order_request.py +0 -0
  332. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/get_order_detail_request.py +0 -0
  333. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/get_order_history_request.py +0 -0
  334. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/get_order_open_request.py +0 -0
  335. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/place_order_request.py +0 -0
  336. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/preview_order_request.py +0 -0
  337. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/replace_order_request.py +0 -0
  338. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/__init__.py +0 -0
  339. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/account_info.py +0 -0
  340. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/order_operation.py +0 -0
  341. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/trade_calendar.py +0 -0
  342. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/trade_instrument.py +0 -0
  343. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v2/__init__.py +0 -0
  344. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v2/account_info_v2.py +0 -0
  345. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v2/order_operation_v2.py +0 -0
  346. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v3/__init__.py +0 -0
  347. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade_client.py +0 -0
  348. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade_events_client.py +0 -0
  349. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
  350. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/requires.txt +0 -0
  351. {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webull-openapi-python-sdk
3
- Version: 1.0.7
3
+ Version: 1.0.9
4
4
  Summary: Webull Python SDK.
5
5
  Home-page:
6
6
  Author: Webull
@@ -0,0 +1 @@
1
+ __version__ = '1.0.9'
@@ -74,6 +74,10 @@ if __name__ == '__main__':
74
74
  if res.status_code == 200:
75
75
  print('get_tick:', res.json())
76
76
 
77
+ res = data_client.market_data.get_footprint("AAPL", Category.US_STOCK.name, Timespan.S5.name)
78
+ if res.status_code == 200:
79
+ print('get_footprint:', res.json())
80
+
77
81
  res = data_client.market_data.get_quotes("AAPL", Category.US_STOCK.name, depth=1, overnight_required=True)
78
82
  if res.status_code == 200:
79
83
  print('get_quotes:', res.json())
@@ -94,6 +98,10 @@ if __name__ == '__main__':
94
98
  if res.status_code == 200:
95
99
  print('get_futures_snapshot:', res.json())
96
100
 
101
+ res = data_client.futures_market_data.get_futures_footprint("SILZ5,6BM6", Category.US_FUTURES.name, Timespan.S5.name)
102
+ if res.status_code == 200:
103
+ print('get_futures_footprint:', res.json())
104
+
97
105
  res = data_client.instrument.get_futures_products(Category.US_FUTURES.name)
98
106
  if res.status_code == 200:
99
107
  print('get_futures_products:', res.json())
@@ -208,7 +208,38 @@ if __name__ == '__main__':
208
208
  if res.status_code == 200:
209
209
  print('get master order detail res:', res.json())
210
210
 
211
-
211
+ # batch place order
212
+ batch_place_orders = [
213
+ {
214
+ "combo_type": "NORMAL",
215
+ "client_order_id": uuid.uuid4().hex,
216
+ "instrument_type": "EQUITY",
217
+ "market": "US",
218
+ "symbol": "AAPL",
219
+ "order_type": "MARKET",
220
+ "entrust_type": "QTY",
221
+ "support_trading_session": "CORE",
222
+ "time_in_force": "DAY",
223
+ "side": "BUY",
224
+ "quantity": "1"
225
+ },
226
+ {
227
+ "combo_type": "NORMAL",
228
+ "client_order_id": uuid.uuid4().hex,
229
+ "instrument_type": "EQUITY",
230
+ "market": "US",
231
+ "symbol": "TESL",
232
+ "order_type": "MARKET",
233
+ "entrust_type": "QTY",
234
+ "support_trading_session": "CORE",
235
+ "time_in_force": "DAY",
236
+ "side": "BUY",
237
+ "quantity": "1"
238
+ }
239
+ ]
240
+ res = trade_client.order_v3.batch_place_order(account_id, batch_place_orders)
241
+ if res.status_code == 200:
242
+ print('batch place normal equity order res:', res.json())
212
243
 
213
244
 
214
245
  # ============================================================
@@ -0,0 +1 @@
1
+ __version__ = '1.0.9'
@@ -1,4 +1,4 @@
1
- __version__ = '1.0.7'
1
+ __version__ = '1.0.9'
2
2
 
3
3
  import logging
4
4
 
@@ -0,0 +1,3 @@
1
+ # coding=utf-8
2
+
3
+ __version__ = '1.0.9'
@@ -16,6 +16,8 @@
16
16
 
17
17
  from webull.core.common.easy_enum import EasyEnum
18
18
  class Timespan(EasyEnum):
19
+ S5 = (12, "5 Second")
20
+ S15= (13, "15 Second")
19
21
  M1 = (1, "1 minute")
20
22
  M5 = (2, "5 minute")
21
23
  M15 = (3, "15 minute")
@@ -11,8 +11,8 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
-
15
-
14
+ from webull.data.common.category import Category
15
+ from webull.data.request.get_futures_footprint_request import GetFuturesFootprintRequest
16
16
  from webull.data.request.get_futures_historical_bars_request import GetFuturesHistoricalBarsRequest
17
17
  from webull.data.request.get_futures_snapshot_request import GetFuturesSnapshotRequest
18
18
  from webull.data.request.get_futures_depth_request import GetFuturesDepthRequest
@@ -86,4 +86,26 @@ class FuturesMarketData:
86
86
  tick_request.set_category(category)
87
87
  tick_request.set_count(count)
88
88
  response = self.client.get_response(tick_request)
89
+ return response
90
+
91
+ def get_futures_footprint(self, symbols, category, timespan, count=None,
92
+ real_time_required=None, trading_sessions=None):
93
+ """
94
+ Search the futures footprint based on the list of futures codes and futures types.
95
+
96
+ :param symbols: Futures Securities symbol, such as: BITH6,BITF26.
97
+ :param category: Security type, enumeration.
98
+ :param timespan: Time granularity.
99
+ :param count: Number of entries: 200 by default, maximum 1200.
100
+ :param real_time_required: Whether to include the latest data or candlestick charts that are not yet finalized. The default is false, meaning they are not included. This option is only used for minute candlestick charts.
101
+ :param trading_sessions: RTH: During trading hours, PRE: Before trading hours, ATH: After trading hours. Default: RTH.
102
+ """
103
+ footprint_request = GetFuturesFootprintRequest()
104
+ footprint_request.set_symbols(symbols)
105
+ footprint_request.set_category(category)
106
+ footprint_request.set_timespan(timespan)
107
+ footprint_request.set_count(count)
108
+ footprint_request.set_real_time_required(real_time_required)
109
+ footprint_request.set_trading_sessions(trading_sessions)
110
+ response = self.client.get_response(footprint_request)
89
111
  return response
@@ -11,9 +11,11 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
+ from webull.data.common.category import Category
14
15
  from webull.data.request.get_batch_historical_bars_request import BatchHistoricalBarsRequest
15
16
  from webull.data.request.get_corp_action_request import GetCorpActionRequest
16
17
  from webull.data.request.get_eod_bars_request import GetEodBarsRequest
18
+ from webull.data.request.get_footprint_request import GetFootprintRequest
17
19
  from webull.data.request.get_historical_bars_request import GetHistoricalBarsRequest
18
20
  from webull.data.request.get_quotes_request import GetQuotesRequest
19
21
  from webull.data.request.get_snapshot_request import GetSnapshotRequest
@@ -183,3 +185,25 @@ class MarketData:
183
185
  eod_corp_action_request.set_last_update_time(last_update_time)
184
186
  response = self.client.get_response(eod_corp_action_request)
185
187
  return response
188
+
189
+ def get_footprint(self, symbols, category, timespan, count=None,
190
+ real_time_required=None, trading_sessions=None):
191
+ """
192
+ Search the footprint based on the list of security codes and security types.
193
+
194
+ :param symbols: Securities symbol, such as: 00700,00981.
195
+ :param category: Security type, enumeration.
196
+ :param timespan: Time granularity.
197
+ :param count: Number of entries: 200 by default, maximum 1200.
198
+ :param real_time_required: Whether to include the latest data or candlestick charts that are not yet finalized. The default is false, meaning they are not included. This option is only used for minute candlestick charts.
199
+ :param trading_sessions: RTH: During trading hours, PRE: Before trading hours, ATH: After trading hours. Default: RTH.
200
+ """
201
+ footprint_request = GetFootprintRequest()
202
+ footprint_request.set_symbols(symbols)
203
+ footprint_request.set_category(category)
204
+ footprint_request.set_timespan(timespan)
205
+ footprint_request.set_count(count)
206
+ footprint_request.set_real_time_required(real_time_required)
207
+ footprint_request.set_trading_sessions(trading_sessions)
208
+ response = self.client.get_response(footprint_request)
209
+ return response
@@ -0,0 +1,37 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: message.proto
4
+ """Generated protocol buffer code."""
5
+ from google.protobuf.internal import builder as _builder
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ # @@protoc_insertion_point(imports)
10
+
11
+ _sym_db = _symbol_database.Default()
12
+
13
+
14
+
15
+
16
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"Z\n\x05\x42\x61sic\x12\x0e\n\x06symbol\x18\x01 \x01(\t\x12\x15\n\rinstrument_id\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\x12\x17\n\x0ftrading_session\x18\x04 \x01(\t\"\xd6\x03\n\x08Snapshot\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x12\n\ntrade_time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0c\n\x04open\x18\x04 \x01(\t\x12\x0c\n\x04high\x18\x05 \x01(\t\x12\x0b\n\x03low\x18\x06 \x01(\t\x12\x11\n\tpre_close\x18\x07 \x01(\t\x12\x0e\n\x06volume\x18\x08 \x01(\t\x12\x0e\n\x06\x63hange\x18\t \x01(\t\x12\x14\n\x0c\x63hange_ratio\x18\n \x01(\t\x12\x16\n\x0e\x65xt_trade_time\x18\x0b \x01(\t\x12\x11\n\text_price\x18\x0c \x01(\t\x12\x10\n\x08\x65xt_high\x18\r \x01(\t\x12\x0f\n\x07\x65xt_low\x18\x0e \x01(\t\x12\x12\n\next_volume\x18\x0f \x01(\t\x12\x12\n\next_change\x18\x10 \x01(\t\x12\x18\n\x10\x65xt_change_ratio\x18\x11 \x01(\t\x12\x16\n\x0eovn_trade_time\x18\x12 \x01(\t\x12\x11\n\tovn_price\x18\x13 \x01(\t\x12\x10\n\x08ovn_high\x18\x14 \x01(\t\x12\x0f\n\x07ovn_low\x18\x15 \x01(\t\x12\x12\n\novn_volume\x18\x16 \x01(\t\x12\x12\n\novn_change\x18\x17 \x01(\t\x12\x18\n\x10ovn_change_ratio\x18\x18 \x01(\t\"L\n\x05Quote\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x15\n\x04\x61sks\x18\x02 \x03(\x0b\x32\x07.AskBid\x12\x15\n\x04\x62ids\x18\x03 \x03(\x0b\x32\x07.AskBid\"X\n\x04Tick\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0e\n\x06volume\x18\x04 \x01(\t\x12\x0c\n\x04side\x18\x05 \x01(\t\"U\n\x06\x41skBid\x12\r\n\x05price\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\x12\x15\n\x05order\x18\x03 \x03(\x0b\x32\x06.Order\x12\x17\n\x06\x62roker\x18\x04 \x03(\x0b\x32\x07.Broker\"#\n\x05Order\x12\x0c\n\x04mpid\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\"#\n\x06\x42roker\x12\x0b\n\x03\x62id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
17
+
18
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
19
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
20
+ if _descriptor._USE_C_DESCRIPTORS == False:
21
+
22
+ DESCRIPTOR._options = None
23
+ _BASIC._serialized_start=17
24
+ _BASIC._serialized_end=107
25
+ _SNAPSHOT._serialized_start=110
26
+ _SNAPSHOT._serialized_end=580
27
+ _QUOTE._serialized_start=582
28
+ _QUOTE._serialized_end=658
29
+ _TICK._serialized_start=660
30
+ _TICK._serialized_end=748
31
+ _ASKBID._serialized_start=750
32
+ _ASKBID._serialized_end=835
33
+ _ORDER._serialized_start=837
34
+ _ORDER._serialized_end=872
35
+ _BROKER._serialized_start=874
36
+ _BROKER._serialized_end=909
37
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,133 @@
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 decimal import Decimal
18
+ from webull.data.quotes.subscribe.basic_result import BasicResult
19
+
20
+
21
+ class SnapshotResult:
22
+ def __init__(self, pb_snapshot):
23
+ self.basic = BasicResult(pb_snapshot.basic)
24
+ self.last_trade_time = int(pb_snapshot.trade_time) if pb_snapshot.trade_time else None
25
+ self.price = Decimal(pb_snapshot.price) if pb_snapshot.price else None
26
+ self.open = Decimal(pb_snapshot.open) if pb_snapshot.open else None
27
+ self.high = Decimal(pb_snapshot.high) if pb_snapshot.high else None
28
+ self.low = Decimal(pb_snapshot.low) if pb_snapshot.low else None
29
+ self.pre_close = Decimal(pb_snapshot.pre_close) if pb_snapshot.pre_close else None
30
+ self.close = Decimal(pb_snapshot.open) if pb_snapshot.open else None
31
+ self.volume = Decimal(pb_snapshot.volume) if pb_snapshot.volume else None
32
+ self.change = Decimal(pb_snapshot.change) if pb_snapshot.change else None
33
+ self.change_ratio = Decimal(pb_snapshot.change_ratio) if pb_snapshot.change_ratio else None
34
+ self.ext_trade_time = int(pb_snapshot.ext_trade_time) if pb_snapshot.ext_trade_time else None
35
+ self.ext_price = Decimal(pb_snapshot.ext_price) if pb_snapshot.ext_price else None
36
+ self.ext_high = Decimal(pb_snapshot.ext_high) if pb_snapshot.ext_high else None
37
+ self.ext_low = Decimal(pb_snapshot.ext_low) if pb_snapshot.ext_low else None
38
+ self.ext_volume = Decimal(pb_snapshot.ext_volume) if pb_snapshot.ext_volume else None
39
+ self.ext_change = Decimal(pb_snapshot.ext_change) if pb_snapshot.ext_change else None
40
+ self.ext_change_ratio = Decimal(pb_snapshot.ext_change_ratio) if pb_snapshot.ext_change_ratio else None
41
+ self.ovn_trade_time = int(pb_snapshot.ovn_trade_time) if pb_snapshot.ovn_trade_time else None
42
+ self.ovn_price = Decimal(pb_snapshot.ovn_price) if pb_snapshot.ovn_price else None
43
+ self.ovn_high = Decimal(pb_snapshot.ovn_high) if pb_snapshot.ovn_high else None
44
+ self.ovn_low = Decimal(pb_snapshot.ovn_low) if pb_snapshot.ovn_low else None
45
+ self.ovn_volume = Decimal(pb_snapshot.ovn_volume) if pb_snapshot.ovn_volume else None
46
+ self.ovn_change = Decimal(pb_snapshot.ovn_change) if pb_snapshot.ovn_change else None
47
+ self.ovn_change_ratio = Decimal(pb_snapshot.ovn_change_ratio) if pb_snapshot.ovn_change_ratio else None
48
+
49
+ def get_basic(self):
50
+ return self.basic
51
+
52
+ def get_last_trade_time(self):
53
+ return self.last_trade_time
54
+
55
+ def get_price(self):
56
+ return self.price
57
+
58
+ def get_open(self):
59
+ return self.open
60
+
61
+ def get_high(self):
62
+ return self.high
63
+
64
+ def get_low(self):
65
+ return self.low
66
+
67
+ def get_pre_close(self):
68
+ return self.pre_close
69
+
70
+ def get_close(self):
71
+ return self.close
72
+
73
+ def get_volume(self):
74
+ return self.volume
75
+
76
+ def get_change(self):
77
+ return self.change
78
+
79
+ def get_change_ratio(self):
80
+ return self.change_ratio
81
+
82
+ def get_ext_trade_time(self):
83
+ return self.ext_trade_time
84
+
85
+ def get_ext_price(self):
86
+ return self.ext_price
87
+
88
+ def get_ext_high(self):
89
+ return self.ext_high
90
+
91
+ def get_ext_low(self):
92
+ return self.ext_low
93
+
94
+ def get_ext_volume(self):
95
+ return self.ext_volume
96
+
97
+ def get_ext_change(self):
98
+ return self.ext_change
99
+
100
+ def get_ext_change_ratio(self):
101
+ return self.ext_change_ratio
102
+
103
+ def get_ovn_trade_time(self):
104
+ return self.ovn_trade_time
105
+
106
+ def get_ovn_price(self):
107
+ return self.ovn_price
108
+
109
+ def get_ovn_high(self):
110
+ return self.ovn_high
111
+
112
+ def get_ovn_low(self):
113
+ return self.ovn_low
114
+
115
+ def get_ovn_volume(self):
116
+ return self.ovn_volume
117
+
118
+ def get_ovn_change(self):
119
+ return self.ovn_change
120
+
121
+ def get_ovn_change_ratio(self):
122
+ return self.ovn_change_ratio
123
+
124
+ def __repr__(self):
125
+ attrs = ['last_trade_time', 'price', 'open', 'high', 'low', 'pre_close', 'close', 'volume', 'change', 'change_ratio']
126
+ ext_attrs = [f"ext_{name}" for name in ['trade_time', 'price', 'high', 'low', 'volume', 'change', 'change_ratio']]
127
+ ovn_attrs = [f"ovn_{name}" for name in ['trade_time', 'price', 'high', 'low', 'volume', 'change', 'change_ratio']]
128
+ all_attrs = attrs + ext_attrs + ovn_attrs
129
+ attr_str = ', '.join(f"{name}:{getattr(self, name)}" for name in all_attrs)
130
+ return f"{self.basic}, {attr_str}"
131
+
132
+ def __str__(self):
133
+ return self.__repr__()
@@ -0,0 +1,45 @@
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
+ class GetFootprintRequest(ApiRequest):
19
+ def __init__(self):
20
+ ApiRequest.__init__(self, "/openapi/market-data/stock/footprint", version='v2', method="GET", query_params={})
21
+
22
+ def set_symbols(self, symbols):
23
+ if isinstance(symbols, str):
24
+ self.add_query_param("symbols", symbols)
25
+ elif isinstance(symbols, list):
26
+ self.add_query_param("symbols", ",".join(symbols))
27
+
28
+ def set_category(self, category):
29
+ self.add_query_param("category", category)
30
+
31
+ def set_timespan(self, timespan):
32
+ if timespan:
33
+ self.add_query_param("timespan", timespan)
34
+
35
+ def set_count(self, count):
36
+ if count:
37
+ self.add_query_param("count", count)
38
+
39
+ def set_real_time_required(self, real_time_required):
40
+ if real_time_required:
41
+ self.add_query_param("real_time_required", real_time_required)
42
+
43
+ def set_trading_sessions(self, trading_sessions):
44
+ if trading_sessions:
45
+ self.add_query_param("trading_sessions", trading_sessions)
@@ -0,0 +1,45 @@
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
+ class GetFuturesFootprintRequest(ApiRequest):
19
+ def __init__(self):
20
+ ApiRequest.__init__(self, "/openapi/market-data/futures/footprint", version='v2', method="GET", query_params={})
21
+
22
+ def set_symbols(self, symbols):
23
+ if isinstance(symbols, str):
24
+ self.add_query_param("symbols", symbols)
25
+ elif isinstance(symbols, list):
26
+ self.add_query_param("symbols", ",".join(symbols))
27
+
28
+ def set_category(self, category):
29
+ self.add_query_param("category", category)
30
+
31
+ def set_timespan(self, timespan):
32
+ if timespan:
33
+ self.add_query_param("timespan", timespan)
34
+
35
+ def set_count(self, count):
36
+ if count:
37
+ self.add_query_param("count", count)
38
+
39
+ def set_real_time_required(self, real_time_required):
40
+ if real_time_required:
41
+ self.add_query_param("real_time_required", real_time_required)
42
+
43
+ def set_trading_sessions(self, trading_sessions):
44
+ if trading_sessions:
45
+ self.add_query_param("trading_sessions", trading_sessions)
@@ -0,0 +1 @@
1
+ __version__ = '1.0.9'
@@ -0,0 +1,52 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ import json
15
+ # coding=utf-8
16
+
17
+ from webull.core.request import ApiRequest
18
+
19
+
20
+ class BatchPlaceOrderRequest(ApiRequest):
21
+ def __init__(self):
22
+ super().__init__("/openapi/trade/order/batch-place", version='v2', method="POST", body_params={})
23
+
24
+ def set_account_id(self, account_id):
25
+ self.add_body_params("account_id", account_id)
26
+
27
+ def set_batch_orders(self, batch_orders):
28
+ self.add_body_params("batch_orders", batch_orders)
29
+
30
+ def add_custom_headers_from_order(self, batch_orders):
31
+ if not batch_orders:
32
+ return
33
+
34
+ if isinstance(batch_orders, list) and batch_orders[0]:
35
+ first_order = batch_orders[0]
36
+ leg_list = first_order.get("legs")
37
+ if leg_list is not None and isinstance(leg_list, list):
38
+ for sub_leg in leg_list:
39
+ if (sub_leg and isinstance(sub_leg, dict)
40
+ and sub_leg.get("instrument_type") == "OPTION"):
41
+ instrument_type = sub_leg.get("instrument_type")
42
+ market = sub_leg.get("market")
43
+ category = market + "_" + instrument_type
44
+ if category is not None:
45
+ self.add_header("category", category)
46
+ return
47
+
48
+ market = first_order.get("market")
49
+ instrument_type = first_order.get("instrument_type")
50
+ category = market + "_" + instrument_type
51
+ if category is not None:
52
+ self.add_header("category", category)
@@ -14,6 +14,7 @@
14
14
  # coding=utf-8
15
15
  from webull.trade.request.v3.preview_order_request import PreviewOrderRequest
16
16
  from webull.trade.request.v3.place_order_request import PlaceOrderRequest
17
+ from webull.trade.request.v3.batch_place_order_request import BatchPlaceOrderRequest
17
18
  from webull.trade.request.v3.replace_order_request import ReplaceOrderRequest
18
19
  from webull.trade.request.v3.cancel_order_request import CancelOrderRequest
19
20
  from webull.trade.request.v3.get_order_detail_request import OrderDetailRequest
@@ -50,6 +51,18 @@ class OrderOperationV3:
50
51
  response = self.client.get_response(place_order_request)
51
52
  return response
52
53
 
54
+ def batch_place_order(self, account_id, batch_orders):
55
+ """
56
+ This interface is currently supported only for Webull US.
57
+ Support for other regions will be available in future updates.
58
+ """
59
+ batch_place_order_request = BatchPlaceOrderRequest()
60
+ batch_place_order_request.set_account_id(account_id=account_id)
61
+ batch_place_order_request.set_batch_orders(batch_orders=batch_orders)
62
+ batch_place_order_request.add_custom_headers_from_order(batch_orders)
63
+ response = self.client.get_response(batch_place_order_request)
64
+ return response
65
+
53
66
  def replace_order(self, account_id, modify_orders, client_combo_order_id=None):
54
67
  """
55
68
  This interface is currently supported only for Webull US.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webull-openapi-python-sdk
3
- Version: 1.0.7
3
+ Version: 1.0.9
4
4
  Summary: Webull Python SDK.
5
5
  Home-page:
6
6
  Author: Webull
@@ -241,7 +241,9 @@ webull/data/request/get_crypto_historical_bars_request.py
241
241
  webull/data/request/get_crypto_instruments_request.py
242
242
  webull/data/request/get_crypto_snapshot_request.py
243
243
  webull/data/request/get_eod_bars_request.py
244
+ webull/data/request/get_footprint_request.py
244
245
  webull/data/request/get_futures_depth_request.py
246
+ webull/data/request/get_futures_footprint_request.py
245
247
  webull/data/request/get_futures_historical_bars_request.py
246
248
  webull/data/request/get_futures_instruments_by_code_request.py
247
249
  webull/data/request/get_futures_instruments_request.py
@@ -317,6 +319,7 @@ webull/trade/request/v2/preview_order_request.py
317
319
  webull/trade/request/v2/replace_option_request.py
318
320
  webull/trade/request/v2/replace_order_request.py
319
321
  webull/trade/request/v3/__init__.py
322
+ webull/trade/request/v3/batch_place_order_request.py
320
323
  webull/trade/request/v3/cancel_order_request.py
321
324
  webull/trade/request/v3/get_order_detail_request.py
322
325
  webull/trade/request/v3/get_order_history_request.py
@@ -1 +0,0 @@
1
- __version__ = '1.0.7'
@@ -1 +0,0 @@
1
- __version__ = '1.0.7'
@@ -1,3 +0,0 @@
1
- # coding=utf-8
2
-
3
- __version__ = '1.0.7'
@@ -1,37 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: message.proto
4
- """Generated protocol buffer code."""
5
- from google.protobuf.internal import builder as _builder
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- # @@protoc_insertion_point(imports)
10
-
11
- _sym_db = _symbol_database.Default()
12
-
13
-
14
-
15
-
16
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"Z\n\x05\x42\x61sic\x12\x0e\n\x06symbol\x18\x01 \x01(\t\x12\x15\n\rinstrument_id\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\x12\x17\n\x0ftrading_session\x18\x04 \x01(\t\"\xb6\x01\n\x08Snapshot\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x12\n\ntrade_time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0c\n\x04open\x18\x04 \x01(\t\x12\x0c\n\x04high\x18\x05 \x01(\t\x12\x0b\n\x03low\x18\x06 \x01(\t\x12\x11\n\tpre_close\x18\x07 \x01(\t\x12\x0e\n\x06volume\x18\x08 \x01(\t\x12\x0e\n\x06\x63hange\x18\t \x01(\t\x12\x14\n\x0c\x63hange_ratio\x18\n \x01(\t\"L\n\x05Quote\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x15\n\x04\x61sks\x18\x02 \x03(\x0b\x32\x07.AskBid\x12\x15\n\x04\x62ids\x18\x03 \x03(\x0b\x32\x07.AskBid\"X\n\x04Tick\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0e\n\x06volume\x18\x04 \x01(\t\x12\x0c\n\x04side\x18\x05 \x01(\t\"U\n\x06\x41skBid\x12\r\n\x05price\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\x12\x15\n\x05order\x18\x03 \x03(\x0b\x32\x06.Order\x12\x17\n\x06\x62roker\x18\x04 \x03(\x0b\x32\x07.Broker\"#\n\x05Order\x12\x0c\n\x04mpid\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\"#\n\x06\x42roker\x12\x0b\n\x03\x62id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
17
-
18
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
19
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
20
- if _descriptor._USE_C_DESCRIPTORS == False:
21
-
22
- DESCRIPTOR._options = None
23
- _BASIC._serialized_start=17
24
- _BASIC._serialized_end=107
25
- _SNAPSHOT._serialized_start=110
26
- _SNAPSHOT._serialized_end=292
27
- _QUOTE._serialized_start=294
28
- _QUOTE._serialized_end=370
29
- _TICK._serialized_start=372
30
- _TICK._serialized_end=460
31
- _ASKBID._serialized_start=462
32
- _ASKBID._serialized_end=547
33
- _ORDER._serialized_start=549
34
- _ORDER._serialized_end=584
35
- _BROKER._serialized_start=586
36
- _BROKER._serialized_end=621
37
- # @@protoc_insertion_point(module_scope)