eltdx 3.2.2__tar.gz → 3.2.3__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.
- {eltdx-3.2.2 → eltdx-3.2.3}/Cargo.lock +3 -3
- {eltdx-3.2.2 → eltdx-3.2.3}/Cargo.toml +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/PKG-INFO +13 -8
- {eltdx-3.2.2 → eltdx-3.2.3}/README.md +12 -7
- eltdx-3.2.3/crates/eltdx-protocol/src/commands/delisted_bars.rs +230 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/mod.rs +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/request.rs +14 -3
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/response.rs +5 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/src/request.rs +26 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/src/response.rs +35 -0
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/API_REFERENCE.md +24 -5
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/ARCHITECTURE.md +2 -2
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/CHANGELOG.md +8 -0
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/COMMANDS_7709.md +1 -0
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/EXAMPLES.md +27 -2
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/FIELD_MIGRATION.md +8 -3
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/FIELD_REFERENCE.md +10 -8
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/METHOD_REFERENCE.md +27 -7
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/assets/interface-catalog-data.js +19 -5
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/assets/interface-catalog.css +29 -0
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/helpers//345/256/214/346/225/264/350/241/214/346/203/205.md +2 -2
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/index.md +1 -1
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/methods/0x0ffc-/350/265/204/351/207/221/346/265/201/345/220/221/346/227/245/346/225/260/346/215/256/346/216/245/345/217/243.md +14 -16
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/methods/7709-K/347/272/277/345/221/250/346/234/237/347/272/277.md +2 -0
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/methods/7709-/345/210/206/347/261/273/350/241/214/346/203/205.md +2 -2
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/methods/7709-/345/242/236/351/207/217/345/210/267/346/226/260/346/216/250/351/200/201/351/230/237/345/210/227.md +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/211/271/351/207/217/345/277/253/347/205/247.md +14 -13
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/227/247/347/211/210/346/211/271/351/207/217/350/241/214/346/203/205.md +1 -1
- {eltdx-3.2.2/src/eltdx → eltdx-3.2.3}/docs/methods/7709-/346/234/254/345/234/260/345/244/215/346/235/203/347/263/273/346/225/260.md +20 -6
- eltdx-3.2.3/docs/methods/7709-/351/200/200/345/270/202K/347/272/277/346/227/245/347/272/277/346/216/245/345/217/243.md +124 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/346/266/250/350/267/214/345/201/234/345/210/227/350/241/250.md +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/README.md +1 -0
- eltdx-3.2.3/docs/releases/v3.2.3.md +38 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/fixtures/materialize_static_inputs.py +32 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/unified_test.py +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/check_release_metadata.py +4 -4
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/check_release_text.py +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/_native_models.py +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/__init__.py +2 -0
- eltdx-3.2.3/src/eltdx/api/delisted_bars.py +131 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/client.py +3 -0
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/API_REFERENCE.md +24 -5
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/ARCHITECTURE.md +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/CHANGELOG.md +8 -0
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/COMMANDS_7709.md +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/EXAMPLES.md +27 -2
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/FIELD_MIGRATION.md +8 -3
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/FIELD_REFERENCE.md +10 -8
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/METHOD_REFERENCE.md +27 -7
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/assets/interface-catalog-data.js +19 -5
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/assets/interface-catalog.css +29 -0
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/helpers//345/256/214/346/225/264/350/241/214/346/203/205.md +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/index.md +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/methods/0x0ffc-/350/265/204/351/207/221/346/265/201/345/220/221/346/227/245/346/225/260/346/215/256/346/216/245/345/217/243.md +14 -16
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/methods/7709-K/347/272/277/345/221/250/346/234/237/347/272/277.md +2 -0
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/methods/7709-/345/210/206/347/261/273/350/241/214/346/203/205.md +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/methods/7709-/345/242/236/351/207/217/345/210/267/346/226/260/346/216/250/351/200/201/351/230/237/345/210/227.md +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/211/271/351/207/217/345/277/253/347/205/247.md +14 -13
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/227/247/347/211/210/346/211/271/351/207/217/350/241/214/346/203/205.md +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3/src/eltdx}/docs/methods/7709-/346/234/254/345/234/260/345/244/215/346/235/203/347/263/273/346/225/260.md +20 -6
- eltdx-3.2.3/src/eltdx/docs/methods/7709-/351/200/200/345/270/202K/347/272/277/346/227/245/347/272/277/346/216/245/345/217/243.md +124 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/346/266/250/350/267/214/345/201/234/345/210/227/350/241/250.md +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/README.md +1 -0
- eltdx-3.2.3/src/eltdx/docs/releases/v3.2.3.md +38 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/commands/registry.py +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/constants.py +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/manifests/command_contracts.json +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/manifests/legacy_test_traceability.json +1 -1
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/manifests/public_api.json +8 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/manifests/python_test_groups.json +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_command_contract_manifest.py +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_response_dto_contract.py +1 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_static_fixture_inputs.py +3 -2
- eltdx-3.2.3/tests/fixtures/7709/delisted_bars/normal/expected.json +3464 -0
- eltdx-3.2.3/tests/fixtures/7709/delisted_bars/normal/metadata.json +110 -0
- eltdx-3.2.3/tests/fixtures/7709/delisted_bars/normal/request.bin +0 -0
- eltdx-3.2.3/tests/fixtures/7709/delisted_bars/normal/request.json +45 -0
- eltdx-3.2.3/tests/fixtures/7709/delisted_bars/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/integration/test_real_hosts.py +3 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/native/test_differential.py +2 -2
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_client.py +2 -2
- eltdx-3.2.3/tests/test_delisted_bars.py +291 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_pages.py +30 -22
- {eltdx-3.2.2 → eltdx-3.2.3}/LICENSE +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/Cargo.toml +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/auctions.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/corporate.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/klines.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/limits.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/minutes.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/money_flow.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/quotes.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/resources.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/security.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/session.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/commands/trades.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/error.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/frame.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/lib.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/limits.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/round2_tests.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-protocol/src/unit.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/Cargo.toml +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/src/error.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/src/lib.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/src/protocol.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-python/src/transport.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/Cargo.toml +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/deadline.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/diagnostics.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/endpoint.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/engine.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/error.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/lib.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/loom_tests.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/memory.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/pin.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/push.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/request.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/slot.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/crates/eltdx-runtime/src/supervisor.rs +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/DEBUG_GUIDE.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/F10_7615.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/GITHUB_PAGES.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/HTTP_GATEWAY.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/MCP.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/MIGRATION_FROM_OLD.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/PRODUCT.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/ROADMAP.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/THREADING_SCALE_PLAN.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/UPDATE_FROM_0_5_1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/adr/0001-scale-native-engine.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/adr/0002-historical-trade-batch.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/adr/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/assets/astlane-sponsor.svg +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/assets/interface-catalog.js +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/assets/return-samples.css +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers/A/350/202/241/345/270/270/347/224/250/345/260/201/350/243/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//344/270/252/350/202/241/346/246/202/345/277/265/346/235/277/345/235/227.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//344/271/260/345/215/226/345/212/233/351/201/223.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//345/256/236/346/227/266/346/246/234/345/215/225.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/210/220/344/272/244/345/257/271/346/257/224.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/234/200/346/226/260ST/345/210/227/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/234/200/346/226/260/345/201/234/347/211/214/345/210/227/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/234/200/346/226/260/350/202/241/347/245/250/345/210/227/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/235/277/345/235/227/346/210/220/345/210/206/350/202/241/350/241/214/346/203/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/235/277/345/235/227/350/241/214/346/203/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/246/202/345/277/265/346/235/277/345/235/227/346/210/220/345/210/206/350/202/241.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/257/217/346/227/245/346/266/250/350/267/214/345/201/234/344/273/267.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//346/257/217/346/227/245/350/202/241/346/234/254.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//347/237/255/347/272/277/346/214/207/346/240/207.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//347/253/236/344/273/267/346/225/260/346/215/256.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//350/202/241/347/245/250/344/277/241/346/201/257/346/261/207/346/200/273.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//350/277/236/346/235/277/345/244/251/346/242/257.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/helpers//351/242/230/346/235/220/345/274/272/345/272/246/346/216/222/350/241/214.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-0925/347/253/236/344/273/267/346/210/220/344/272/244/345/277/253/347/205/247.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/344/273/243/347/240/201/346/225/260/351/207/217.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/344/273/243/347/240/201/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/210/206/346/227/266/345/211/257/345/233/276.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/216/206/345/217/2620925/346/255/243/345/274/217/346/222/256/345/220/210.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/216/206/345/217/262/346/210/220/344/272/244/346/230/216/347/273/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/260/217/350/265/260/345/212/277/345/233/276.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/275/223/346/227/2450925/346/255/243/345/274/217/346/222/256/345/220/210.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/275/223/346/227/245/345/210/206/346/227/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/275/223/346/227/245/346/210/220/344/272/244/346/230/216/347/273/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/345/277/203/350/267/263.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/214/207/345/256/232/346/227/245/346/234/237/345/216/206/345/217/262/345/210/206/346/227/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/217/241/346/211/213.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/234/215/345/212/241/345/231/250/346/226/207/344/273/266/344/270/213/350/275/275.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/234/215/345/212/241/345/231/250/346/226/207/344/273/266/350/257/273/345/217/226.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/346/234/215/345/212/241/345/231/250/347/273/237/350/256/241/346/226/207/344/273/266/350/247/243/346/236/220.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/347/211/271/346/256/212/345/223/201/347/247/215/346/266/250/350/267/214/345/201/234/351/231/220/345/210/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/350/202/241/346/234/254/345/217/230/350/277/201GBBQ.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/350/264/242/345/212/241/345/237/272/347/241/200/344/277/241/346/201/257.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/350/277/221/346/234/237/345/216/206/345/217/262/345/210/206/346/227/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/7709-/351/233/206/345/220/210/347/253/236/344/273/267/346/230/216/347/273/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/344/270/252/350/202/241/346/200/273/350/257/204.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/344/270/273/350/220/245/346/236/204/346/210/220.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/344/274/260/345/200/274/345/270/202/345/234/272/346/225/260/346/215/256.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/345/205/254/345/217/270/346/246/202/345/206/265.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/345/205/254/345/217/270/350/265/204/350/256/257/347/240/224/346/212/245.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/345/210/206/347/272/242/350/236/215/350/265/204.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/345/242/236/345/217/221/350/216/267/351/205/215.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/345/270/202/345/234/272/350/241/214/344/270/232/346/216/222/345/220/215.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/346/226/260/351/227/273/345/205/254/345/221/212/350/267/257/346/274/224.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/346/262/252/346/267/261/350/202/241/351/200/232/346/214/201/344/273/223.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/347/203/255/347/202/271/351/242/230/346/235/220.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/347/233/210/345/210/251/351/242/204/346/265/213.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/350/202/241/344/270/234/345/242/236/345/207/217/346/214/201.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/350/202/241/347/245/250/345/237/272/347/241/200/344/277/241/346/201/257.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/350/257/246/346/203/205/346/255/243/346/226/207.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/350/264/242/345/212/241/346/212/245/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/350/264/242/345/212/241/350/257/212/346/226/255.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/350/265/204/346/234/254/350/277/220/344/275/234/346/262/273/347/220/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/351/200/232/347/224/250Entry/350/260/203/347/224/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/351/242/230/346/235/220/345/206/205/345/257/271/346/257/224.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/methods/F10-/351/242/230/346/235/220/346/246/202/345/277/265/350/241/214/346/203/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v1.0.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v1.0.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v1.1.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v1.2.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v1.3.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v1.3.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v2.0.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v2.0.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v2.0.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v2.0.3.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v2.0.4.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v2.0.5.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.3.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.4.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.5.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.6.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.7.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.8.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.0.9.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.3.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.4.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.5.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.6.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.7.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.8.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.1.9.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.2.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.2.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/docs/releases/v3.2.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/pyproject.toml +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/rust-toolchain.toml +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/ci/run_wire_golden.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/fixtures/canonical.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/fixtures/differential.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/fixtures/export_current_golden.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/package/sync_docs.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/release/prepare_release_notes.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/export_auction_925_daily.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/live_smoke.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/mcp_stdio_check.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/smoke_codes.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/smoke_f10.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/smoke_kline.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/smoke_minute.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/smoke_trade.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/smoke/smoke_workday.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/build_stress_evidence.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/check_external_evidence.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/check_native_abi.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/check_pages_links.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/dry_run_publish_workflow.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/index_release_evidence.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/installed_smoke.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/run_python_test_group.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/verify_release_artifacts.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/verify_sdist.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/scripts/verification/verify_wheel_matrix.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/_native_abi.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/auctions.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/bars.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/base.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/codes.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/corporate.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/health.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/limits.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/minutes.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/money_flow.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/quotes.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/resources.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/session.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/api/trades.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/cli.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/DEBUG_GUIDE.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/F10_7615.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/GITHUB_PAGES.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/HTTP_GATEWAY.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/MCP.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/MIGRATION_FROM_OLD.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/PRODUCT.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/ROADMAP.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/THREADING_SCALE_PLAN.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/UPDATE_FROM_0_5_1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/adr/0001-scale-native-engine.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/adr/0002-historical-trade-batch.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/adr/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/assets/astlane-sponsor.svg +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/assets/interface-catalog.js +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/assets/return-samples.css +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers/A/350/202/241/345/270/270/347/224/250/345/260/201/350/243/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers/README.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//344/270/252/350/202/241/346/246/202/345/277/265/346/235/277/345/235/227.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//344/271/260/345/215/226/345/212/233/351/201/223.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//345/256/236/346/227/266/346/246/234/345/215/225.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/210/220/344/272/244/345/257/271/346/257/224.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/234/200/346/226/260ST/345/210/227/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/234/200/346/226/260/345/201/234/347/211/214/345/210/227/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/234/200/346/226/260/350/202/241/347/245/250/345/210/227/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/235/277/345/235/227/346/210/220/345/210/206/350/202/241/350/241/214/346/203/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/235/277/345/235/227/350/241/214/346/203/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/246/202/345/277/265/346/235/277/345/235/227/346/210/220/345/210/206/350/202/241.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/257/217/346/227/245/346/266/250/350/267/214/345/201/234/344/273/267.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//346/257/217/346/227/245/350/202/241/346/234/254.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//347/237/255/347/272/277/346/214/207/346/240/207.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//347/253/236/344/273/267/346/225/260/346/215/256.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//350/202/241/347/245/250/344/277/241/346/201/257/346/261/207/346/200/273.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//350/277/236/346/235/277/345/244/251/346/242/257.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/helpers//351/242/230/346/235/220/345/274/272/345/272/246/346/216/222/350/241/214.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-0925/347/253/236/344/273/267/346/210/220/344/272/244/345/277/253/347/205/247.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/344/273/243/347/240/201/346/225/260/351/207/217.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/344/273/243/347/240/201/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/210/206/346/227/266/345/211/257/345/233/276.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/216/206/345/217/2620925/346/255/243/345/274/217/346/222/256/345/220/210.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/216/206/345/217/262/346/210/220/344/272/244/346/230/216/347/273/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/260/217/350/265/260/345/212/277/345/233/276.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/275/223/346/227/2450925/346/255/243/345/274/217/346/222/256/345/220/210.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/275/223/346/227/245/345/210/206/346/227/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/275/223/346/227/245/346/210/220/344/272/244/346/230/216/347/273/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/345/277/203/350/267/263.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/214/207/345/256/232/346/227/245/346/234/237/345/216/206/345/217/262/345/210/206/346/227/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/217/241/346/211/213.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/234/215/345/212/241/345/231/250/346/226/207/344/273/266/344/270/213/350/275/275.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/234/215/345/212/241/345/231/250/346/226/207/344/273/266/350/257/273/345/217/226.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/346/234/215/345/212/241/345/231/250/347/273/237/350/256/241/346/226/207/344/273/266/350/247/243/346/236/220.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/347/211/271/346/256/212/345/223/201/347/247/215/346/266/250/350/267/214/345/201/234/351/231/220/345/210/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/350/202/241/346/234/254/345/217/230/350/277/201GBBQ.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/350/264/242/345/212/241/345/237/272/347/241/200/344/277/241/346/201/257.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/350/277/221/346/234/237/345/216/206/345/217/262/345/210/206/346/227/266.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/7709-/351/233/206/345/220/210/347/253/236/344/273/267/346/230/216/347/273/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/344/270/252/350/202/241/346/200/273/350/257/204.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/344/270/273/350/220/245/346/236/204/346/210/220.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/344/274/260/345/200/274/345/270/202/345/234/272/346/225/260/346/215/256.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/345/205/254/345/217/270/346/246/202/345/206/265.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/345/205/254/345/217/270/350/265/204/350/256/257/347/240/224/346/212/245.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/345/210/206/347/272/242/350/236/215/350/265/204.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/345/242/236/345/217/221/350/216/267/351/205/215.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/345/270/202/345/234/272/350/241/214/344/270/232/346/216/222/345/220/215.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/346/226/260/351/227/273/345/205/254/345/221/212/350/267/257/346/274/224.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/346/262/252/346/267/261/350/202/241/351/200/232/346/214/201/344/273/223.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/347/203/255/347/202/271/351/242/230/346/235/220.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/347/233/210/345/210/251/351/242/204/346/265/213.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/350/202/241/344/270/234/345/242/236/345/207/217/346/214/201.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/350/202/241/347/245/250/345/237/272/347/241/200/344/277/241/346/201/257.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/350/257/246/346/203/205/346/255/243/346/226/207.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/350/264/242/345/212/241/346/212/245/350/241/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/350/264/242/345/212/241/350/257/212/346/226/255.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/350/265/204/346/234/254/350/277/220/344/275/234/346/262/273/347/220/206.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/351/200/232/347/224/250Entry/350/260/203/347/224/250.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/351/242/230/346/235/220/345/206/205/345/257/271/346/257/224.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/methods/F10-/351/242/230/346/235/220/346/246/202/345/277/265/350/241/214/346/203/205.md" +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v1.0.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v1.0.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v1.1.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v1.2.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v1.3.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v1.3.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v2.0.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v2.0.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v2.0.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v2.0.3.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v2.0.4.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v2.0.5.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.3.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.4.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.5.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.6.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.7.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.8.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.0.9.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.3.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.4.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.5.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.6.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.7.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.8.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.1.9.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.2.0.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.2.1.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/docs/releases/v3.2.2.md +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/equity.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/exceptions.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/f10/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/f10/_http.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/f10/client.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/f10/models.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/f10_smoke.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/helpers/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/helpers/boards.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/helpers/core.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/helpers/shortline.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/hosts.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/http_server.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/mcp.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/auction.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/corporate.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/kline.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/limit.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/minute.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/money_flow.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/quote.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/resource.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/response.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/security.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/session.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/trade.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/models/trade_batch.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/money_flow_servers.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/codec.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/commands/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/commands/codec.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/frame.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/protocol/unit.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/py.typed +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/serialization.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/smoke.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/stats.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/tdx_server.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/__init__.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/_config.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/actor.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/base.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/memory.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/native.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/pool.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/transport/socket.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/src/eltdx/workday.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/manifests/dataclasses_exceptions.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/manifests/runtime_surfaces.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_dataclasses_exceptions.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_legacy_test_traceability_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_native_errors_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_native_models_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_native_protocol_facade_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_public_api_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_python_test_groups.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_release_evidence_index.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_runtime_memory_bounds.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_runtime_surfaces_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/contracts/test_unified_test_plan.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/auction_series/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/auction_series/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/auction_series/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/auction_series/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/auction_series/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/canonical_fixture.schema.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/capital_changes/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/capital_changes/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/capital_changes/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/capital_changes/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/capital_changes/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/trailing_byte/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/trailing_byte/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/trailing_byte/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/trailing_byte/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/category_quotes/trailing_byte/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/max_chunk_empty/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/max_chunk_empty/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/max_chunk_empty/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/max_chunk_empty/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/max_chunk_empty/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/file_content/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/finance_batch/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/finance_batch/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/finance_batch/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/finance_batch/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/finance_batch/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/handshake/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/handshake/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/handshake/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/handshake/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/handshake/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/bad_compression/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/bad_compression/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/bad_compression/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/bad_compression/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/bad_compression/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/compressed/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/compressed/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/compressed/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/compressed/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/compressed/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/stale_message/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/stale_message/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/stale_message/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/stale_message/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/heartbeat/stale_message/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_intraday/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_intraday/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_intraday/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_intraday/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_intraday/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_ticks/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_ticks/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_ticks/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_ticks/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/historical_ticks/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/intraday_aux/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/intraday_aux/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/intraday_aux/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/intraday_aux/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/intraday_aux/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/include_raw_false/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/include_raw_false/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/include_raw_false/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/include_raw_false/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/include_raw_false/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/max_page_empty/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/max_page_empty/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/max_page_empty/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/max_page_empty/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/max_page_empty/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/klines/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/legacy_quotes/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/legacy_quotes/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/legacy_quotes/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/legacy_quotes/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/legacy_quotes/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/include_raw_false/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/include_raw_false/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/include_raw_false/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/include_raw_false/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/include_raw_false/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/recent_intraday/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/refresh_stream/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/refresh_stream/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/refresh_stream/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/refresh_stream/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/refresh_stream/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_count/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_count/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_count/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_count/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_count/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/bj_empty/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/bj_empty/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/bj_empty/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/bj_empty/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/bj_empty/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/sh_empty/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/sh_empty/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/sh_empty/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/sh_empty/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/security_list/sh_empty/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/etf_index_empty/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/etf_index_empty/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/etf_index_empty/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/etf_index_empty/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/etf_index_empty/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/truncated_record/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/truncated_record/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/truncated_record/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/truncated_record/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/snapshots/truncated_record/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/sparkline/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/sparkline/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/sparkline/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/sparkline/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/sparkline/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/special_limits/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/special_limits/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/special_limits/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/special_limits/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/special_limits/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_intraday/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_intraday/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_intraday/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_intraday/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_intraday/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_ticks/normal/expected.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_ticks/normal/metadata.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_ticks/normal/request.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_ticks/normal/request.json +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/fixtures/7709/today_ticks/normal/response.bin +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/integration/loopback_support.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/integration/test_loopback_concurrency.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/integration/test_loopback_faults.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/integration/test_native_transport.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/packaging/test_bytecode_exclusion_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/packaging/test_docs_mirror.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/packaging/test_release_artifacts.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/packaging/test_release_metadata_contract.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/packaging/test_sdist_verification.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/stress/runtime_support.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/stress/test_native_runtime_stress.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_a_share_helpers.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_board_helpers.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_f10.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_helpers.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_http_server.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_mcp.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_resources.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_shortline_helpers.py +0 -0
- {eltdx-3.2.2 → eltdx-3.2.3}/tests/test_trade_batch.py +0 -0
|
@@ -77,7 +77,7 @@ dependencies = [
|
|
|
77
77
|
|
|
78
78
|
[[package]]
|
|
79
79
|
name = "eltdx-protocol"
|
|
80
|
-
version = "3.2.
|
|
80
|
+
version = "3.2.3"
|
|
81
81
|
dependencies = [
|
|
82
82
|
"bytes",
|
|
83
83
|
"encoding_rs",
|
|
@@ -91,7 +91,7 @@ dependencies = [
|
|
|
91
91
|
|
|
92
92
|
[[package]]
|
|
93
93
|
name = "eltdx-python"
|
|
94
|
-
version = "3.2.
|
|
94
|
+
version = "3.2.3"
|
|
95
95
|
dependencies = [
|
|
96
96
|
"eltdx-protocol",
|
|
97
97
|
"eltdx-runtime",
|
|
@@ -101,7 +101,7 @@ dependencies = [
|
|
|
101
101
|
|
|
102
102
|
[[package]]
|
|
103
103
|
name = "eltdx-runtime"
|
|
104
|
-
version = "3.2.
|
|
104
|
+
version = "3.2.3"
|
|
105
105
|
dependencies = [
|
|
106
106
|
"bytes",
|
|
107
107
|
"eltdx-protocol",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eltdx
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.3
|
|
4
4
|
Classifier: Development Status :: 5 - Production/Stable
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -104,12 +104,13 @@ eltdx 默认按“想拿什么数据”组织入口。普通调用优先使用
|
|
|
104
104
|
| 五档实时刷新 | 为代码列表建立或刷新实时五档 | [`client.quotes.get_depth()`](docs/methods/7709-增量刷新推送队列.md) | `7709 原生协议` |
|
|
105
105
|
| push 队列 | 读取未匹配的实时更新帧 | [`client.quotes.poll_push()`](docs/methods/7709-增量刷新推送队列.md) | `7709 原生协议` |
|
|
106
106
|
| K 线与复权 | 分钟/日/周/月/季/年 K 线、自动分页、前/后/定点复权 | [`client.bars.get()`](docs/methods/7709-K线周期线.md) | `7709 原生协议` |
|
|
107
|
+
| 退市 K 线 | 退市股票日线、不复权、批量查询、自动分页 | [`client.delisted_bars.get()`](docs/methods/7709-退市K线日线接口.md) | `0x052B 原生协议` |
|
|
107
108
|
| 当日分时 | 当日每分钟价格、成交量和均价 | [`client.minutes.today()`](docs/methods/7709-当日分时.md) | `7709 原生协议` |
|
|
108
109
|
| 当日成交明细 | 自动分页合并的当日完整成交记录 | [`client.trades.all_today()`](docs/methods/7709-当日成交明细.md) | `7709 原生协议` |
|
|
109
110
|
| 集合竞价 | 竞价过程、09:25 撮合、前收盘参考价、开盘价/量/额/涨幅 | [`client.helpers.auction_data()`](docs/helpers/竞价数据.md) | `7709` + `Helpers 封装` |
|
|
110
111
|
| 股本变迁 | 除权除息、股本变化、增发和回购记录 | [`client.corporate.capital_changes()`](docs/methods/7709-股本变迁GBBQ.md) | `7709 原生协议` |
|
|
111
112
|
| 财务基础 | 流通/总股本、EPS、资产、负债、收入和利润 | [`client.corporate.finance_batch()`](docs/methods/7709-财务基础信息.md) | `7709 原生协议` |
|
|
112
|
-
| 本地复权系数 |
|
|
113
|
+
| 本地复权系数 | 基于权息记录为已有不复权 K 线提供本地计算和审计系数 | [`client.corporate.adjustment_factors()`](docs/methods/7709-本地复权系数.md) | `0x000f 本地计算` |
|
|
113
114
|
| 特殊品种限制 | 特殊品种涨跌停限制表 | [`client.limits.special()`](docs/methods/7709-特殊品种涨跌停限制.md) | `7709 原生协议` |
|
|
114
115
|
| F10 公司概况 | 发行上市信息、上市日期、发行价、募资额和承销商 | [`client.f10.company_profile()`](docs/methods/F10-公司概况.md) | `7615 原生 Entry` |
|
|
115
116
|
| 个股概念 | 某只股票所属的热点题材和入选原因 | [`client.helpers.stock_topics()`](docs/helpers/个股概念板块.md) | `7615` + `Helpers 封装` |
|
|
@@ -231,12 +232,13 @@ print(f10.company_profile("000034").rows[0])
|
|
|
231
232
|
| 心跳 | `client.session.heartbeat()` | [`0x0004`](docs/COMMANDS_7709.md#cmd-0x0004) | 返回服务端心跳响应;长连接默认后台 30 秒保活,也可手动调用 | [文档](docs/methods/7709-心跳.md) |
|
|
232
233
|
| 市场代码数量 | `client.codes.count(market)` / `client.codes.a_share_count(market)` | [`0x044e`](docs/COMMANDS_7709.md#cmd-0x044e) / [`0x044d`](docs/COMMANDS_7709.md#cmd-0x044d) | 分别返回整个市场代码表条数或仅 A 股数量;前者不限证券品种 | [文档](docs/methods/7709-代码数量.md) |
|
|
233
234
|
| 代码表 | `client.codes.all(market, ...)` / `client.codes.all_a_shares()` / `client.codes.list(market, ...)` | [`0x044d`](docs/COMMANDS_7709.md#cmd-0x044d) | 推荐自动翻页取全量;也可直接取 A 股、ETF、指数,或手动控制单页 | [文档](docs/methods/7709-代码表.md) |
|
|
234
|
-
| 批量行情快照 | `client.quotes.get_snapshots()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) |
|
|
235
|
-
| 完整行情 / 五档盘口 | `client.helpers.full_quotes()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) + [`0x0547`](docs/COMMANDS_7709.md#cmd-0x0547) |
|
|
235
|
+
| 批量行情快照 | `client.quotes.get_snapshots()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) | 返回现价、成交量额和一档盘口(买一、卖一) | [文档](docs/methods/7709-批量快照.md) |
|
|
236
|
+
| 完整行情 / 五档盘口 | `client.helpers.full_quotes()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) + [`0x0547`](docs/COMMANDS_7709.md#cmd-0x0547) | 查询完整当前行情,自动组合基础快照与实时五档 | [文档](docs/helpers/完整行情.md) |
|
|
236
237
|
| 原生批量行情 | `client.quotes.legacy()` | [`0x053e`](docs/COMMANDS_7709.md#cmd-0x053e) | 原生旧版完整快照,保留五档盘口和协议状态原始字段 | [文档](docs/methods/7709-旧版批量行情.md) |
|
|
237
238
|
| 五档刷新 / 推送队列 | `client.quotes.get_depth()` / `client.quotes.refresh()` / `client.quotes.poll_push()` | [`0x0547`](docs/COMMANDS_7709.md#cmd-0x0547) | 原生五档快捷入口、游标刷新与推送队列;面向高级实时更新场景 | [文档](docs/methods/7709-增量刷新推送队列.md) |
|
|
238
239
|
| 分类行情 | `client.quotes.list_by_category()` | [`0x054b`](docs/COMMANDS_7709.md#cmd-0x054b) | 按市场或板块分页返回行情列表;可按涨幅、价格、成交额等服务端排序 | [文档](docs/methods/7709-分类行情.md) |
|
|
239
240
|
| K 线 / 周期线 | `client.bars.get(code_or_codes, ..., all_pages=False)` | [`0x052d`](docs/COMMANDS_7709.md#cmd-0x052d) | 单页或自动分页返回 K 线;支持单只或多只证券并发查询,以及分钟、日、周、月、季、年线和服务端复权参数 | [文档](docs/methods/7709-K线周期线.md) |
|
|
241
|
+
| 退市 K 线 | `client.delisted_bars.get(code, ..., all_pages=False, batch_size=None)` | [`0x052b`](docs/COMMANDS_7709.md#cmd-0x052b) | 退市股票的不复权日线,支持单只或批量查询、自动分页 | [文档](docs/methods/7709-退市K线日线接口.md) |
|
|
240
242
|
| 当日分时 | `client.minutes.today()` | [`0x0537`](docs/COMMANDS_7709.md#cmd-0x0537) | 返回主站当前保存的每分钟价格、成交量、均价等分时序列 | [文档](docs/methods/7709-当日分时.md) |
|
|
241
243
|
| 指定日期历史分时 | `client.minutes.history()` | [`0x0fb4`](docs/COMMANDS_7709.md#cmd-0x0fb4) | 按日期返回某天的分时价格和分钟成交量,适合补单日历史分时 | [文档](docs/methods/7709-指定日期历史分时.md) |
|
|
242
244
|
| 近期历史分时 | `client.minutes.recent()` | [`0x0feb`](docs/COMMANDS_7709.md#cmd-0x0feb) | 返回服务端近期窗口内的历史分时;适合查较近交易日的分钟走势 | [文档](docs/methods/7709-近期历史分时.md) |
|
|
@@ -268,6 +270,7 @@ client.bars.get("sz000001", period="week", count=100)
|
|
|
268
270
|
client.bars.get("sz000001", period="year", count=20)
|
|
269
271
|
client.bars.get("sz000001", period="1m", count=240)
|
|
270
272
|
client.bars.get("sz000001", period="day", adjust="qfq", count=200)
|
|
273
|
+
client.bars.get("sz000001", period="day", adjust="hfq", count=200)
|
|
271
274
|
client.bars.get("sz000001", period="day", adjust="fixed_qfq", anchor_date="2024-06-03")
|
|
272
275
|
client.bars.get("sz000001", period="day", all_pages=True, page_size=800)
|
|
273
276
|
```
|
|
@@ -283,6 +286,10 @@ client.bars.get("sz000001", period="day", all_pages=True, page_size=800)
|
|
|
283
286
|
| `adjust` | `fixed_qfq` / `fixed_hfq` | 定点前复权 / 定点后复权,需要配合 `anchor_date` |
|
|
284
287
|
| `anchor_date` | `YYYY-MM-DD`、`YYYYMMDD`、`date` | 定点复权基准日期,仅定点复权时需要 |
|
|
285
288
|
|
|
289
|
+
直接查询前复权和后复权 K 线,使用 `client.bars.get(..., adjust="qfq" / "hfq")`。已有不复权 K 线、需要本地计算或审计时,使用 `client.corporate.adjustment_factors()`;本地计算与服务端复权价格可能存在差异。
|
|
290
|
+
|
|
291
|
+
将本地系数应用到一段完整不复权 K 线时,必须把第一根 K 线日期传给 `start_date`,并建议把最后一根 K 线日期传给 `anchor_date`。`start_date=None` 会使用全部有日期的权息事件,可能累计早于服务端第一根可用 K 线的记录,直接用于后复权会产生错误基准。即使日期范围正确,本地 `0x000f` 计算与服务端 `0x052d` 的累计精度和舍入顺序仍可能带来约 `0.01~0.02` 元差异;需要服务端口径时请直接使用 `bars.get(adjust=...)`。
|
|
292
|
+
|
|
286
293
|
## F10 资料接口
|
|
287
294
|
|
|
288
295
|
| 功能 | 调用方法 | 底层 Entry | 返回内容 / 用途 | 文档 |
|
|
@@ -460,7 +467,7 @@ python scripts/smoke/export_auction_925_daily.py --code sz000001 --start 2026-04
|
|
|
460
467
|
| 底层协议和 F10 Entry | [7709 命令](docs/COMMANDS_7709.md) · [7615 F10](docs/F10_7615.md) |
|
|
461
468
|
| 连接、测速、并发和故障排查 | [调试指南](docs/DEBUG_GUIDE.md) · [架构](docs/ARCHITECTURE.md) |
|
|
462
469
|
| MCP 安装、工具和资源 | [MCP 文档](docs/MCP.md) |
|
|
463
|
-
| 当前版本、变更和旧 API 迁移 | [v3.2.
|
|
470
|
+
| 当前版本、变更和旧 API 迁移 | [v3.2.3](docs/releases/v3.2.3.md) · [变更记录](docs/CHANGELOG.md) · [迁移说明](docs/MIGRATION_FROM_OLD.md) |
|
|
464
471
|
|
|
465
472
|
## 常用问题
|
|
466
473
|
|
|
@@ -494,9 +501,7 @@ print(auction.open_price, auction.open_change_pct, auction.open_amount)
|
|
|
494
501
|
|
|
495
502
|
## 联系
|
|
496
503
|
|
|
497
|
-
-
|
|
498
|
-
|
|
499
|
-
- 邮箱:[dapaoxixixi@163.com](mailto:dapaoxixixi@163.com)
|
|
504
|
+
- 交流群:[点击链接加入群聊](https://qm.qq.com/q/zAjpZsvfzy)
|
|
500
505
|
|
|
501
506
|
## 许可证
|
|
502
507
|
|
|
@@ -65,12 +65,13 @@ eltdx 默认按“想拿什么数据”组织入口。普通调用优先使用
|
|
|
65
65
|
| 五档实时刷新 | 为代码列表建立或刷新实时五档 | [`client.quotes.get_depth()`](docs/methods/7709-增量刷新推送队列.md) | `7709 原生协议` |
|
|
66
66
|
| push 队列 | 读取未匹配的实时更新帧 | [`client.quotes.poll_push()`](docs/methods/7709-增量刷新推送队列.md) | `7709 原生协议` |
|
|
67
67
|
| K 线与复权 | 分钟/日/周/月/季/年 K 线、自动分页、前/后/定点复权 | [`client.bars.get()`](docs/methods/7709-K线周期线.md) | `7709 原生协议` |
|
|
68
|
+
| 退市 K 线 | 退市股票日线、不复权、批量查询、自动分页 | [`client.delisted_bars.get()`](docs/methods/7709-退市K线日线接口.md) | `0x052B 原生协议` |
|
|
68
69
|
| 当日分时 | 当日每分钟价格、成交量和均价 | [`client.minutes.today()`](docs/methods/7709-当日分时.md) | `7709 原生协议` |
|
|
69
70
|
| 当日成交明细 | 自动分页合并的当日完整成交记录 | [`client.trades.all_today()`](docs/methods/7709-当日成交明细.md) | `7709 原生协议` |
|
|
70
71
|
| 集合竞价 | 竞价过程、09:25 撮合、前收盘参考价、开盘价/量/额/涨幅 | [`client.helpers.auction_data()`](docs/helpers/竞价数据.md) | `7709` + `Helpers 封装` |
|
|
71
72
|
| 股本变迁 | 除权除息、股本变化、增发和回购记录 | [`client.corporate.capital_changes()`](docs/methods/7709-股本变迁GBBQ.md) | `7709 原生协议` |
|
|
72
73
|
| 财务基础 | 流通/总股本、EPS、资产、负债、收入和利润 | [`client.corporate.finance_batch()`](docs/methods/7709-财务基础信息.md) | `7709 原生协议` |
|
|
73
|
-
| 本地复权系数 |
|
|
74
|
+
| 本地复权系数 | 基于权息记录为已有不复权 K 线提供本地计算和审计系数 | [`client.corporate.adjustment_factors()`](docs/methods/7709-本地复权系数.md) | `0x000f 本地计算` |
|
|
74
75
|
| 特殊品种限制 | 特殊品种涨跌停限制表 | [`client.limits.special()`](docs/methods/7709-特殊品种涨跌停限制.md) | `7709 原生协议` |
|
|
75
76
|
| F10 公司概况 | 发行上市信息、上市日期、发行价、募资额和承销商 | [`client.f10.company_profile()`](docs/methods/F10-公司概况.md) | `7615 原生 Entry` |
|
|
76
77
|
| 个股概念 | 某只股票所属的热点题材和入选原因 | [`client.helpers.stock_topics()`](docs/helpers/个股概念板块.md) | `7615` + `Helpers 封装` |
|
|
@@ -192,12 +193,13 @@ print(f10.company_profile("000034").rows[0])
|
|
|
192
193
|
| 心跳 | `client.session.heartbeat()` | [`0x0004`](docs/COMMANDS_7709.md#cmd-0x0004) | 返回服务端心跳响应;长连接默认后台 30 秒保活,也可手动调用 | [文档](docs/methods/7709-心跳.md) |
|
|
193
194
|
| 市场代码数量 | `client.codes.count(market)` / `client.codes.a_share_count(market)` | [`0x044e`](docs/COMMANDS_7709.md#cmd-0x044e) / [`0x044d`](docs/COMMANDS_7709.md#cmd-0x044d) | 分别返回整个市场代码表条数或仅 A 股数量;前者不限证券品种 | [文档](docs/methods/7709-代码数量.md) |
|
|
194
195
|
| 代码表 | `client.codes.all(market, ...)` / `client.codes.all_a_shares()` / `client.codes.list(market, ...)` | [`0x044d`](docs/COMMANDS_7709.md#cmd-0x044d) | 推荐自动翻页取全量;也可直接取 A 股、ETF、指数,或手动控制单页 | [文档](docs/methods/7709-代码表.md) |
|
|
195
|
-
| 批量行情快照 | `client.quotes.get_snapshots()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) |
|
|
196
|
-
| 完整行情 / 五档盘口 | `client.helpers.full_quotes()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) + [`0x0547`](docs/COMMANDS_7709.md#cmd-0x0547) |
|
|
196
|
+
| 批量行情快照 | `client.quotes.get_snapshots()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) | 返回现价、成交量额和一档盘口(买一、卖一) | [文档](docs/methods/7709-批量快照.md) |
|
|
197
|
+
| 完整行情 / 五档盘口 | `client.helpers.full_quotes()` | [`0x054c`](docs/COMMANDS_7709.md#cmd-0x054c) + [`0x0547`](docs/COMMANDS_7709.md#cmd-0x0547) | 查询完整当前行情,自动组合基础快照与实时五档 | [文档](docs/helpers/完整行情.md) |
|
|
197
198
|
| 原生批量行情 | `client.quotes.legacy()` | [`0x053e`](docs/COMMANDS_7709.md#cmd-0x053e) | 原生旧版完整快照,保留五档盘口和协议状态原始字段 | [文档](docs/methods/7709-旧版批量行情.md) |
|
|
198
199
|
| 五档刷新 / 推送队列 | `client.quotes.get_depth()` / `client.quotes.refresh()` / `client.quotes.poll_push()` | [`0x0547`](docs/COMMANDS_7709.md#cmd-0x0547) | 原生五档快捷入口、游标刷新与推送队列;面向高级实时更新场景 | [文档](docs/methods/7709-增量刷新推送队列.md) |
|
|
199
200
|
| 分类行情 | `client.quotes.list_by_category()` | [`0x054b`](docs/COMMANDS_7709.md#cmd-0x054b) | 按市场或板块分页返回行情列表;可按涨幅、价格、成交额等服务端排序 | [文档](docs/methods/7709-分类行情.md) |
|
|
200
201
|
| K 线 / 周期线 | `client.bars.get(code_or_codes, ..., all_pages=False)` | [`0x052d`](docs/COMMANDS_7709.md#cmd-0x052d) | 单页或自动分页返回 K 线;支持单只或多只证券并发查询,以及分钟、日、周、月、季、年线和服务端复权参数 | [文档](docs/methods/7709-K线周期线.md) |
|
|
202
|
+
| 退市 K 线 | `client.delisted_bars.get(code, ..., all_pages=False, batch_size=None)` | [`0x052b`](docs/COMMANDS_7709.md#cmd-0x052b) | 退市股票的不复权日线,支持单只或批量查询、自动分页 | [文档](docs/methods/7709-退市K线日线接口.md) |
|
|
201
203
|
| 当日分时 | `client.minutes.today()` | [`0x0537`](docs/COMMANDS_7709.md#cmd-0x0537) | 返回主站当前保存的每分钟价格、成交量、均价等分时序列 | [文档](docs/methods/7709-当日分时.md) |
|
|
202
204
|
| 指定日期历史分时 | `client.minutes.history()` | [`0x0fb4`](docs/COMMANDS_7709.md#cmd-0x0fb4) | 按日期返回某天的分时价格和分钟成交量,适合补单日历史分时 | [文档](docs/methods/7709-指定日期历史分时.md) |
|
|
203
205
|
| 近期历史分时 | `client.minutes.recent()` | [`0x0feb`](docs/COMMANDS_7709.md#cmd-0x0feb) | 返回服务端近期窗口内的历史分时;适合查较近交易日的分钟走势 | [文档](docs/methods/7709-近期历史分时.md) |
|
|
@@ -229,6 +231,7 @@ client.bars.get("sz000001", period="week", count=100)
|
|
|
229
231
|
client.bars.get("sz000001", period="year", count=20)
|
|
230
232
|
client.bars.get("sz000001", period="1m", count=240)
|
|
231
233
|
client.bars.get("sz000001", period="day", adjust="qfq", count=200)
|
|
234
|
+
client.bars.get("sz000001", period="day", adjust="hfq", count=200)
|
|
232
235
|
client.bars.get("sz000001", period="day", adjust="fixed_qfq", anchor_date="2024-06-03")
|
|
233
236
|
client.bars.get("sz000001", period="day", all_pages=True, page_size=800)
|
|
234
237
|
```
|
|
@@ -244,6 +247,10 @@ client.bars.get("sz000001", period="day", all_pages=True, page_size=800)
|
|
|
244
247
|
| `adjust` | `fixed_qfq` / `fixed_hfq` | 定点前复权 / 定点后复权,需要配合 `anchor_date` |
|
|
245
248
|
| `anchor_date` | `YYYY-MM-DD`、`YYYYMMDD`、`date` | 定点复权基准日期,仅定点复权时需要 |
|
|
246
249
|
|
|
250
|
+
直接查询前复权和后复权 K 线,使用 `client.bars.get(..., adjust="qfq" / "hfq")`。已有不复权 K 线、需要本地计算或审计时,使用 `client.corporate.adjustment_factors()`;本地计算与服务端复权价格可能存在差异。
|
|
251
|
+
|
|
252
|
+
将本地系数应用到一段完整不复权 K 线时,必须把第一根 K 线日期传给 `start_date`,并建议把最后一根 K 线日期传给 `anchor_date`。`start_date=None` 会使用全部有日期的权息事件,可能累计早于服务端第一根可用 K 线的记录,直接用于后复权会产生错误基准。即使日期范围正确,本地 `0x000f` 计算与服务端 `0x052d` 的累计精度和舍入顺序仍可能带来约 `0.01~0.02` 元差异;需要服务端口径时请直接使用 `bars.get(adjust=...)`。
|
|
253
|
+
|
|
247
254
|
## F10 资料接口
|
|
248
255
|
|
|
249
256
|
| 功能 | 调用方法 | 底层 Entry | 返回内容 / 用途 | 文档 |
|
|
@@ -421,7 +428,7 @@ python scripts/smoke/export_auction_925_daily.py --code sz000001 --start 2026-04
|
|
|
421
428
|
| 底层协议和 F10 Entry | [7709 命令](docs/COMMANDS_7709.md) · [7615 F10](docs/F10_7615.md) |
|
|
422
429
|
| 连接、测速、并发和故障排查 | [调试指南](docs/DEBUG_GUIDE.md) · [架构](docs/ARCHITECTURE.md) |
|
|
423
430
|
| MCP 安装、工具和资源 | [MCP 文档](docs/MCP.md) |
|
|
424
|
-
| 当前版本、变更和旧 API 迁移 | [v3.2.
|
|
431
|
+
| 当前版本、变更和旧 API 迁移 | [v3.2.3](docs/releases/v3.2.3.md) · [变更记录](docs/CHANGELOG.md) · [迁移说明](docs/MIGRATION_FROM_OLD.md) |
|
|
425
432
|
|
|
426
433
|
## 常用问题
|
|
427
434
|
|
|
@@ -455,9 +462,7 @@ print(auction.open_price, auction.open_change_pct, auction.open_amount)
|
|
|
455
462
|
|
|
456
463
|
## 联系
|
|
457
464
|
|
|
458
|
-
-
|
|
459
|
-
|
|
460
|
-
- 邮箱:[dapaoxixixi@163.com](mailto:dapaoxixixi@163.com)
|
|
465
|
+
- 交流群:[点击链接加入群聊](https://qm.qq.com/q/zAjpZsvfzy)
|
|
461
466
|
|
|
462
467
|
## 许可证
|
|
463
468
|
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
use bytes::Bytes;
|
|
2
|
+
|
|
3
|
+
use crate::commands::klines::KlineBar;
|
|
4
|
+
use crate::error::ProtocolError;
|
|
5
|
+
use crate::frame::RequestFrame;
|
|
6
|
+
use crate::limits::{MAX_KLINE_PAGE_SIZE, MAX_RESPONSE_PAYLOAD_SIZE};
|
|
7
|
+
use crate::unit::{
|
|
8
|
+
consume_price, get_volume, little_u16, little_u32, milli_to_float, DateTimeParts,
|
|
9
|
+
NormalizedCode,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
pub const TYPE_DELISTED_KLINES: u16 = 0x052b;
|
|
13
|
+
|
|
14
|
+
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
15
|
+
pub struct DelistedKlinesRequest {
|
|
16
|
+
pub code: NormalizedCode,
|
|
17
|
+
pub start: u16,
|
|
18
|
+
pub count: u16,
|
|
19
|
+
pub include_raw: bool,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
impl DelistedKlinesRequest {
|
|
23
|
+
pub fn new(
|
|
24
|
+
code: NormalizedCode,
|
|
25
|
+
start: u16,
|
|
26
|
+
count: u16,
|
|
27
|
+
include_raw: bool,
|
|
28
|
+
) -> Result<Self, ProtocolError> {
|
|
29
|
+
if count == 0 || count > MAX_KLINE_PAGE_SIZE {
|
|
30
|
+
return Err(ProtocolError::invalid_argument(
|
|
31
|
+
"count",
|
|
32
|
+
format!("count must be between 1 and {MAX_KLINE_PAGE_SIZE}"),
|
|
33
|
+
));
|
|
34
|
+
}
|
|
35
|
+
Ok(Self {
|
|
36
|
+
code,
|
|
37
|
+
start,
|
|
38
|
+
count,
|
|
39
|
+
include_raw,
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
pub fn frame(&self, msg_id: u32) -> RequestFrame {
|
|
44
|
+
let mut data = Vec::with_capacity(12);
|
|
45
|
+
data.extend_from_slice(&u16::from(self.code.market().id()).to_le_bytes());
|
|
46
|
+
data.extend_from_slice(self.code.number().as_bytes());
|
|
47
|
+
data.extend_from_slice(&self.start.to_le_bytes());
|
|
48
|
+
data.extend_from_slice(&self.count.to_le_bytes());
|
|
49
|
+
RequestFrame::new(msg_id, TYPE_DELISTED_KLINES, data)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#[derive(Clone, Debug, PartialEq)]
|
|
54
|
+
pub struct DelistedKlineSeries {
|
|
55
|
+
pub request: DelistedKlinesRequest,
|
|
56
|
+
pub bars: Vec<KlineBar>,
|
|
57
|
+
pub raw_payload: Bytes,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
pub fn parse_delisted_klines_payload(
|
|
61
|
+
payload: &[u8],
|
|
62
|
+
request: DelistedKlinesRequest,
|
|
63
|
+
) -> Result<DelistedKlineSeries, ProtocolError> {
|
|
64
|
+
if payload.len() > MAX_RESPONSE_PAYLOAD_SIZE {
|
|
65
|
+
return Err(ProtocolError::LimitExceeded {
|
|
66
|
+
resource: "delisted klines",
|
|
67
|
+
actual: payload.len(),
|
|
68
|
+
limit: MAX_RESPONSE_PAYLOAD_SIZE,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if payload.len() < 2 {
|
|
72
|
+
return Err(ProtocolError::invalid_data(
|
|
73
|
+
"delisted klines",
|
|
74
|
+
"invalid payload",
|
|
75
|
+
));
|
|
76
|
+
}
|
|
77
|
+
let count = usize::from(little_u16(&payload[..2])?);
|
|
78
|
+
if count > request.count.into() || count > payload.len().saturating_sub(2) / 17 {
|
|
79
|
+
return Err(ProtocolError::invalid_data(
|
|
80
|
+
"delisted klines",
|
|
81
|
+
"truncated kline record",
|
|
82
|
+
));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let mut offset = 2_usize;
|
|
86
|
+
let mut last_close_milli = 0_i64;
|
|
87
|
+
let mut bars = Vec::with_capacity(count);
|
|
88
|
+
for _ in 0..count {
|
|
89
|
+
let record_start = offset;
|
|
90
|
+
let date_raw = read_u32(payload, offset, "truncated date")?;
|
|
91
|
+
offset += 4;
|
|
92
|
+
let date = crate::unit::DateParts::from_yyyymmdd(date_raw)
|
|
93
|
+
.ok_or_else(|| ProtocolError::invalid_data("delisted klines", "invalid date"))?;
|
|
94
|
+
let time = DateTimeParts::shanghai(date, 0, 0, 0)?;
|
|
95
|
+
let (open_delta_raw, next) = consume_price(payload, offset)?;
|
|
96
|
+
offset = next;
|
|
97
|
+
let (close_delta_raw, next) = consume_price(payload, offset)?;
|
|
98
|
+
offset = next;
|
|
99
|
+
let (high_delta_raw, next) = consume_price(payload, offset)?;
|
|
100
|
+
offset = next;
|
|
101
|
+
let (low_delta_raw, next) = consume_price(payload, offset)?;
|
|
102
|
+
offset = next;
|
|
103
|
+
let previous_close = if bars.is_empty() {
|
|
104
|
+
None
|
|
105
|
+
} else {
|
|
106
|
+
Some(last_close_milli)
|
|
107
|
+
};
|
|
108
|
+
let open_price_milli = checked_add(last_close_milli, open_delta_raw)?;
|
|
109
|
+
let close_price_milli = checked_add(open_price_milli, close_delta_raw)?;
|
|
110
|
+
let high_price_milli = checked_add(open_price_milli, high_delta_raw)?;
|
|
111
|
+
let low_price_milli = checked_add(open_price_milli, low_delta_raw)?;
|
|
112
|
+
if low_price_milli > open_price_milli.min(close_price_milli)
|
|
113
|
+
|| high_price_milli < open_price_milli.max(close_price_milli)
|
|
114
|
+
|| low_price_milli > high_price_milli
|
|
115
|
+
{
|
|
116
|
+
return Err(ProtocolError::invalid_data(
|
|
117
|
+
"delisted klines",
|
|
118
|
+
"invalid OHLC",
|
|
119
|
+
));
|
|
120
|
+
}
|
|
121
|
+
let (volume_shares, next) = consume_price(payload, offset)?;
|
|
122
|
+
offset = next;
|
|
123
|
+
if volume_shares < 0 || volume_shares > i64::from(u32::MAX) {
|
|
124
|
+
return Err(ProtocolError::invalid_data(
|
|
125
|
+
"delisted klines",
|
|
126
|
+
"invalid volume",
|
|
127
|
+
));
|
|
128
|
+
}
|
|
129
|
+
let volume_raw = volume_shares as u32;
|
|
130
|
+
let amount_raw = read_u32(payload, offset, "truncated amount")?;
|
|
131
|
+
offset += 4;
|
|
132
|
+
let _unknown_suffix = payload
|
|
133
|
+
.get(offset..offset.saturating_add(4))
|
|
134
|
+
.ok_or_else(|| ProtocolError::invalid_data("delisted klines", "truncated suffix"))?;
|
|
135
|
+
offset += 4;
|
|
136
|
+
last_close_milli = close_price_milli;
|
|
137
|
+
bars.push(KlineBar {
|
|
138
|
+
time,
|
|
139
|
+
open: milli_to_float(open_price_milli),
|
|
140
|
+
close: milli_to_float(close_price_milli),
|
|
141
|
+
high: milli_to_float(high_price_milli),
|
|
142
|
+
low: milli_to_float(low_price_milli),
|
|
143
|
+
open_price_milli,
|
|
144
|
+
close_price_milli,
|
|
145
|
+
high_price_milli,
|
|
146
|
+
low_price_milli,
|
|
147
|
+
last_close_price_milli: previous_close,
|
|
148
|
+
volume_raw,
|
|
149
|
+
amount_raw,
|
|
150
|
+
volume_wire_value: f64::from(volume_raw),
|
|
151
|
+
volume_lots: f64::from(volume_raw) / 100.0,
|
|
152
|
+
amount: get_volume(amount_raw),
|
|
153
|
+
open_delta_raw,
|
|
154
|
+
close_delta_raw,
|
|
155
|
+
high_delta_raw,
|
|
156
|
+
low_delta_raw,
|
|
157
|
+
up_count: None,
|
|
158
|
+
down_count: None,
|
|
159
|
+
record_hex: encode_hex(&payload[record_start..offset]),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if offset != payload.len() {
|
|
163
|
+
return Err(ProtocolError::invalid_data(
|
|
164
|
+
"delisted klines",
|
|
165
|
+
format!(
|
|
166
|
+
"unexpected trailing payload bytes: {}",
|
|
167
|
+
payload.len() - offset
|
|
168
|
+
),
|
|
169
|
+
));
|
|
170
|
+
}
|
|
171
|
+
Ok(DelistedKlineSeries {
|
|
172
|
+
request,
|
|
173
|
+
bars,
|
|
174
|
+
raw_payload: Bytes::copy_from_slice(payload),
|
|
175
|
+
})
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
fn read_u32(data: &[u8], offset: usize, message: &'static str) -> Result<u32, ProtocolError> {
|
|
179
|
+
little_u32(
|
|
180
|
+
data.get(offset..offset.saturating_add(4))
|
|
181
|
+
.ok_or_else(|| ProtocolError::invalid_data("delisted klines", message))?,
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
fn checked_add(left: i64, right: i64) -> Result<i64, ProtocolError> {
|
|
186
|
+
left.checked_add(right)
|
|
187
|
+
.ok_or_else(|| ProtocolError::invalid_data("delisted klines", "price overflow"))
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
fn encode_hex(data: &[u8]) -> String {
|
|
191
|
+
const DIGITS: &[u8; 16] = b"0123456789abcdef";
|
|
192
|
+
let mut output = String::with_capacity(data.len() * 2);
|
|
193
|
+
for byte in data {
|
|
194
|
+
output.push(char::from(DIGITS[usize::from(*byte >> 4)]));
|
|
195
|
+
output.push(char::from(DIGITS[usize::from(*byte & 0x0f)]));
|
|
196
|
+
}
|
|
197
|
+
output
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
#[cfg(test)]
|
|
201
|
+
mod tests {
|
|
202
|
+
use super::{parse_delisted_klines_payload, DelistedKlinesRequest};
|
|
203
|
+
use crate::unit::NormalizedCode;
|
|
204
|
+
|
|
205
|
+
#[test]
|
|
206
|
+
fn request_matches_verified_052b_body() -> Result<(), crate::ProtocolError> {
|
|
207
|
+
let request =
|
|
208
|
+
DelistedKlinesRequest::new(NormalizedCode::parse("sz000038")?, 800, 20, false)?;
|
|
209
|
+
let frame = request.frame(7);
|
|
210
|
+
assert_eq!(
|
|
211
|
+
frame.data.as_ref(),
|
|
212
|
+
&[0, 0, b'0', b'0', b'0', b'0', b'3', b'8', 0x20, 0x03, 0x14, 0]
|
|
213
|
+
);
|
|
214
|
+
Ok(())
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
#[test]
|
|
218
|
+
fn parses_one_verified_daily_record() -> Result<(), crate::ProtocolError> {
|
|
219
|
+
let request = DelistedKlinesRequest::new(NormalizedCode::parse("sz000038")?, 0, 1, false)?;
|
|
220
|
+
let payload = bytes::Bytes::from_static(&[
|
|
221
|
+
1, 0, 0x18, 0xb1, 0x34, 0x01, 0xb8, 0x33, 0xb4, 0x02, 0x88, 0x03, 0x00, 0x84, 0xe4,
|
|
222
|
+
0x9a, 0x04, 0xdb, 0xb8, 0x67, 0x4b, 0, 0, 1, 0,
|
|
223
|
+
]);
|
|
224
|
+
let parsed = parse_delisted_klines_payload(&payload, request)?;
|
|
225
|
+
assert_eq!(parsed.bars.len(), 1);
|
|
226
|
+
assert_eq!(parsed.bars[0].close_price_milli, 3500);
|
|
227
|
+
assert_eq!(parsed.bars[0].volume_raw, 4_413_700);
|
|
228
|
+
Ok(())
|
|
229
|
+
}
|
|
230
|
+
}
|
|
@@ -3,6 +3,7 @@ use crate::commands::{
|
|
|
3
3
|
corporate::{
|
|
4
4
|
CapitalChangesRequest, FinanceBatchRequest, TYPE_CAPITAL_CHANGES, TYPE_FINANCE_BATCH,
|
|
5
5
|
},
|
|
6
|
+
delisted_bars::{DelistedKlinesRequest, TYPE_DELISTED_KLINES},
|
|
6
7
|
klines::{KlinesRequest, TYPE_KLINES},
|
|
7
8
|
limits::{SpecialLimitsRequest, TYPE_SPECIAL_LIMITS},
|
|
8
9
|
minutes::{
|
|
@@ -25,7 +26,7 @@ use crate::commands::{
|
|
|
25
26
|
use crate::error::ProtocolError;
|
|
26
27
|
use crate::frame::RequestFrame;
|
|
27
28
|
|
|
28
|
-
pub const SUPPORTED_COMMAND_CODES: [u16;
|
|
29
|
+
pub const SUPPORTED_COMMAND_CODES: [u16; 23] = [
|
|
29
30
|
TYPE_HEARTBEAT,
|
|
30
31
|
TYPE_HANDSHAKE,
|
|
31
32
|
TYPE_CAPITAL_CHANGES,
|
|
@@ -34,6 +35,7 @@ pub const SUPPORTED_COMMAND_CODES: [u16; 22] = [
|
|
|
34
35
|
TYPE_SECURITY_COUNT,
|
|
35
36
|
TYPE_SPECIAL_LIMITS,
|
|
36
37
|
TYPE_INTRADAY_AUX,
|
|
38
|
+
TYPE_DELISTED_KLINES,
|
|
37
39
|
TYPE_KLINES,
|
|
38
40
|
TYPE_TODAY_INTRADAY,
|
|
39
41
|
TYPE_LEGACY_QUOTES,
|
|
@@ -60,6 +62,7 @@ pub enum CommandRequest {
|
|
|
60
62
|
SecurityCount(SecurityCountRequest),
|
|
61
63
|
SpecialLimits(SpecialLimitsRequest),
|
|
62
64
|
IntradayAux(IntradayAuxRequest),
|
|
65
|
+
DelistedKlines(DelistedKlinesRequest),
|
|
63
66
|
Klines(KlinesRequest),
|
|
64
67
|
TodayIntraday(TodayIntradayRequest),
|
|
65
68
|
LegacyQuotes(LegacyQuotesRequest),
|
|
@@ -87,6 +90,7 @@ impl CommandRequest {
|
|
|
87
90
|
Self::SecurityCount(_) => TYPE_SECURITY_COUNT,
|
|
88
91
|
Self::SpecialLimits(_) => TYPE_SPECIAL_LIMITS,
|
|
89
92
|
Self::IntradayAux(_) => TYPE_INTRADAY_AUX,
|
|
93
|
+
Self::DelistedKlines(_) => TYPE_DELISTED_KLINES,
|
|
90
94
|
Self::Klines(_) => TYPE_KLINES,
|
|
91
95
|
Self::TodayIntraday(_) => TYPE_TODAY_INTRADAY,
|
|
92
96
|
Self::LegacyQuotes(_) => TYPE_LEGACY_QUOTES,
|
|
@@ -118,6 +122,7 @@ impl CommandRequest {
|
|
|
118
122
|
Self::SecurityCount(request) => request.frame(msg_id),
|
|
119
123
|
Self::SpecialLimits(request) => request.frame(msg_id),
|
|
120
124
|
Self::IntradayAux(request) => request.frame(msg_id),
|
|
125
|
+
Self::DelistedKlines(request) => request.frame(msg_id),
|
|
121
126
|
Self::Klines(request) => request.frame(msg_id),
|
|
122
127
|
Self::TodayIntraday(request) => request.frame(msg_id),
|
|
123
128
|
Self::LegacyQuotes(request) => return request.frame(msg_id),
|
|
@@ -148,6 +153,7 @@ pub const fn is_supported_command(command: u16) -> bool {
|
|
|
148
153
|
| TYPE_SECURITY_COUNT
|
|
149
154
|
| TYPE_SPECIAL_LIMITS
|
|
150
155
|
| TYPE_INTRADAY_AUX
|
|
156
|
+
| TYPE_DELISTED_KLINES
|
|
151
157
|
| TYPE_KLINES
|
|
152
158
|
| TYPE_TODAY_INTRADAY
|
|
153
159
|
| TYPE_LEGACY_QUOTES
|
|
@@ -171,6 +177,7 @@ mod tests {
|
|
|
171
177
|
use crate::commands::{
|
|
172
178
|
auctions::AuctionSeriesRequest,
|
|
173
179
|
corporate::{CapitalChangesRequest, FinanceBatchRequest},
|
|
180
|
+
delisted_bars::DelistedKlinesRequest,
|
|
174
181
|
klines::{KlineKind, KlinesRequest},
|
|
175
182
|
limits::SpecialLimitsRequest,
|
|
176
183
|
minutes::{
|
|
@@ -191,8 +198,8 @@ mod tests {
|
|
|
191
198
|
use crate::ProtocolError;
|
|
192
199
|
|
|
193
200
|
#[test]
|
|
194
|
-
fn
|
|
195
|
-
assert_eq!(SUPPORTED_COMMAND_CODES.len(),
|
|
201
|
+
fn exact_twenty_three_command_codes_are_registered() {
|
|
202
|
+
assert_eq!(SUPPORTED_COMMAND_CODES.len(), 23);
|
|
196
203
|
assert!(SUPPORTED_COMMAND_CODES
|
|
197
204
|
.windows(2)
|
|
198
205
|
.all(|pair| pair[0] < pair[1]));
|
|
@@ -220,6 +227,7 @@ mod tests {
|
|
|
220
227
|
CommandRequest::CapitalChanges(value) => assert!(!value.include_raw),
|
|
221
228
|
CommandRequest::FinanceBatch(value) => assert!(!value.include_raw()),
|
|
222
229
|
CommandRequest::IntradayAux(value) => assert!(!value.include_raw),
|
|
230
|
+
CommandRequest::DelistedKlines(value) => assert!(!value.include_raw),
|
|
223
231
|
CommandRequest::Klines(value) => assert!(!value.include_raw),
|
|
224
232
|
CommandRequest::TodayIntraday(value) => assert!(!value.include_raw),
|
|
225
233
|
CommandRequest::AuctionSeries(value) => assert!(!value.include_raw),
|
|
@@ -237,6 +245,7 @@ mod tests {
|
|
|
237
245
|
CommandRequest::CapitalChanges(value) => value.include_raw,
|
|
238
246
|
CommandRequest::FinanceBatch(value) => value.include_raw(),
|
|
239
247
|
CommandRequest::IntradayAux(value) => value.include_raw,
|
|
248
|
+
CommandRequest::DelistedKlines(value) => value.include_raw,
|
|
240
249
|
CommandRequest::Klines(value) => value.include_raw,
|
|
241
250
|
CommandRequest::TodayIntraday(value) => value.include_raw,
|
|
242
251
|
CommandRequest::AuctionSeries(value) => value.include_raw,
|
|
@@ -270,6 +279,7 @@ mod tests {
|
|
|
270
279
|
code.clone(),
|
|
271
280
|
IntradayAuxKind::BuySellStrength,
|
|
272
281
|
)),
|
|
282
|
+
CommandRequest::DelistedKlines(DelistedKlinesRequest::new(code.clone(), 0, 1, false)?),
|
|
273
283
|
CommandRequest::Klines(KlinesRequest::new(
|
|
274
284
|
code.clone(),
|
|
275
285
|
KlinePeriod::normalize("day")?,
|
|
@@ -320,6 +330,7 @@ mod tests {
|
|
|
320
330
|
IntradayAuxKind::BuySellStrength,
|
|
321
331
|
true,
|
|
322
332
|
)),
|
|
333
|
+
CommandRequest::DelistedKlines(DelistedKlinesRequest::new(code.clone(), 0, 1, true)?),
|
|
323
334
|
CommandRequest::Klines(KlinesRequest::with_include_raw(
|
|
324
335
|
code.clone(),
|
|
325
336
|
KlinePeriod::normalize("day")?,
|
|
@@ -4,6 +4,7 @@ use crate::commands::{
|
|
|
4
4
|
parse_capital_changes_payload, parse_finance_batch_payload, CapitalChangeBatch,
|
|
5
5
|
FinanceBatch,
|
|
6
6
|
},
|
|
7
|
+
delisted_bars::{parse_delisted_klines_payload, DelistedKlineSeries},
|
|
7
8
|
klines::{parse_klines_payload, KlineSeries},
|
|
8
9
|
limits::{parse_special_limits_payload, SpecialLimitPage},
|
|
9
10
|
minutes::{
|
|
@@ -38,6 +39,7 @@ pub enum CommandResponse {
|
|
|
38
39
|
SecurityCount(u16),
|
|
39
40
|
SpecialLimits(SpecialLimitPage),
|
|
40
41
|
IntradayAux(MinuteAuxSeries),
|
|
42
|
+
DelistedKlines(DelistedKlineSeries),
|
|
41
43
|
Klines(KlineSeries),
|
|
42
44
|
TodayIntraday(MinuteSeries<TodayIntradayRequest>),
|
|
43
45
|
LegacyQuotes(Vec<LegacyQuote>),
|
|
@@ -77,6 +79,9 @@ impl CommandResponse {
|
|
|
77
79
|
CommandRequest::IntradayAux(request) => {
|
|
78
80
|
parse_intraday_aux_payload(payload, request).map(Self::IntradayAux)
|
|
79
81
|
}
|
|
82
|
+
CommandRequest::DelistedKlines(request) => {
|
|
83
|
+
parse_delisted_klines_payload(payload, request).map(Self::DelistedKlines)
|
|
84
|
+
}
|
|
80
85
|
CommandRequest::Klines(request) => {
|
|
81
86
|
parse_klines_payload(payload, request).map(Self::Klines)
|
|
82
87
|
}
|
|
@@ -6,6 +6,7 @@ use eltdx_protocol::commands::{
|
|
|
6
6
|
corporate::{
|
|
7
7
|
CapitalChangesRequest, FinanceBatchRequest, TYPE_CAPITAL_CHANGES, TYPE_FINANCE_BATCH,
|
|
8
8
|
},
|
|
9
|
+
delisted_bars::{DelistedKlinesRequest, TYPE_DELISTED_KLINES},
|
|
9
10
|
klines::{KlineKind, KlinesRequest, TYPE_KLINES},
|
|
10
11
|
limits::{SpecialLimitsRequest, TYPE_SPECIAL_LIMITS},
|
|
11
12
|
minutes::{
|
|
@@ -69,6 +70,7 @@ pub fn from_python(
|
|
|
69
70
|
TYPE_SECURITY_COUNT => security_count(py, payload),
|
|
70
71
|
TYPE_SPECIAL_LIMITS => special_limits(payload),
|
|
71
72
|
TYPE_INTRADAY_AUX => intraday_aux(payload),
|
|
73
|
+
TYPE_DELISTED_KLINES => delisted_klines(payload),
|
|
72
74
|
TYPE_KLINES => klines(payload),
|
|
73
75
|
TYPE_TODAY_INTRADAY => today_intraday(payload),
|
|
74
76
|
TYPE_LEGACY_QUOTES => legacy_quotes(payload),
|
|
@@ -191,6 +193,30 @@ fn klines(payload: Payload<'_, '_>) -> PyResult<CommandRequest> {
|
|
|
191
193
|
.map(CommandRequest::Klines)
|
|
192
194
|
}
|
|
193
195
|
|
|
196
|
+
fn delisted_klines(payload: Payload<'_, '_>) -> PyResult<CommandRequest> {
|
|
197
|
+
let value = required(payload, &["code"], "code")?;
|
|
198
|
+
let text = string_value(&value, "code")?;
|
|
199
|
+
let text = text.trim();
|
|
200
|
+
// The terminal's T prefix marks delisting; it is not part of the wire code.
|
|
201
|
+
let number = if text.len() == 7 && (text.starts_with('T') || text.starts_with('t')) {
|
|
202
|
+
&text[1..]
|
|
203
|
+
} else {
|
|
204
|
+
text
|
|
205
|
+
};
|
|
206
|
+
let code = protocol(NormalizedCode::parse(number))?;
|
|
207
|
+
let start = u16_field(payload, &["start"], 0, 0, u16::MAX)?;
|
|
208
|
+
let count = u16_field(
|
|
209
|
+
payload,
|
|
210
|
+
&["count"],
|
|
211
|
+
MAX_KLINE_PAGE_SIZE,
|
|
212
|
+
1,
|
|
213
|
+
MAX_KLINE_PAGE_SIZE,
|
|
214
|
+
)?;
|
|
215
|
+
let include_raw = bool_field(payload, "include_raw", false)?;
|
|
216
|
+
protocol(DelistedKlinesRequest::new(code, start, count, include_raw))
|
|
217
|
+
.map(CommandRequest::DelistedKlines)
|
|
218
|
+
}
|
|
219
|
+
|
|
194
220
|
fn today_intraday(payload: Payload<'_, '_>) -> PyResult<CommandRequest> {
|
|
195
221
|
let code = required_code(payload, "code")?;
|
|
196
222
|
let reserved_tail_raw = match get(payload, &["reserved_tail_raw"])? {
|