axdata 0.1.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.
- axdata/__init__.py +16 -0
- axdata/cache.py +19 -0
- axdata/client.py +1223 -0
- axdata-0.1.0.dist-info/METADATA +238 -0
- axdata-0.1.0.dist-info/RECORD +427 -0
- axdata-0.1.0.dist-info/WHEEL +5 -0
- axdata-0.1.0.dist-info/entry_points.txt +8 -0
- axdata-0.1.0.dist-info/licenses/LICENSE +162 -0
- axdata-0.1.0.dist-info/top_level.txt +6 -0
- axdata_core/__init__.py +221 -0
- axdata_core/_tdx_wire/__init__.py +35 -0
- axdata_core/_tdx_wire/_shim.py +140 -0
- axdata_core/_tdx_wire/api/__init__.py +51 -0
- axdata_core/_tdx_wire/api/auction.py +24 -0
- axdata_core/_tdx_wire/api/bars.py +24 -0
- axdata_core/_tdx_wire/api/base.py +26 -0
- axdata_core/_tdx_wire/api/codes.py +25 -0
- axdata_core/_tdx_wire/api/corporate.py +24 -0
- axdata_core/_tdx_wire/api/finance.py +24 -0
- axdata_core/_tdx_wire/api/intraday.py +24 -0
- axdata_core/_tdx_wire/api/quotes.py +26 -0
- axdata_core/_tdx_wire/api/resources.py +25 -0
- axdata_core/_tdx_wire/api/session.py +24 -0
- axdata_core/_tdx_wire/api/trades.py +24 -0
- axdata_core/_tdx_wire/client.py +33 -0
- axdata_core/_tdx_wire/exceptions.py +27 -0
- axdata_core/_tdx_wire/hosts.py +106 -0
- axdata_core/_tdx_wire/models/__init__.py +93 -0
- axdata_core/_tdx_wire/models/auction.py +26 -0
- axdata_core/_tdx_wire/models/corporate.py +27 -0
- axdata_core/_tdx_wire/models/finance.py +26 -0
- axdata_core/_tdx_wire/models/intraday.py +31 -0
- axdata_core/_tdx_wire/models/kline.py +27 -0
- axdata_core/_tdx_wire/models/quote.py +32 -0
- axdata_core/_tdx_wire/models/resource.py +24 -0
- axdata_core/_tdx_wire/models/security.py +24 -0
- axdata_core/_tdx_wire/models/session.py +27 -0
- axdata_core/_tdx_wire/models/subchart.py +25 -0
- axdata_core/_tdx_wire/models/trade.py +28 -0
- axdata_core/_tdx_wire/protocol/__init__.py +49 -0
- axdata_core/_tdx_wire/protocol/commands/__init__.py +43 -0
- axdata_core/_tdx_wire/protocol/commands/auction.py +110 -0
- axdata_core/_tdx_wire/protocol/commands/codec.py +43 -0
- axdata_core/_tdx_wire/protocol/commands/corporate.py +98 -0
- axdata_core/_tdx_wire/protocol/commands/finance.py +96 -0
- axdata_core/_tdx_wire/protocol/commands/intraday.py +122 -0
- axdata_core/_tdx_wire/protocol/commands/klines.py +102 -0
- axdata_core/_tdx_wire/protocol/commands/lookup.py +36 -0
- axdata_core/_tdx_wire/protocol/commands/price_limits.py +89 -0
- axdata_core/_tdx_wire/protocol/commands/quotes.py +102 -0
- axdata_core/_tdx_wire/protocol/commands/registry.py +36 -0
- axdata_core/_tdx_wire/protocol/commands/resources.py +99 -0
- axdata_core/_tdx_wire/protocol/commands/security.py +103 -0
- axdata_core/_tdx_wire/protocol/commands/session.py +82 -0
- axdata_core/_tdx_wire/protocol/commands/subchart.py +97 -0
- axdata_core/_tdx_wire/protocol/commands/trades.py +107 -0
- axdata_core/_tdx_wire/protocol/constants.py +124 -0
- axdata_core/_tdx_wire/protocol/frame.py +68 -0
- axdata_core/_tdx_wire/protocol/unit.py +85 -0
- axdata_core/_tdx_wire/py.typed +1 -0
- axdata_core/_tdx_wire/transport/__init__.py +34 -0
- axdata_core/_tdx_wire/transport/base.py +25 -0
- axdata_core/_tdx_wire/transport/memory.py +24 -0
- axdata_core/_tdx_wire/transport/pool.py +32 -0
- axdata_core/_tdx_wire/transport/socket.py +39 -0
- axdata_core/adapters/__init__.py +0 -0
- axdata_core/adapters/cls/__init__.py +17 -0
- axdata_core/adapters/cls/provider_bridge.py +23 -0
- axdata_core/adapters/cls/request.py +632 -0
- axdata_core/adapters/cls/source_adapter_registry.py +31 -0
- axdata_core/adapters/cninfo/__init__.py +17 -0
- axdata_core/adapters/cninfo/provider_bridge.py +25 -0
- axdata_core/adapters/cninfo/request.py +2425 -0
- axdata_core/adapters/cninfo/source_adapter_registry.py +42 -0
- axdata_core/adapters/eastmoney/__init__.py +17 -0
- axdata_core/adapters/eastmoney/provider_bridge.py +25 -0
- axdata_core/adapters/eastmoney/request.py +1128 -0
- axdata_core/adapters/eastmoney/source_adapter_registry.py +42 -0
- axdata_core/adapters/exchange/__init__.py +17 -0
- axdata_core/adapters/exchange/provider_bridge.py +25 -0
- axdata_core/adapters/exchange/request.py +1214 -0
- axdata_core/adapters/exchange/source_adapter_registry.py +42 -0
- axdata_core/adapters/kph/__init__.py +17 -0
- axdata_core/adapters/kph/provider_bridge.py +23 -0
- axdata_core/adapters/kph/request.py +509 -0
- axdata_core/adapters/kph/source_adapter_registry.py +31 -0
- axdata_core/adapters/sina/__init__.py +17 -0
- axdata_core/adapters/sina/provider_bridge.py +25 -0
- axdata_core/adapters/sina/request.py +5155 -0
- axdata_core/adapters/sina/source_adapter_registry.py +42 -0
- axdata_core/adapters/tdx/__init__.py +32 -0
- axdata_core/adapters/tdx/adjustment.py +50 -0
- axdata_core/adapters/tdx/adjustment_fetch.py +51 -0
- axdata_core/adapters/tdx/auction_fetch.py +51 -0
- axdata_core/adapters/tdx/client_factory.py +110 -0
- axdata_core/adapters/tdx/code_fetch.py +62 -0
- axdata_core/adapters/tdx/codes.py +54 -0
- axdata_core/adapters/tdx/derived_rows.py +69 -0
- axdata_core/adapters/tdx/downloader.py +193 -0
- axdata_core/adapters/tdx/downloader_interface_sets.py +50 -0
- axdata_core/adapters/tdx/downloader_profiles.py +43 -0
- axdata_core/adapters/tdx/downloader_registry.py +115 -0
- axdata_core/adapters/tdx/execution_utils.py +55 -0
- axdata_core/adapters/tdx/f10_executor.py +57 -0
- axdata_core/adapters/tdx/f10_normalize.py +61 -0
- axdata_core/adapters/tdx/f10_params.py +57 -0
- axdata_core/adapters/tdx/f10_postprocess.py +67 -0
- axdata_core/adapters/tdx/f10_render.py +48 -0
- axdata_core/adapters/tdx/f10_request.py +62 -0
- axdata_core/adapters/tdx/finance_fetch.py +61 -0
- axdata_core/adapters/tdx/finance_maps.py +54 -0
- axdata_core/adapters/tdx/finance_normalize.py +57 -0
- axdata_core/adapters/tdx/host_config.py +115 -0
- axdata_core/adapters/tdx/interface_sets.py +50 -0
- axdata_core/adapters/tdx/intraday_fetch.py +68 -0
- axdata_core/adapters/tdx/kline_helpers.py +58 -0
- axdata_core/adapters/tdx/limit_ladder_fetch.py +60 -0
- axdata_core/adapters/tdx/limit_ladder_topics.py +53 -0
- axdata_core/adapters/tdx/normalize_utils.py +75 -0
- axdata_core/adapters/tdx/options.py +61 -0
- axdata_core/adapters/tdx/price_limit_calendar.py +49 -0
- axdata_core/adapters/tdx/price_limit_fetch.py +53 -0
- axdata_core/adapters/tdx/price_limit_history.py +50 -0
- axdata_core/adapters/tdx/price_limits.py +58 -0
- axdata_core/adapters/tdx/provider_bridge.py +68 -0
- axdata_core/adapters/tdx/quote_fetch.py +61 -0
- axdata_core/adapters/tdx/quote_identity.py +49 -0
- axdata_core/adapters/tdx/rank_fetch.py +55 -0
- axdata_core/adapters/tdx/rank_params.py +52 -0
- axdata_core/adapters/tdx/realtime_refresh.py +45 -0
- axdata_core/adapters/tdx/request.py +11 -0
- axdata_core/adapters/tdx/request_adapter_runtime.py +41 -0
- axdata_core/adapters/tdx/request_client.py +51 -0
- axdata_core/adapters/tdx/request_compat.py +89 -0
- axdata_core/adapters/tdx/request_dispatch.py +50 -0
- axdata_core/adapters/tdx/request_filters.py +60 -0
- axdata_core/adapters/tdx/request_host_config.py +110 -0
- axdata_core/adapters/tdx/request_limits.py +59 -0
- axdata_core/adapters/tdx/request_methods.py +41 -0
- axdata_core/adapters/tdx/request_params.py +62 -0
- axdata_core/adapters/tdx/request_seams.py +41 -0
- axdata_core/adapters/tdx/resources/__init__.py +0 -0
- axdata_core/adapters/tdx/resources/finance_maps/__init__.py +0 -0
- axdata_core/adapters/tdx/resources/finance_maps/incon.dat +3702 -0
- axdata_core/adapters/tdx/resources/finance_maps/tdxhy.cfg +5620 -0
- axdata_core/adapters/tdx/resources/finance_maps/tdxzs.cfg +605 -0
- axdata_core/adapters/tdx/security_codes.py +54 -0
- axdata_core/adapters/tdx/series_history.py +57 -0
- axdata_core/adapters/tdx/server_cache.py +58 -0
- axdata_core/adapters/tdx/snapshot_normalize.py +56 -0
- axdata_core/adapters/tdx/source_adapter_registry.py +69 -0
- axdata_core/adapters/tdx/source_execution.py +44 -0
- axdata_core/adapters/tdx/source_execution_registry.py +70 -0
- axdata_core/adapters/tdx/stats_cache.py +184 -0
- axdata_core/adapters/tdx/stats_models.py +159 -0
- axdata_core/adapters/tdx/stats_resource.py +304 -0
- axdata_core/adapters/tdx/status_fetch.py +55 -0
- axdata_core/adapters/tdx/time_series_normalize.py +67 -0
- axdata_core/adapters/tdx/tqlex.py +50 -0
- axdata_core/adapters/tdx/wire_requests.py +60 -0
- axdata_core/adapters/tdx_ext/__init__.py +66 -0
- axdata_core/adapters/tdx_ext/client.py +688 -0
- axdata_core/adapters/tdx_ext/exceptions.py +51 -0
- axdata_core/adapters/tdx_ext/host_config.py +40 -0
- axdata_core/adapters/tdx_ext/interface_sets.py +65 -0
- axdata_core/adapters/tdx_ext/local_cache.py +649 -0
- axdata_core/adapters/tdx_ext/models.py +96 -0
- axdata_core/adapters/tdx_ext/options.py +36 -0
- axdata_core/adapters/tdx_ext/pool.py +153 -0
- axdata_core/adapters/tdx_ext/provider_bridge.py +35 -0
- axdata_core/adapters/tdx_ext/request.py +498 -0
- axdata_core/adapters/tdx_ext/request_execution.py +118 -0
- axdata_core/adapters/tdx_ext/request_instruments.py +221 -0
- axdata_core/adapters/tdx_ext/request_normalize.py +356 -0
- axdata_core/adapters/tdx_ext/request_params.py +157 -0
- axdata_core/adapters/tdx_ext/request_series.py +98 -0
- axdata_core/adapters/tdx_ext/server_cache.py +13 -0
- axdata_core/adapters/tdx_ext/servers.py +35 -0
- axdata_core/adapters/tdx_ext/source_adapter_registry.py +42 -0
- axdata_core/adapters/tdx_ext/source_execution.py +19 -0
- axdata_core/adapters/tdx_ext/source_execution_registry.py +43 -0
- axdata_core/adapters/tencent/__init__.py +17 -0
- axdata_core/adapters/tencent/provider_bridge.py +25 -0
- axdata_core/adapters/tencent/request.py +729 -0
- axdata_core/adapters/tencent/source_adapter_registry.py +42 -0
- axdata_core/axp.py +1843 -0
- axdata_core/builtin_providers.py +586 -0
- axdata_core/builtin_source_declarations.py +156 -0
- axdata_core/cli.py +1818 -0
- axdata_core/collector_registry.py +227 -0
- axdata_core/collector_runner.py +1016 -0
- axdata_core/collector_scheduler.py +3155 -0
- axdata_core/collector_templates.py +339 -0
- axdata_core/data_browser.py +1696 -0
- axdata_core/diagnostics.py +734 -0
- axdata_core/downloader_engine.py +1480 -0
- axdata_core/downloader_registry.py +62 -0
- axdata_core/downloaders.py +1619 -0
- axdata_core/legacy_provider_adapter.py +68 -0
- axdata_core/paths.py +51 -0
- axdata_core/plugin_config.py +272 -0
- axdata_core/plugin_status.py +419 -0
- axdata_core/plugins.py +1363 -0
- axdata_core/provider_catalog.py +462 -0
- axdata_core/provider_registry.py +833 -0
- axdata_core/quality.py +86 -0
- axdata_core/query.py +242 -0
- axdata_core/resources/__init__.py +2 -0
- axdata_core/resources/tdx_extended_servers.json +22 -0
- axdata_core/resources/tdx_quote_servers.json +49 -0
- axdata_core/sample_collectors.py +42 -0
- axdata_core/schema.py +385 -0
- axdata_core/source_adapter_factory.py +95 -0
- axdata_core/source_adapter_options.py +18 -0
- axdata_core/source_errors.py +43 -0
- axdata_core/source_execution_options.py +37 -0
- axdata_core/source_execution_registry.py +27 -0
- axdata_core/source_projection.py +21 -0
- axdata_core/source_request.py +441 -0
- axdata_core/source_session.py +355 -0
- axdata_core/sources/__init__.py +40 -0
- axdata_core/sources/base.py +112 -0
- axdata_core/sources/catalog.py +60 -0
- axdata_core/sources/cls/__init__.py +5 -0
- axdata_core/sources/cls/catalog.py +231 -0
- axdata_core/sources/cninfo/__init__.py +5 -0
- axdata_core/sources/cninfo/catalog.py +1994 -0
- axdata_core/sources/display_docs.py +139 -0
- axdata_core/sources/eastmoney/__init__.py +5 -0
- axdata_core/sources/eastmoney/catalog.py +509 -0
- axdata_core/sources/exchange/__init__.py +5 -0
- axdata_core/sources/exchange/catalog.py +361 -0
- axdata_core/sources/kph/__init__.py +5 -0
- axdata_core/sources/kph/catalog.py +255 -0
- axdata_core/sources/sina/__init__.py +5 -0
- axdata_core/sources/sina/catalog.py +2951 -0
- axdata_core/sources/tdx/__init__.py +5 -0
- axdata_core/sources/tdx/catalog.py +4546 -0
- axdata_core/sources/tdx_ext/__init__.py +5 -0
- axdata_core/sources/tdx_ext/catalog.py +1518 -0
- axdata_core/sources/tencent/__init__.py +5 -0
- axdata_core/sources/tencent/catalog.py +370 -0
- axdata_core/storage.py +186 -0
- axdata_core/tdx_f10_catalog.py +52 -0
- axdata_core/tdx_f10_models.py +50 -0
- axdata_core/tdx_f10_names.py +47 -0
- axdata_core/tdx_f10_specs.py +56 -0
- axdata_core/tdx_plugin_required.py +43 -0
- axdata_core/tdx_server_config.py +65 -0
- axdata_core/trade_calendar_cache.py +397 -0
- axdata_source_cninfo/__init__.py +15 -0
- axdata_source_cninfo/adapter.py +31 -0
- axdata_source_cninfo/axdata-provider.json +384 -0
- axdata_source_cninfo/catalog.py +209 -0
- axdata_source_cninfo/metadata.py +8 -0
- axdata_source_cninfo/provider.py +41 -0
- axdata_source_tdx/__init__.py +15 -0
- axdata_source_tdx/_tdx_wire/__init__.py +26 -0
- axdata_source_tdx/_tdx_wire/_binary.py +218 -0
- axdata_source_tdx/_tdx_wire/_code_utils.py +42 -0
- axdata_source_tdx/_tdx_wire/_command_codec.py +186 -0
- axdata_source_tdx/_tdx_wire/_command_codes.py +74 -0
- axdata_source_tdx/_tdx_wire/_command_defaults.py +15 -0
- axdata_source_tdx/_tdx_wire/_command_dispatch.py +96 -0
- axdata_source_tdx/_tdx_wire/_command_layouts.py +96 -0
- axdata_source_tdx/_tdx_wire/_command_lookup.py +25 -0
- axdata_source_tdx/_tdx_wire/_command_metadata.py +32 -0
- axdata_source_tdx/_tdx_wire/_command_registry.py +61 -0
- axdata_source_tdx/_tdx_wire/_connection_defaults.py +13 -0
- axdata_source_tdx/_tdx_wire/_host_defaults.py +51 -0
- axdata_source_tdx/_tdx_wire/_host_probe.py +81 -0
- axdata_source_tdx/_tdx_wire/_host_resource.py +70 -0
- axdata_source_tdx/_tdx_wire/_host_utils.py +31 -0
- axdata_source_tdx/_tdx_wire/_market.py +66 -0
- axdata_source_tdx/_tdx_wire/_request_defaults.py +11 -0
- axdata_source_tdx/_tdx_wire/_security_classification.py +61 -0
- axdata_source_tdx/_tdx_wire/_time_utils.py +7 -0
- axdata_source_tdx/_tdx_wire/api/__init__.py +45 -0
- axdata_source_tdx/_tdx_wire/api/auction.py +25 -0
- axdata_source_tdx/_tdx_wire/api/bars.py +31 -0
- axdata_source_tdx/_tdx_wire/api/base.py +39 -0
- axdata_source_tdx/_tdx_wire/api/codes.py +25 -0
- axdata_source_tdx/_tdx_wire/api/corporate.py +11 -0
- axdata_source_tdx/_tdx_wire/api/finance.py +10 -0
- axdata_source_tdx/_tdx_wire/api/intraday.py +38 -0
- axdata_source_tdx/_tdx_wire/api/quotes.py +78 -0
- axdata_source_tdx/_tdx_wire/api/resources.py +34 -0
- axdata_source_tdx/_tdx_wire/api/session.py +16 -0
- axdata_source_tdx/_tdx_wire/api/trades.py +34 -0
- axdata_source_tdx/_tdx_wire/client.py +470 -0
- axdata_source_tdx/_tdx_wire/exceptions.py +25 -0
- axdata_source_tdx/_tdx_wire/hosts.py +27 -0
- axdata_source_tdx/_tdx_wire/models/__init__.py +87 -0
- axdata_source_tdx/_tdx_wire/models/auction.py +58 -0
- axdata_source_tdx/_tdx_wire/models/corporate.py +59 -0
- axdata_source_tdx/_tdx_wire/models/finance.py +80 -0
- axdata_source_tdx/_tdx_wire/models/intraday.py +112 -0
- axdata_source_tdx/_tdx_wire/models/kline.py +58 -0
- axdata_source_tdx/_tdx_wire/models/quote.py +262 -0
- axdata_source_tdx/_tdx_wire/models/resource.py +18 -0
- axdata_source_tdx/_tdx_wire/models/security.py +28 -0
- axdata_source_tdx/_tdx_wire/models/session.py +30 -0
- axdata_source_tdx/_tdx_wire/models/subchart.py +39 -0
- axdata_source_tdx/_tdx_wire/models/trade.py +46 -0
- axdata_source_tdx/_tdx_wire/protocol/__init__.py +43 -0
- axdata_source_tdx/_tdx_wire/protocol/_frame_constants.py +5 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/__init__.py +37 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/auction.py +165 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/codec.py +37 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/corporate.py +163 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/finance.py +180 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/intraday.py +382 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/klines.py +396 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/lookup.py +31 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/price_limits.py +110 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/quotes.py +804 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/registry.py +30 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/resources.py +107 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/security.py +163 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/session.py +129 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/subchart.py +182 -0
- axdata_source_tdx/_tdx_wire/protocol/commands/trades.py +275 -0
- axdata_source_tdx/_tdx_wire/protocol/constants.py +70 -0
- axdata_source_tdx/_tdx_wire/protocol/frame.py +141 -0
- axdata_source_tdx/_tdx_wire/protocol/unit.py +98 -0
- axdata_source_tdx/_tdx_wire/py.typed +1 -0
- axdata_source_tdx/_tdx_wire/transport/__init__.py +28 -0
- axdata_source_tdx/_tdx_wire/transport/base.py +21 -0
- axdata_source_tdx/_tdx_wire/transport/memory.py +42 -0
- axdata_source_tdx/_tdx_wire/transport/pool.py +148 -0
- axdata_source_tdx/_tdx_wire/transport/socket.py +373 -0
- axdata_source_tdx/adapter.py +31 -0
- axdata_source_tdx/adjustment.py +163 -0
- axdata_source_tdx/adjustment_fetch.py +148 -0
- axdata_source_tdx/auction_fetch.py +162 -0
- axdata_source_tdx/axdata-provider.json +23680 -0
- axdata_source_tdx/catalog.py +39 -0
- axdata_source_tdx/client_factory.py +61 -0
- axdata_source_tdx/code_fetch.py +579 -0
- axdata_source_tdx/codes.py +69 -0
- axdata_source_tdx/collectors.py +525 -0
- axdata_source_tdx/derived_rows.py +500 -0
- axdata_source_tdx/downloader.py +139 -0
- axdata_source_tdx/downloader_interface_sets.py +29 -0
- axdata_source_tdx/downloader_profiles.py +731 -0
- axdata_source_tdx/downloader_registry.py +85 -0
- axdata_source_tdx/execution_utils.py +141 -0
- axdata_source_tdx/f10_executor.py +414 -0
- axdata_source_tdx/f10_normalize.py +169 -0
- axdata_source_tdx/f10_params.py +221 -0
- axdata_source_tdx/f10_postprocess.py +405 -0
- axdata_source_tdx/f10_render.py +29 -0
- axdata_source_tdx/f10_request.py +365 -0
- axdata_source_tdx/finance_fetch.py +514 -0
- axdata_source_tdx/finance_maps.py +377 -0
- axdata_source_tdx/finance_normalize.py +273 -0
- axdata_source_tdx/host_config.py +51 -0
- axdata_source_tdx/interface_sets.py +180 -0
- axdata_source_tdx/intraday_fetch.py +600 -0
- axdata_source_tdx/kline_helpers.py +333 -0
- axdata_source_tdx/limit_ladder_fetch.py +614 -0
- axdata_source_tdx/limit_ladder_topics.py +280 -0
- axdata_source_tdx/metadata.py +8 -0
- axdata_source_tdx/normalize_utils.py +264 -0
- axdata_source_tdx/options.py +195 -0
- axdata_source_tdx/price_limit_calendar.py +106 -0
- axdata_source_tdx/price_limit_fetch.py +264 -0
- axdata_source_tdx/price_limit_history.py +100 -0
- axdata_source_tdx/price_limits.py +142 -0
- axdata_source_tdx/provider.py +44 -0
- axdata_source_tdx/provider_bridge.py +43 -0
- axdata_source_tdx/quote_fetch.py +485 -0
- axdata_source_tdx/quote_identity.py +50 -0
- axdata_source_tdx/rank_fetch.py +316 -0
- axdata_source_tdx/rank_params.py +181 -0
- axdata_source_tdx/realtime_refresh.py +51 -0
- axdata_source_tdx/request_adapter.py +533 -0
- axdata_source_tdx/request_adapter_runtime.py +302 -0
- axdata_source_tdx/request_client.py +98 -0
- axdata_source_tdx/request_compat.py +432 -0
- axdata_source_tdx/request_dispatch.py +138 -0
- axdata_source_tdx/request_entrypoints.py +146 -0
- axdata_source_tdx/request_filters.py +154 -0
- axdata_source_tdx/request_host_config.py +103 -0
- axdata_source_tdx/request_limits.py +15 -0
- axdata_source_tdx/request_methods.py +1910 -0
- axdata_source_tdx/request_params.py +225 -0
- axdata_source_tdx/request_seams.py +534 -0
- axdata_source_tdx/resources/__init__.py +0 -0
- axdata_source_tdx/resources/finance_maps/__init__.py +1 -0
- axdata_source_tdx/resources/finance_maps/incon.dat +3702 -0
- axdata_source_tdx/resources/finance_maps/tdxhy.cfg +5620 -0
- axdata_source_tdx/resources/finance_maps/tdxzs.cfg +605 -0
- axdata_source_tdx/resources/tdx_extended_servers.json +22 -0
- axdata_source_tdx/resources/tdx_quote_servers.json +49 -0
- axdata_source_tdx/security_codes.py +127 -0
- axdata_source_tdx/series_history.py +348 -0
- axdata_source_tdx/server_cache.py +21 -0
- axdata_source_tdx/snapshot_normalize.py +232 -0
- axdata_source_tdx/source_adapter_registry.py +42 -0
- axdata_source_tdx/source_execution.py +22 -0
- axdata_source_tdx/source_execution_registry.py +43 -0
- axdata_source_tdx/stats_cache.py +150 -0
- axdata_source_tdx/stats_models.py +161 -0
- axdata_source_tdx/stats_resource.py +242 -0
- axdata_source_tdx/status_fetch.py +209 -0
- axdata_source_tdx/tdx_f10_catalog.py +957 -0
- axdata_source_tdx/tdx_f10_models.py +47 -0
- axdata_source_tdx/tdx_f10_names.py +48 -0
- axdata_source_tdx/tdx_f10_specs.py +1142 -0
- axdata_source_tdx/tdx_server_config.py +389 -0
- axdata_source_tdx/time_series_normalize.py +370 -0
- axdata_source_tdx/tqlex.py +138 -0
- axdata_source_tdx/wire.py +32 -0
- axdata_source_tdx/wire_requests.py +190 -0
- axdata_source_tdx_ext/__init__.py +15 -0
- axdata_source_tdx_ext/adapter.py +31 -0
- axdata_source_tdx_ext/axdata-provider.json +9424 -0
- axdata_source_tdx_ext/catalog.py +33 -0
- axdata_source_tdx_ext/metadata.py +8 -0
- axdata_source_tdx_ext/provider.py +44 -0
- axdata_source_tencent/__init__.py +15 -0
- axdata_source_tencent/adapter.py +31 -0
- axdata_source_tencent/axdata-provider.json +291 -0
- axdata_source_tencent/catalog.py +190 -0
- axdata_source_tencent/metadata.py +8 -0
- axdata_source_tencent/provider.py +41 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Compatibility shim for axdata_core._tdx_wire.protocol.commands.price_limits.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
Lightweight command code/layout facts are exposed without loading the full
|
|
5
|
+
price-limit command parser; other legacy names still load provider-first on demand.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import struct
|
|
11
|
+
|
|
12
|
+
from ..._shim import load_provider_first, load_provider_first_cached
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire.protocol.commands.price_limits"
|
|
16
|
+
_PROVIDER_CODES_MODULE = "axdata_source_tdx._tdx_wire._command_codes"
|
|
17
|
+
_PROVIDER_LAYOUTS_MODULE = "axdata_source_tdx._tdx_wire._command_layouts"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
_codes_impl = None
|
|
21
|
+
_layout_impl = None
|
|
22
|
+
_command_impl = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _load_codes_impl():
|
|
26
|
+
return load_provider_first_cached(globals(), "_codes_impl", _PROVIDER_CODES_MODULE)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _load_layout_impl():
|
|
30
|
+
return load_provider_first_cached(
|
|
31
|
+
globals(),
|
|
32
|
+
"_layout_impl",
|
|
33
|
+
_PROVIDER_LAYOUTS_MODULE,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _command_codes() -> dict[str, int]:
|
|
38
|
+
command_codes = _load_codes_impl().COMMAND_CODES
|
|
39
|
+
globals()["COMMAND_CODES"] = command_codes
|
|
40
|
+
return command_codes
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _command_code(name: str) -> int:
|
|
44
|
+
return _load_codes_impl().command_code(name)
|
|
45
|
+
|
|
46
|
+
__all__ = [
|
|
47
|
+
"COMMAND_CODES",
|
|
48
|
+
"ID_TO_MARKET",
|
|
49
|
+
"PRICE_LIMIT_RECORD_SIZE",
|
|
50
|
+
"PriceLimitRecord",
|
|
51
|
+
"ProtocolError",
|
|
52
|
+
"RequestFrame",
|
|
53
|
+
"ResponseFrame",
|
|
54
|
+
"TYPE_PRICE_LIMITS",
|
|
55
|
+
"annotations",
|
|
56
|
+
"build_price_limits_frame",
|
|
57
|
+
"little_f32",
|
|
58
|
+
"little_u16",
|
|
59
|
+
"little_u32",
|
|
60
|
+
"parse_price_limits_payload",
|
|
61
|
+
"struct",
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _load_command_impl():
|
|
66
|
+
global _command_impl
|
|
67
|
+
if _command_impl is None:
|
|
68
|
+
_command_impl = load_provider_first(_PROVIDER_MODULE)
|
|
69
|
+
return _command_impl
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def __getattr__(name: str):
|
|
73
|
+
if name == "COMMAND_CODES":
|
|
74
|
+
return _command_codes()
|
|
75
|
+
if name == "PRICE_LIMIT_RECORD_SIZE":
|
|
76
|
+
value = _load_layout_impl().PRICE_LIMIT_RECORD_SIZE
|
|
77
|
+
elif name == "TYPE_PRICE_LIMITS":
|
|
78
|
+
value = _command_code("price_limits")
|
|
79
|
+
else:
|
|
80
|
+
if name.startswith("_"):
|
|
81
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
82
|
+
implementation = _load_command_impl()
|
|
83
|
+
value = getattr(implementation, name)
|
|
84
|
+
globals()[name] = value
|
|
85
|
+
return value
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def __dir__() -> list[str]:
|
|
89
|
+
return sorted(set(globals()) | set(__all__))
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"""Compatibility shim for axdata_core._tdx_wire.protocol.commands.quotes.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
Lightweight command code facts are exposed without loading the full quote
|
|
5
|
+
command parser; other legacy names still load provider-first on demand.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import struct
|
|
11
|
+
from collections.abc import Iterable, Sequence
|
|
12
|
+
|
|
13
|
+
from ..._shim import load_provider_first, load_provider_first_cached
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire.protocol.commands.quotes"
|
|
17
|
+
_PROVIDER_CODES_MODULE = "axdata_source_tdx._tdx_wire._command_codes"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
_codes_impl = None
|
|
21
|
+
_command_impl = None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _load_codes_impl():
|
|
25
|
+
return load_provider_first_cached(globals(), "_codes_impl", _PROVIDER_CODES_MODULE)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _command_codes() -> dict[str, int]:
|
|
29
|
+
command_codes = _load_codes_impl().COMMAND_CODES
|
|
30
|
+
globals()["COMMAND_CODES"] = command_codes
|
|
31
|
+
return command_codes
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _command_code(name: str) -> int:
|
|
35
|
+
return _load_codes_impl().command_code(name)
|
|
36
|
+
|
|
37
|
+
__all__ = [
|
|
38
|
+
"COMMAND_CODES",
|
|
39
|
+
"CategoryQuote",
|
|
40
|
+
"CategoryQuotePage",
|
|
41
|
+
"ExplicitQuote",
|
|
42
|
+
"ID_TO_MARKET",
|
|
43
|
+
"Iterable",
|
|
44
|
+
"LegacyQuote",
|
|
45
|
+
"ProtocolError",
|
|
46
|
+
"QuoteLevel",
|
|
47
|
+
"QuoteRefreshBatch",
|
|
48
|
+
"QuoteRefreshRecord",
|
|
49
|
+
"RequestFrame",
|
|
50
|
+
"ResponseFrame",
|
|
51
|
+
"Sequence",
|
|
52
|
+
"TYPE_CATEGORY_QUOTES",
|
|
53
|
+
"TYPE_EXPLICIT_QUOTES",
|
|
54
|
+
"TYPE_LEGACY_QUOTES",
|
|
55
|
+
"TYPE_REFRESH_QUOTES",
|
|
56
|
+
"annotations",
|
|
57
|
+
"build_category_quotes_frame",
|
|
58
|
+
"build_explicit_quotes_frame",
|
|
59
|
+
"build_legacy_quotes_frame",
|
|
60
|
+
"build_refresh_quotes_frame",
|
|
61
|
+
"decode_compact_float",
|
|
62
|
+
"little_f32",
|
|
63
|
+
"little_u16",
|
|
64
|
+
"little_u32",
|
|
65
|
+
"market_to_id",
|
|
66
|
+
"parse_category_quotes_payload",
|
|
67
|
+
"parse_explicit_quotes_payload",
|
|
68
|
+
"parse_legacy_quotes_payload",
|
|
69
|
+
"parse_refresh_quotes_payload",
|
|
70
|
+
"struct",
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _load_command_impl():
|
|
75
|
+
global _command_impl
|
|
76
|
+
if _command_impl is None:
|
|
77
|
+
_command_impl = load_provider_first(_PROVIDER_MODULE)
|
|
78
|
+
return _command_impl
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def __getattr__(name: str):
|
|
82
|
+
if name == "COMMAND_CODES":
|
|
83
|
+
return _command_codes()
|
|
84
|
+
if name == "TYPE_CATEGORY_QUOTES":
|
|
85
|
+
value = _command_code("category_quotes")
|
|
86
|
+
elif name == "TYPE_EXPLICIT_QUOTES":
|
|
87
|
+
value = _command_code("explicit_quotes")
|
|
88
|
+
elif name == "TYPE_LEGACY_QUOTES":
|
|
89
|
+
value = _command_code("legacy_quotes")
|
|
90
|
+
elif name == "TYPE_REFRESH_QUOTES":
|
|
91
|
+
value = _command_code("refresh_quotes")
|
|
92
|
+
else:
|
|
93
|
+
if name.startswith("_"):
|
|
94
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
95
|
+
implementation = _load_command_impl()
|
|
96
|
+
value = getattr(implementation, name)
|
|
97
|
+
globals()[name] = value
|
|
98
|
+
return value
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def __dir__() -> list[str]:
|
|
102
|
+
return sorted(set(globals()) | set(__all__))
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Compatibility shim for axdata_core._tdx_wire.protocol.commands.registry.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
This module keeps old imports working by loading the TDX plugin on demand.
|
|
5
|
+
If the plugin is unavailable, attribute access raises a clear install/enable error.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from ..._shim import load_provider_first
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire._command_registry"
|
|
14
|
+
|
|
15
|
+
__all__ = ["COMMANDS", "CommandSpec", "command_code", "required_commands"]
|
|
16
|
+
|
|
17
|
+
_impl = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _load_impl():
|
|
21
|
+
global _impl
|
|
22
|
+
if _impl is None:
|
|
23
|
+
_impl = load_provider_first(_PROVIDER_MODULE)
|
|
24
|
+
return _impl
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def __getattr__(name: str):
|
|
28
|
+
if name not in __all__:
|
|
29
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
30
|
+
value = getattr(_load_impl(), name)
|
|
31
|
+
globals()[name] = value
|
|
32
|
+
return value
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def __dir__() -> list[str]:
|
|
36
|
+
return sorted(set(globals()) | set(__all__))
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"""Compatibility shim for axdata_core._tdx_wire.protocol.commands.resources.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
Lightweight command/default facts are exposed without loading the full resource
|
|
5
|
+
command parser; other legacy names still load provider-first on demand.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from ..._shim import load_provider_first, load_provider_first_cached
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire.protocol.commands.resources"
|
|
16
|
+
_PROVIDER_CODES_MODULE = "axdata_source_tdx._tdx_wire._command_codes"
|
|
17
|
+
_PROVIDER_COMMAND_DEFAULTS_MODULE = "axdata_source_tdx._tdx_wire._command_defaults"
|
|
18
|
+
_PROVIDER_REQUEST_DEFAULTS_MODULE = "axdata_source_tdx._tdx_wire._request_defaults"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
_codes_impl = None
|
|
22
|
+
_command_defaults_impl = None
|
|
23
|
+
_request_defaults_impl = None
|
|
24
|
+
_command_impl = None
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _load_codes_impl():
|
|
28
|
+
return load_provider_first_cached(globals(), "_codes_impl", _PROVIDER_CODES_MODULE)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _load_command_defaults_impl():
|
|
32
|
+
return load_provider_first_cached(
|
|
33
|
+
globals(),
|
|
34
|
+
"_command_defaults_impl",
|
|
35
|
+
_PROVIDER_COMMAND_DEFAULTS_MODULE,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _load_request_defaults_impl():
|
|
40
|
+
return load_provider_first_cached(
|
|
41
|
+
globals(),
|
|
42
|
+
"_request_defaults_impl",
|
|
43
|
+
_PROVIDER_REQUEST_DEFAULTS_MODULE,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _command_codes() -> dict[str, int]:
|
|
48
|
+
command_codes = _load_codes_impl().COMMAND_CODES
|
|
49
|
+
globals()["COMMAND_CODES"] = command_codes
|
|
50
|
+
return command_codes
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _command_code(name: str) -> int:
|
|
54
|
+
return _load_codes_impl().command_code(name)
|
|
55
|
+
|
|
56
|
+
__all__ = [
|
|
57
|
+
"Any",
|
|
58
|
+
"COMMAND_CODES",
|
|
59
|
+
"DEFAULT_FILE_CHUNK_SIZE",
|
|
60
|
+
"FILE_PATH_FIELD_SIZE",
|
|
61
|
+
"FileContentChunk",
|
|
62
|
+
"ProtocolError",
|
|
63
|
+
"RequestFrame",
|
|
64
|
+
"ResponseFrame",
|
|
65
|
+
"TYPE_FILE_CONTENT",
|
|
66
|
+
"annotations",
|
|
67
|
+
"build_file_content_frame",
|
|
68
|
+
"little_u32",
|
|
69
|
+
"parse_file_content_payload",
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _load_command_impl():
|
|
74
|
+
global _command_impl
|
|
75
|
+
if _command_impl is None:
|
|
76
|
+
_command_impl = load_provider_first(_PROVIDER_MODULE)
|
|
77
|
+
return _command_impl
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def __getattr__(name: str) -> Any:
|
|
81
|
+
if name == "COMMAND_CODES":
|
|
82
|
+
return _command_codes()
|
|
83
|
+
if name == "DEFAULT_FILE_CHUNK_SIZE":
|
|
84
|
+
value = _load_request_defaults_impl().DEFAULT_FILE_CHUNK_SIZE
|
|
85
|
+
elif name == "FILE_PATH_FIELD_SIZE":
|
|
86
|
+
value = _load_command_defaults_impl().FILE_PATH_FIELD_SIZE
|
|
87
|
+
elif name == "TYPE_FILE_CONTENT":
|
|
88
|
+
value = _command_code("file_content")
|
|
89
|
+
else:
|
|
90
|
+
if name.startswith("_"):
|
|
91
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
92
|
+
implementation = _load_command_impl()
|
|
93
|
+
value = getattr(implementation, name)
|
|
94
|
+
globals()[name] = value
|
|
95
|
+
return value
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def __dir__() -> list[str]:
|
|
99
|
+
return sorted(set(globals()) | set(__all__))
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Compatibility shim for ``axdata_core._tdx_wire.protocol.commands.security``.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
Lightweight classification helpers are exposed without loading the full security
|
|
5
|
+
command parser; other legacy names still load provider-first on demand.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from ..._shim import load_provider_first, load_provider_first_cached
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire.protocol.commands.security"
|
|
14
|
+
_PROVIDER_CLASSIFICATION_MODULE = "axdata_source_tdx._tdx_wire._security_classification"
|
|
15
|
+
_PROVIDER_LAYOUTS_MODULE = "axdata_source_tdx._tdx_wire._command_layouts"
|
|
16
|
+
_PROVIDER_CODES_MODULE = "axdata_source_tdx._tdx_wire._command_codes"
|
|
17
|
+
_CLASSIFICATION_EXPORTS = {"classify_board", "classify_security"}
|
|
18
|
+
_LAYOUT_EXPORTS = {
|
|
19
|
+
"CODE_RECORD_SIZE",
|
|
20
|
+
"ETF_PREFIXES",
|
|
21
|
+
"FUND_PREFIXES",
|
|
22
|
+
"INDEX_PREFIXES",
|
|
23
|
+
"SSE_A_SHARE_PREFIXES",
|
|
24
|
+
"SZSE_A_SHARE_PREFIXES",
|
|
25
|
+
}
|
|
26
|
+
_COMMAND_CODE_EXPORTS = {
|
|
27
|
+
"TYPE_SECURITY_COUNT": "security_count",
|
|
28
|
+
"TYPE_SECURITY_LIST": "security_list",
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
_classification_impl = None
|
|
33
|
+
_layout_impl = None
|
|
34
|
+
_codes_impl = None
|
|
35
|
+
_command_impl = None
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _load_classification_impl():
|
|
39
|
+
return load_provider_first_cached(
|
|
40
|
+
globals(),
|
|
41
|
+
"_classification_impl",
|
|
42
|
+
_PROVIDER_CLASSIFICATION_MODULE,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _load_layout_impl():
|
|
47
|
+
return load_provider_first_cached(
|
|
48
|
+
globals(),
|
|
49
|
+
"_layout_impl",
|
|
50
|
+
_PROVIDER_LAYOUTS_MODULE,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _load_codes_impl():
|
|
55
|
+
return load_provider_first_cached(globals(), "_codes_impl", _PROVIDER_CODES_MODULE)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _command_code(name: str) -> int:
|
|
59
|
+
return _load_codes_impl().command_code(name)
|
|
60
|
+
|
|
61
|
+
__all__ = [
|
|
62
|
+
"CODE_RECORD_SIZE",
|
|
63
|
+
"ETF_PREFIXES",
|
|
64
|
+
"FUND_PREFIXES",
|
|
65
|
+
"INDEX_PREFIXES",
|
|
66
|
+
"SSE_A_SHARE_PREFIXES",
|
|
67
|
+
"SZSE_A_SHARE_PREFIXES",
|
|
68
|
+
"TYPE_SECURITY_COUNT",
|
|
69
|
+
"TYPE_SECURITY_LIST",
|
|
70
|
+
"build_security_count_frame",
|
|
71
|
+
"build_security_list_frame",
|
|
72
|
+
"classify_board",
|
|
73
|
+
"classify_security",
|
|
74
|
+
"parse_security_count_payload",
|
|
75
|
+
"parse_security_list_payload",
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _load_command_impl():
|
|
80
|
+
global _command_impl
|
|
81
|
+
if _command_impl is None:
|
|
82
|
+
_command_impl = load_provider_first(_PROVIDER_MODULE)
|
|
83
|
+
return _command_impl
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def __getattr__(name: str):
|
|
87
|
+
if name in _CLASSIFICATION_EXPORTS:
|
|
88
|
+
value = getattr(_load_classification_impl(), name)
|
|
89
|
+
elif name in _LAYOUT_EXPORTS:
|
|
90
|
+
value = getattr(_load_layout_impl(), name)
|
|
91
|
+
elif name in _COMMAND_CODE_EXPORTS:
|
|
92
|
+
value = _command_code(_COMMAND_CODE_EXPORTS[name])
|
|
93
|
+
else:
|
|
94
|
+
if name.startswith("_"):
|
|
95
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
96
|
+
implementation = _load_command_impl()
|
|
97
|
+
value = getattr(implementation, name)
|
|
98
|
+
globals()[name] = value
|
|
99
|
+
return value
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def __dir__() -> list[str]:
|
|
103
|
+
return sorted(set(globals()) | set(__all__))
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""Compatibility shim for axdata_core._tdx_wire.protocol.commands.session.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
Lightweight session command codes are exposed without loading the full session
|
|
5
|
+
command parser; other legacy names still load provider-first on demand.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from datetime import datetime
|
|
11
|
+
|
|
12
|
+
from ..._shim import load_provider_first, load_provider_first_cached
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire.protocol.commands.session"
|
|
16
|
+
_PROVIDER_CODES_MODULE = "axdata_source_tdx._tdx_wire._command_codes"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
_codes_impl = None
|
|
20
|
+
_command_impl = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _load_codes_impl():
|
|
24
|
+
return load_provider_first_cached(globals(), "_codes_impl", _PROVIDER_CODES_MODULE)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _command_codes() -> dict[str, int]:
|
|
28
|
+
command_codes = _load_codes_impl().COMMAND_CODES
|
|
29
|
+
globals()["COMMAND_CODES"] = command_codes
|
|
30
|
+
return command_codes
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _command_code(name: str) -> int:
|
|
34
|
+
return _load_codes_impl().command_code(name)
|
|
35
|
+
|
|
36
|
+
__all__ = [
|
|
37
|
+
"COMMAND_CODES",
|
|
38
|
+
"HandshakeInfo",
|
|
39
|
+
"HeartbeatAck",
|
|
40
|
+
"ProtocolError",
|
|
41
|
+
"RequestFrame",
|
|
42
|
+
"ResponseFrame",
|
|
43
|
+
"TYPE_HANDSHAKE",
|
|
44
|
+
"TYPE_HEARTBEAT",
|
|
45
|
+
"annotations",
|
|
46
|
+
"build_handshake_frame",
|
|
47
|
+
"build_heartbeat_frame",
|
|
48
|
+
"date_from_yyyymmdd",
|
|
49
|
+
"datetime",
|
|
50
|
+
"decode_gbk_text",
|
|
51
|
+
"little_u16",
|
|
52
|
+
"little_u32",
|
|
53
|
+
"parse_handshake_payload",
|
|
54
|
+
"parse_heartbeat_payload",
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _load_command_impl():
|
|
59
|
+
global _command_impl
|
|
60
|
+
if _command_impl is None:
|
|
61
|
+
_command_impl = load_provider_first(_PROVIDER_MODULE)
|
|
62
|
+
return _command_impl
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def __getattr__(name: str):
|
|
66
|
+
if name == "COMMAND_CODES":
|
|
67
|
+
return _command_codes()
|
|
68
|
+
if name == "TYPE_HANDSHAKE":
|
|
69
|
+
value = _command_code("handshake")
|
|
70
|
+
elif name == "TYPE_HEARTBEAT":
|
|
71
|
+
value = _command_code("heartbeat")
|
|
72
|
+
else:
|
|
73
|
+
if name.startswith("_"):
|
|
74
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
75
|
+
implementation = _load_command_impl()
|
|
76
|
+
value = getattr(implementation, name)
|
|
77
|
+
globals()[name] = value
|
|
78
|
+
return value
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def __dir__() -> list[str]:
|
|
82
|
+
return sorted(set(globals()) | set(__all__))
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Compatibility shim for axdata_core._tdx_wire.protocol.commands.subchart.
|
|
2
|
+
|
|
3
|
+
The provider-owned TDX wire implementation lives in ``axdata_source_tdx._tdx_wire``.
|
|
4
|
+
Lightweight command/layout facts are exposed without loading the full subchart
|
|
5
|
+
command parser; other legacy names still load provider-first on demand.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from ..._shim import load_provider_first, load_provider_first_cached
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
_PROVIDER_MODULE = "axdata_source_tdx._tdx_wire.protocol.commands.subchart"
|
|
16
|
+
_PROVIDER_CODES_MODULE = "axdata_source_tdx._tdx_wire._command_codes"
|
|
17
|
+
_PROVIDER_LAYOUTS_MODULE = "axdata_source_tdx._tdx_wire._command_layouts"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
_codes_impl = None
|
|
21
|
+
_layout_impl = None
|
|
22
|
+
_command_impl = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _load_codes_impl():
|
|
26
|
+
return load_provider_first_cached(globals(), "_codes_impl", _PROVIDER_CODES_MODULE)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _load_layout_impl():
|
|
30
|
+
return load_provider_first_cached(
|
|
31
|
+
globals(),
|
|
32
|
+
"_layout_impl",
|
|
33
|
+
_PROVIDER_LAYOUTS_MODULE,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _command_codes() -> dict[str, int]:
|
|
38
|
+
command_codes = _load_codes_impl().COMMAND_CODES
|
|
39
|
+
globals()["COMMAND_CODES"] = command_codes
|
|
40
|
+
return command_codes
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _command_code(name: str) -> int:
|
|
44
|
+
return _load_codes_impl().command_code(name)
|
|
45
|
+
|
|
46
|
+
__all__ = [
|
|
47
|
+
"Any",
|
|
48
|
+
"COMMAND_CODES",
|
|
49
|
+
"INTRADAY_SUBCHART_BUY_SELL_STRENGTH",
|
|
50
|
+
"INTRADAY_SUBCHART_SELECTOR_NAMES",
|
|
51
|
+
"INTRADAY_SUBCHART_VOLUME_COMPARISON",
|
|
52
|
+
"IntradaySubchartPoint",
|
|
53
|
+
"IntradaySubchartSeries",
|
|
54
|
+
"ProtocolError",
|
|
55
|
+
"RequestFrame",
|
|
56
|
+
"ResponseFrame",
|
|
57
|
+
"TYPE_INTRADAY_SUBCHART",
|
|
58
|
+
"annotations",
|
|
59
|
+
"build_intraday_subchart_frame",
|
|
60
|
+
"consume_tdx_signed_varint",
|
|
61
|
+
"little_f32",
|
|
62
|
+
"little_u16",
|
|
63
|
+
"normalize_intraday_subchart_selector",
|
|
64
|
+
"parse_intraday_subchart_payload",
|
|
65
|
+
"split_code",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _load_command_impl():
|
|
70
|
+
global _command_impl
|
|
71
|
+
if _command_impl is None:
|
|
72
|
+
_command_impl = load_provider_first(_PROVIDER_MODULE)
|
|
73
|
+
return _command_impl
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def __getattr__(name: str) -> Any:
|
|
77
|
+
if name == "COMMAND_CODES":
|
|
78
|
+
return _command_codes()
|
|
79
|
+
if name == "INTRADAY_SUBCHART_BUY_SELL_STRENGTH":
|
|
80
|
+
value = _load_layout_impl().INTRADAY_SUBCHART_BUY_SELL_STRENGTH
|
|
81
|
+
elif name == "INTRADAY_SUBCHART_SELECTOR_NAMES":
|
|
82
|
+
value = _load_layout_impl().INTRADAY_SUBCHART_SELECTOR_NAMES
|
|
83
|
+
elif name == "INTRADAY_SUBCHART_VOLUME_COMPARISON":
|
|
84
|
+
value = _load_layout_impl().INTRADAY_SUBCHART_VOLUME_COMPARISON
|
|
85
|
+
elif name == "TYPE_INTRADAY_SUBCHART":
|
|
86
|
+
value = _command_code("intraday_subchart")
|
|
87
|
+
else:
|
|
88
|
+
if name.startswith("_"):
|
|
89
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
90
|
+
implementation = _load_command_impl()
|
|
91
|
+
value = getattr(implementation, name)
|
|
92
|
+
globals()[name] = value
|
|
93
|
+
return value
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def __dir__() -> list[str]:
|
|
97
|
+
return sorted(set(globals()) | set(__all__))
|