webull-openapi-python-sdk 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- samples/__init__.py +1 -0
- samples/data/__init__.py +1 -0
- samples/data/data_client.py +57 -0
- samples/data/data_streaming_client.py +86 -0
- samples/data/data_streaming_client_async.py +101 -0
- samples/trade/__init__.py +0 -0
- samples/trade/trade_client.py +163 -0
- samples/trade/trade_client_v2.py +181 -0
- samples/trade/trade_event_client.py +47 -0
- webull/__init__.py +1 -0
- webull/core/__init__.py +12 -0
- webull/core/auth/__init__.py +0 -0
- webull/core/auth/algorithm/__init__.py +0 -0
- webull/core/auth/algorithm/sha_hmac1.py +65 -0
- webull/core/auth/algorithm/sha_hmac256.py +75 -0
- webull/core/auth/composer/__init__.py +0 -0
- webull/core/auth/composer/default_signature_composer.py +125 -0
- webull/core/auth/credentials.py +46 -0
- webull/core/auth/signers/__init__.py +0 -0
- webull/core/auth/signers/app_key_signer.py +72 -0
- webull/core/auth/signers/signer.py +48 -0
- webull/core/auth/signers/signer_factory.py +58 -0
- webull/core/cache/__init__.py +225 -0
- webull/core/client.py +410 -0
- webull/core/common/__init__.py +0 -0
- webull/core/common/api_type.py +19 -0
- webull/core/common/easy_enum.py +35 -0
- webull/core/common/region.py +7 -0
- webull/core/compat.py +85 -0
- webull/core/context/__init__.py +0 -0
- webull/core/context/request_context_holder.py +33 -0
- webull/core/data/endpoints.json +22 -0
- webull/core/data/retry_config.json +15 -0
- webull/core/endpoint/__init__.py +8 -0
- webull/core/endpoint/chained_endpoint_resolver.py +57 -0
- webull/core/endpoint/default_endpoint_resolver.py +60 -0
- webull/core/endpoint/local_config_regional_endpoint_resolver.py +77 -0
- webull/core/endpoint/resolver_endpoint_request.py +46 -0
- webull/core/endpoint/user_customized_endpoint_resolver.py +55 -0
- webull/core/exception/__init__.py +0 -0
- webull/core/exception/error_code.py +23 -0
- webull/core/exception/error_msg.py +21 -0
- webull/core/exception/exceptions.py +53 -0
- webull/core/headers.py +57 -0
- webull/core/http/__init__.py +0 -0
- webull/core/http/initializer/__init__.py +0 -0
- webull/core/http/initializer/client_initializer.py +79 -0
- webull/core/http/initializer/token/__init__.py +0 -0
- webull/core/http/initializer/token/bean/__init__.py +0 -0
- webull/core/http/initializer/token/bean/access_token.py +40 -0
- webull/core/http/initializer/token/bean/check_token_request.py +44 -0
- webull/core/http/initializer/token/bean/create_token_request.py +45 -0
- webull/core/http/initializer/token/bean/refresh_token_request.py +44 -0
- webull/core/http/initializer/token/token_manager.py +208 -0
- webull/core/http/initializer/token/token_operation.py +72 -0
- webull/core/http/method_type.py +43 -0
- webull/core/http/protocol_type.py +43 -0
- webull/core/http/request.py +121 -0
- webull/core/http/response.py +166 -0
- webull/core/request.py +278 -0
- webull/core/retry/__init__.py +0 -0
- webull/core/retry/backoff_strategy.py +102 -0
- webull/core/retry/retry_condition.py +214 -0
- webull/core/retry/retry_policy.py +63 -0
- webull/core/retry/retry_policy_context.py +51 -0
- webull/core/utils/__init__.py +0 -0
- webull/core/utils/common.py +62 -0
- webull/core/utils/data.py +25 -0
- webull/core/utils/desensitize.py +33 -0
- webull/core/utils/validation.py +49 -0
- webull/core/vendored/__init__.py +0 -0
- webull/core/vendored/requests/__init__.py +94 -0
- webull/core/vendored/requests/__version__.py +28 -0
- webull/core/vendored/requests/_internal_utils.py +56 -0
- webull/core/vendored/requests/adapters.py +539 -0
- webull/core/vendored/requests/api.py +166 -0
- webull/core/vendored/requests/auth.py +307 -0
- webull/core/vendored/requests/certs.py +34 -0
- webull/core/vendored/requests/compat.py +85 -0
- webull/core/vendored/requests/cookies.py +555 -0
- webull/core/vendored/requests/exceptions.py +136 -0
- webull/core/vendored/requests/help.py +134 -0
- webull/core/vendored/requests/hooks.py +48 -0
- webull/core/vendored/requests/models.py +960 -0
- webull/core/vendored/requests/packages/__init__.py +17 -0
- webull/core/vendored/requests/packages/certifi/__init__.py +17 -0
- webull/core/vendored/requests/packages/certifi/__main__.py +16 -0
- webull/core/vendored/requests/packages/certifi/cacert.pem +4433 -0
- webull/core/vendored/requests/packages/certifi/core.py +51 -0
- webull/core/vendored/requests/packages/chardet/__init__.py +53 -0
- webull/core/vendored/requests/packages/chardet/big5freq.py +400 -0
- webull/core/vendored/requests/packages/chardet/big5prober.py +61 -0
- webull/core/vendored/requests/packages/chardet/chardistribution.py +247 -0
- webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +120 -0
- webull/core/vendored/requests/packages/chardet/charsetprober.py +159 -0
- webull/core/vendored/requests/packages/chardet/cli/__init__.py +1 -0
- webull/core/vendored/requests/packages/chardet/cli/chardetect.py +99 -0
- webull/core/vendored/requests/packages/chardet/codingstatemachine.py +102 -0
- webull/core/vendored/requests/packages/chardet/compat.py +48 -0
- webull/core/vendored/requests/packages/chardet/cp949prober.py +63 -0
- webull/core/vendored/requests/packages/chardet/enums.py +90 -0
- webull/core/vendored/requests/packages/chardet/escprober.py +115 -0
- webull/core/vendored/requests/packages/chardet/escsm.py +260 -0
- webull/core/vendored/requests/packages/chardet/eucjpprober.py +106 -0
- webull/core/vendored/requests/packages/chardet/euckrfreq.py +209 -0
- webull/core/vendored/requests/packages/chardet/euckrprober.py +61 -0
- webull/core/vendored/requests/packages/chardet/euctwfreq.py +401 -0
- webull/core/vendored/requests/packages/chardet/euctwprober.py +60 -0
- webull/core/vendored/requests/packages/chardet/gb2312freq.py +297 -0
- webull/core/vendored/requests/packages/chardet/gb2312prober.py +60 -0
- webull/core/vendored/requests/packages/chardet/hebrewprober.py +306 -0
- webull/core/vendored/requests/packages/chardet/jisfreq.py +339 -0
- webull/core/vendored/requests/packages/chardet/jpcntx.py +247 -0
- webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +242 -0
- webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +347 -0
- webull/core/vendored/requests/packages/chardet/langgreekmodel.py +239 -0
- webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +214 -0
- webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +239 -0
- webull/core/vendored/requests/packages/chardet/langthaimodel.py +213 -0
- webull/core/vendored/requests/packages/chardet/langturkishmodel.py +207 -0
- webull/core/vendored/requests/packages/chardet/latin1prober.py +159 -0
- webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +105 -0
- webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +68 -0
- webull/core/vendored/requests/packages/chardet/mbcssm.py +586 -0
- webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +146 -0
- webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +87 -0
- webull/core/vendored/requests/packages/chardet/sjisprober.py +106 -0
- webull/core/vendored/requests/packages/chardet/universaldetector.py +300 -0
- webull/core/vendored/requests/packages/chardet/utf8prober.py +96 -0
- webull/core/vendored/requests/packages/chardet/version.py +23 -0
- webull/core/vendored/requests/packages/urllib3/__init__.py +114 -0
- webull/core/vendored/requests/packages/urllib3/_collections.py +346 -0
- webull/core/vendored/requests/packages/urllib3/connection.py +405 -0
- webull/core/vendored/requests/packages/urllib3/connectionpool.py +910 -0
- webull/core/vendored/requests/packages/urllib3/contrib/__init__.py +0 -0
- webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +44 -0
- webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/__init__.py +0 -0
- webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +607 -0
- webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +360 -0
- webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +303 -0
- webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +125 -0
- webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +484 -0
- webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +818 -0
- webull/core/vendored/requests/packages/urllib3/contrib/socks.py +206 -0
- webull/core/vendored/requests/packages/urllib3/exceptions.py +260 -0
- webull/core/vendored/requests/packages/urllib3/fields.py +192 -0
- webull/core/vendored/requests/packages/urllib3/filepost.py +112 -0
- webull/core/vendored/requests/packages/urllib3/packages/__init__.py +19 -0
- webull/core/vendored/requests/packages/urllib3/packages/backports/__init__.py +0 -0
- webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +67 -0
- webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +273 -0
- webull/core/vendored/requests/packages/urllib3/packages/six.py +882 -0
- webull/core/vendored/requests/packages/urllib3/packages/socks.py +887 -0
- webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +19 -0
- webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +170 -0
- webull/core/vendored/requests/packages/urllib3/poolmanager.py +467 -0
- webull/core/vendored/requests/packages/urllib3/request.py +164 -0
- webull/core/vendored/requests/packages/urllib3/response.py +721 -0
- webull/core/vendored/requests/packages/urllib3/util/__init__.py +68 -0
- webull/core/vendored/requests/packages/urllib3/util/connection.py +148 -0
- webull/core/vendored/requests/packages/urllib3/util/queue.py +35 -0
- webull/core/vendored/requests/packages/urllib3/util/request.py +132 -0
- webull/core/vendored/requests/packages/urllib3/util/response.py +101 -0
- webull/core/vendored/requests/packages/urllib3/util/retry.py +426 -0
- webull/core/vendored/requests/packages/urllib3/util/selectors.py +601 -0
- webull/core/vendored/requests/packages/urllib3/util/ssl_.py +396 -0
- webull/core/vendored/requests/packages/urllib3/util/timeout.py +256 -0
- webull/core/vendored/requests/packages/urllib3/util/url.py +252 -0
- webull/core/vendored/requests/packages/urllib3/util/wait.py +164 -0
- webull/core/vendored/requests/packages.py +28 -0
- webull/core/vendored/requests/sessions.py +750 -0
- webull/core/vendored/requests/status_codes.py +105 -0
- webull/core/vendored/requests/structures.py +119 -0
- webull/core/vendored/requests/utils.py +916 -0
- webull/core/vendored/six.py +905 -0
- webull/data/__init__.py +3 -0
- webull/data/common/__init__.py +0 -0
- webull/data/common/category.py +26 -0
- webull/data/common/connect_ack.py +29 -0
- webull/data/common/direction.py +25 -0
- webull/data/common/exchange_code.py +33 -0
- webull/data/common/exercise_style.py +22 -0
- webull/data/common/expiration_cycle.py +26 -0
- webull/data/common/instrument_status.py +23 -0
- webull/data/common/option_type.py +20 -0
- webull/data/common/subscribe_type.py +22 -0
- webull/data/common/timespan.py +29 -0
- webull/data/data_client.py +35 -0
- webull/data/data_streaming_client.py +89 -0
- webull/data/internal/__init__.py +0 -0
- webull/data/internal/default_retry_policy.py +84 -0
- webull/data/internal/exceptions.py +60 -0
- webull/data/internal/quotes_client.py +314 -0
- webull/data/internal/quotes_decoder.py +40 -0
- webull/data/internal/quotes_payload_decoder.py +35 -0
- webull/data/internal/quotes_topic.py +36 -0
- webull/data/quotes/__init__.py +0 -0
- webull/data/quotes/instrument.py +33 -0
- webull/data/quotes/market_data.py +187 -0
- webull/data/quotes/market_streaming_data.py +66 -0
- webull/data/quotes/subscribe/__init__.py +0 -0
- webull/data/quotes/subscribe/ask_bid_result.py +49 -0
- webull/data/quotes/subscribe/basic_result.py +45 -0
- webull/data/quotes/subscribe/broker_result.py +33 -0
- webull/data/quotes/subscribe/message_pb2.py +37 -0
- webull/data/quotes/subscribe/order_result.py +30 -0
- webull/data/quotes/subscribe/payload_type.py +19 -0
- webull/data/quotes/subscribe/quote_decoder.py +28 -0
- webull/data/quotes/subscribe/quote_result.py +47 -0
- webull/data/quotes/subscribe/snapshot_decoder.py +30 -0
- webull/data/quotes/subscribe/snapshot_result.py +69 -0
- webull/data/quotes/subscribe/tick_decoder.py +29 -0
- webull/data/quotes/subscribe/tick_result.py +47 -0
- webull/data/request/__init__.py +0 -0
- webull/data/request/get_batch_historical_bars_request.py +43 -0
- webull/data/request/get_corp_action_request.py +47 -0
- webull/data/request/get_eod_bars_request.py +32 -0
- webull/data/request/get_historical_bars_request.py +43 -0
- webull/data/request/get_instruments_request.py +30 -0
- webull/data/request/get_quotes_request.py +35 -0
- webull/data/request/get_snapshot_request.py +38 -0
- webull/data/request/get_tick_request.py +37 -0
- webull/data/request/subscribe_request.py +43 -0
- webull/data/request/unsubscribe_request.py +42 -0
- webull/trade/__init__.py +2 -0
- webull/trade/common/__init__.py +0 -0
- webull/trade/common/account_type.py +22 -0
- webull/trade/common/category.py +29 -0
- webull/trade/common/combo_ticker_type.py +23 -0
- webull/trade/common/combo_type.py +31 -0
- webull/trade/common/currency.py +24 -0
- webull/trade/common/forbid_reason.py +27 -0
- webull/trade/common/instrument_type.py +27 -0
- webull/trade/common/markets.py +27 -0
- webull/trade/common/order_entrust_type.py +21 -0
- webull/trade/common/order_side.py +23 -0
- webull/trade/common/order_status.py +25 -0
- webull/trade/common/order_tif.py +24 -0
- webull/trade/common/order_type.py +30 -0
- webull/trade/common/trade_policy.py +22 -0
- webull/trade/common/trading_date_type.py +24 -0
- webull/trade/common/trailing_type.py +23 -0
- webull/trade/events/__init__.py +0 -0
- webull/trade/events/default_retry_policy.py +64 -0
- webull/trade/events/events_pb2.py +43 -0
- webull/trade/events/events_pb2_grpc.py +66 -0
- webull/trade/events/signature_composer.py +61 -0
- webull/trade/events/types.py +21 -0
- webull/trade/request/__init__.py +0 -0
- webull/trade/request/cancel_order_request.py +28 -0
- webull/trade/request/get_account_balance_request.py +28 -0
- webull/trade/request/get_account_positions_request.py +30 -0
- webull/trade/request/get_account_profile_request.py +26 -0
- webull/trade/request/get_app_subscriptions.py +28 -0
- webull/trade/request/get_open_orders_request.py +30 -0
- webull/trade/request/get_order_detail_request.py +27 -0
- webull/trade/request/get_today_orders_request.py +31 -0
- webull/trade/request/get_trade_calendar_request.py +30 -0
- webull/trade/request/get_trade_instrument_detail_request.py +24 -0
- webull/trade/request/get_trade_security_detail_request.py +42 -0
- webull/trade/request/get_tradeable_instruments_request.py +27 -0
- webull/trade/request/palce_order_request.py +91 -0
- webull/trade/request/place_order_request_v2.py +58 -0
- webull/trade/request/replace_order_request.py +73 -0
- webull/trade/request/replace_order_request_v2.py +38 -0
- webull/trade/request/v2/__init__.py +0 -0
- webull/trade/request/v2/cancel_option_request.py +28 -0
- webull/trade/request/v2/cancel_order_request.py +28 -0
- webull/trade/request/v2/get_account_balance_request.py +28 -0
- webull/trade/request/v2/get_account_list.py +23 -0
- webull/trade/request/v2/get_account_positions_request.py +24 -0
- webull/trade/request/v2/get_order_detail_request.py +26 -0
- webull/trade/request/v2/get_order_history_request.py +35 -0
- webull/trade/request/v2/palce_order_request.py +87 -0
- webull/trade/request/v2/place_option_request.py +64 -0
- webull/trade/request/v2/preview_option_request.py +28 -0
- webull/trade/request/v2/preview_order_request.py +59 -0
- webull/trade/request/v2/replace_option_request.py +28 -0
- webull/trade/request/v2/replace_order_request.py +57 -0
- webull/trade/trade/__init__.py +0 -0
- webull/trade/trade/account_info.py +83 -0
- webull/trade/trade/order_operation.py +246 -0
- webull/trade/trade/trade_calendar.py +37 -0
- webull/trade/trade/trade_instrument.py +72 -0
- webull/trade/trade/v2/__init__.py +0 -0
- webull/trade/trade/v2/account_info_v2.py +55 -0
- webull/trade/trade/v2/order_operation_v2.py +206 -0
- webull/trade/trade_client.py +43 -0
- webull/trade/trade_events_client.py +233 -0
- webull_openapi_python_sdk-1.0.0.dist-info/METADATA +28 -0
- webull_openapi_python_sdk-1.0.0.dist-info/RECORD +295 -0
- webull_openapi_python_sdk-1.0.0.dist-info/WHEEL +5 -0
- webull_openapi_python_sdk-1.0.0.dist-info/licenses/LICENSE +202 -0
- webull_openapi_python_sdk-1.0.0.dist-info/licenses/NOTICE +56 -0
- webull_openapi_python_sdk-1.0.0.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,105 @@
|
|
|
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 .structures import LookupDict
|
|
18
|
+
|
|
19
|
+
_codes = {
|
|
20
|
+
|
|
21
|
+
# Informational.
|
|
22
|
+
100: ('continue',),
|
|
23
|
+
101: ('switching_protocols',),
|
|
24
|
+
102: ('processing',),
|
|
25
|
+
103: ('checkpoint',),
|
|
26
|
+
122: ('uri_too_long', 'request_uri_too_long'),
|
|
27
|
+
200: ('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '✓'),
|
|
28
|
+
201: ('created',),
|
|
29
|
+
202: ('accepted',),
|
|
30
|
+
203: ('non_authoritative_info', 'non_authoritative_information'),
|
|
31
|
+
204: ('no_content',),
|
|
32
|
+
205: ('reset_content', 'reset'),
|
|
33
|
+
206: ('partial_content', 'partial'),
|
|
34
|
+
207: ('multi_status', 'multiple_status', 'multi_stati', 'multiple_stati'),
|
|
35
|
+
208: ('already_reported',),
|
|
36
|
+
226: ('im_used',),
|
|
37
|
+
|
|
38
|
+
# Redirection.
|
|
39
|
+
300: ('multiple_choices',),
|
|
40
|
+
301: ('moved_permanently', 'moved', '\\o-'),
|
|
41
|
+
302: ('found',),
|
|
42
|
+
303: ('see_other', 'other'),
|
|
43
|
+
304: ('not_modified',),
|
|
44
|
+
305: ('use_proxy',),
|
|
45
|
+
306: ('switch_proxy',),
|
|
46
|
+
307: ('temporary_redirect', 'temporary_moved', 'temporary'),
|
|
47
|
+
308: ('permanent_redirect',
|
|
48
|
+
'resume_incomplete', 'resume',), # These 2 to be removed in 3.0
|
|
49
|
+
|
|
50
|
+
# Client Error.
|
|
51
|
+
400: ('bad_request', 'bad'),
|
|
52
|
+
401: ('unauthorized',),
|
|
53
|
+
402: ('payment_required', 'payment'),
|
|
54
|
+
403: ('forbidden',),
|
|
55
|
+
404: ('not_found', '-o-'),
|
|
56
|
+
405: ('method_not_allowed', 'not_allowed'),
|
|
57
|
+
406: ('not_acceptable',),
|
|
58
|
+
407: ('proxy_authentication_required', 'proxy_auth', 'proxy_authentication'),
|
|
59
|
+
408: ('request_timeout', 'timeout'),
|
|
60
|
+
409: ('conflict',),
|
|
61
|
+
410: ('gone',),
|
|
62
|
+
411: ('length_required',),
|
|
63
|
+
412: ('precondition_failed', 'precondition'),
|
|
64
|
+
413: ('request_entity_too_large',),
|
|
65
|
+
414: ('request_uri_too_large',),
|
|
66
|
+
415: ('unsupported_media_type', 'unsupported_media', 'media_type'),
|
|
67
|
+
416: ('requested_range_not_satisfiable', 'requested_range', 'range_not_satisfiable'),
|
|
68
|
+
417: ('expectation_failed',),
|
|
69
|
+
418: ('im_a_teapot', 'teapot', 'i_am_a_teapot'),
|
|
70
|
+
421: ('misdirected_request',),
|
|
71
|
+
422: ('unprocessable_entity', 'unprocessable'),
|
|
72
|
+
423: ('locked',),
|
|
73
|
+
424: ('failed_dependency', 'dependency'),
|
|
74
|
+
425: ('unordered_collection', 'unordered'),
|
|
75
|
+
426: ('upgrade_required', 'upgrade'),
|
|
76
|
+
428: ('precondition_required', 'precondition'),
|
|
77
|
+
429: ('too_many_requests', 'too_many'),
|
|
78
|
+
431: ('header_fields_too_large', 'fields_too_large'),
|
|
79
|
+
444: ('no_response', 'none'),
|
|
80
|
+
449: ('retry_with', 'retry'),
|
|
81
|
+
450: ('blocked_by_windows_parental_controls', 'parental_controls'),
|
|
82
|
+
451: ('unavailable_for_legal_reasons', 'legal_reasons'),
|
|
83
|
+
499: ('client_closed_request',),
|
|
84
|
+
|
|
85
|
+
# Server Error.
|
|
86
|
+
500: ('internal_server_error', 'server_error', '/o\\', '✗'),
|
|
87
|
+
501: ('not_implemented',),
|
|
88
|
+
502: ('bad_gateway',),
|
|
89
|
+
503: ('service_unavailable', 'unavailable'),
|
|
90
|
+
504: ('gateway_timeout',),
|
|
91
|
+
505: ('http_version_not_supported', 'http_version'),
|
|
92
|
+
506: ('variant_also_negotiates',),
|
|
93
|
+
507: ('insufficient_storage',),
|
|
94
|
+
509: ('bandwidth_limit_exceeded', 'bandwidth'),
|
|
95
|
+
510: ('not_extended',),
|
|
96
|
+
511: ('network_authentication_required', 'network_auth', 'network_authentication'),
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
codes = LookupDict(name='status_codes')
|
|
100
|
+
|
|
101
|
+
for code, titles in _codes.items():
|
|
102
|
+
for title in titles:
|
|
103
|
+
setattr(codes, title, code)
|
|
104
|
+
if not title.startswith(('\\', '/')):
|
|
105
|
+
setattr(codes, title.upper(), code)
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
"""
|
|
18
|
+
requests.structures
|
|
19
|
+
~~~~~~~~~~~~~~~~~~~
|
|
20
|
+
|
|
21
|
+
Data structures that power Requests.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from .compat import OrderedDict, Mapping, MutableMapping
|
|
25
|
+
|
|
26
|
+
from .compat import OrderedDict
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class CaseInsensitiveDict(MutableMapping):
|
|
30
|
+
"""A case-insensitive ``dict``-like object.
|
|
31
|
+
|
|
32
|
+
Implements all methods and operations of
|
|
33
|
+
``MutableMapping`` as well as dict's ``copy``. Also
|
|
34
|
+
provides ``lower_items``.
|
|
35
|
+
|
|
36
|
+
All keys are expected to be strings. The structure remembers the
|
|
37
|
+
case of the last key to be set, and ``iter(instance)``,
|
|
38
|
+
``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()``
|
|
39
|
+
will contain case-sensitive keys. However, querying and contains
|
|
40
|
+
testing is case insensitive::
|
|
41
|
+
|
|
42
|
+
cid = CaseInsensitiveDict()
|
|
43
|
+
cid['Accept'] = 'application/json'
|
|
44
|
+
cid['aCCEPT'] == 'application/json' # True
|
|
45
|
+
list(cid) == ['Accept'] # True
|
|
46
|
+
|
|
47
|
+
For example, ``headers['content-encoding']`` will return the
|
|
48
|
+
value of a ``'Content-Encoding'`` response header, regardless
|
|
49
|
+
of how the header name was originally stored.
|
|
50
|
+
|
|
51
|
+
If the constructor, ``.update``, or equality comparison
|
|
52
|
+
operations are given keys that have equal ``.lower()``s, the
|
|
53
|
+
behavior is undefined.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
def __init__(self, data=None, **kwargs):
|
|
57
|
+
self._store = OrderedDict()
|
|
58
|
+
if data is None:
|
|
59
|
+
data = {}
|
|
60
|
+
self.update(data, **kwargs)
|
|
61
|
+
|
|
62
|
+
def __setitem__(self, key, value):
|
|
63
|
+
# Use the lowercased key for lookups, but store the actual
|
|
64
|
+
# key alongside the value.
|
|
65
|
+
self._store[key.lower()] = (key, value)
|
|
66
|
+
|
|
67
|
+
def __getitem__(self, key):
|
|
68
|
+
return self._store[key.lower()][1]
|
|
69
|
+
|
|
70
|
+
def __delitem__(self, key):
|
|
71
|
+
del self._store[key.lower()]
|
|
72
|
+
|
|
73
|
+
def __iter__(self):
|
|
74
|
+
return (casedkey for casedkey, mappedvalue in self._store.values())
|
|
75
|
+
|
|
76
|
+
def __len__(self):
|
|
77
|
+
return len(self._store)
|
|
78
|
+
|
|
79
|
+
def lower_items(self):
|
|
80
|
+
"""Like iteritems(), but with all lowercase keys."""
|
|
81
|
+
return (
|
|
82
|
+
(lowerkey, keyval[1])
|
|
83
|
+
for (lowerkey, keyval)
|
|
84
|
+
in self._store.items()
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
def __eq__(self, other):
|
|
88
|
+
if isinstance(other, Mapping):
|
|
89
|
+
other = CaseInsensitiveDict(other)
|
|
90
|
+
else:
|
|
91
|
+
return NotImplemented
|
|
92
|
+
# Compare insensitively
|
|
93
|
+
return dict(self.lower_items()) == dict(other.lower_items())
|
|
94
|
+
|
|
95
|
+
# Copy is required
|
|
96
|
+
def copy(self):
|
|
97
|
+
return CaseInsensitiveDict(self._store.values())
|
|
98
|
+
|
|
99
|
+
def __repr__(self):
|
|
100
|
+
return str(dict(self.items()))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class LookupDict(dict):
|
|
104
|
+
"""Dictionary lookup object."""
|
|
105
|
+
|
|
106
|
+
def __init__(self, name=None):
|
|
107
|
+
self.name = name
|
|
108
|
+
super(LookupDict, self).__init__()
|
|
109
|
+
|
|
110
|
+
def __repr__(self):
|
|
111
|
+
return '<lookup \'%s\'>' % (self.name)
|
|
112
|
+
|
|
113
|
+
def __getitem__(self, key):
|
|
114
|
+
# We allow fall-through here, so values default to None
|
|
115
|
+
|
|
116
|
+
return self.__dict__.get(key, None)
|
|
117
|
+
|
|
118
|
+
def get(self, key, default=None):
|
|
119
|
+
return self.__dict__.get(key, default)
|